Skip to content

Latest commit

 

History

History
399 lines (315 loc) · 12.5 KB

README_zh.md

File metadata and controls

399 lines (315 loc) · 12.5 KB

性能强大且部署高效的多模态大模型

OmniLMM-3B 🤗 🤖 | OmniLMM-12B 🤗 🤖

OmniLMM 是一系列善于处理图文输入的开源多模态大模型(LMMs)。该系列模型接受图像和文本输入,并提供高质量的文本输出。我们发布了两个版本的 OmniLMM,旨在实现强大的性能和高效的部署

  • OmniLMM-12B:相比同规模其他模型在多个基准测试中具有领先性能。

  • OmniLMM-3B:可在终端设备上部署并具备先进的多模态对话能力。

English Document

目录

OmniLMM-12B

OmniLMM-12B 是当前系列中性能最强大的版本。该模型使用一个感知重采样层连接 EVA02-5B 和 Zephyr-7B-β 来构建,采用了课程学习的方法在多模态数据上进行训练。该模型具有三个显著特征:

  • 🔥 卓越性能。

    OmniLMM-12B 相比其他同规模模型在多个基准测试中取得领先的性能(包括 MME、MMBench、SEED-Bench 等)。模型掌握了丰富的多模态世界知识。

  • 🏆 可信行为。

    LMMs 的幻觉问题备受关注,模型经常生成和图像中的事实不符的文本(例如,确信地描述图片中并不存在的物体)。OmniLMM-12B是 第一个通过多模态 RLHF 对齐的综合能力优秀的开源多模态大模型(通过我们最近提出的 RLHF-V 技术)。该模型在 MMHal-Bench 幻觉评测基准上位列开源模型中第一,并在 Object HalBench超过了 GPT-4V

  • 🕹 实时多模态交互。

    我们将 OmniLMM-12B 和 GPT-3.5 结合成一个实时多模态交互助手。该助手接受来自相机的视频流和来自麦克风的语音流,并发出语音输出。虽然还处于初级阶段,但我们也发现该模型无需视频编辑就可以复现出现在 Gemini 演示视频中的一些有趣例子

性能评估

MME, MMBench, MMMU, MMBench, MMHal-Bench, Object HalBench, SeedBench, LLaVA Bench W, MathVista 上的详细评测结果.
Model Size MME MMB dev (en) MMMU val MMHal-Bench Object HalBench SeedBench-I MathVista LLaVA Bench W
GPT-4V† - 1409 75.1 56.8 3.53 / 70.8 86.4 / 92.7 71.6 47.8 93.1
Qwen-VL-Plus† - 1681 66.2 45.2 - - 65.7 36.0 73.7
Yi-VL 6B 6.7B - 68.2 39.1 - - 66.1 28.0 39.9
Qwen-VL-Chat 9.6B 1488 60.6 35.9 2.93 / 59.4 56.2 / 80.0 64.8 33.8 67.7
CogVLM 17.4B 1438 63.7 32.1 2.68 / 52.1 73.6 / 87.4 68.8 34.7 73.9
LLaVA 1.5 13.6B 1531 68.2 36.4 2.71 / 51.0 53.7 / 77.4 68.1 26.4 64.6
OmniLMM-12B 11.6B 1637 71.6 40.7 3.45 / 68.8 90.3 / 95.5 71.1 34.9 72.0
†: 闭源模型

样例展示

我们结合 OmniLMM-12B 和 GPT-3.5 (纯文本模型) 构建了一个 实时多模态交互助手. OmniLMM-12B 将视频帧转为对应的图像描述并输入给 GPT-3.5 来生成对用户指令的响应。以下展示视频未经任何视频编辑

demo_video.mp4

OmniLMM-3B

OmniLMM-3B(即 MiniCPM-V)是我们的高效率版本模型,可用于终端机器上的部署。该模型基于 SigLip-400M 和 MiniCPM-2.4B 构建,通过感知器重采样器连接。OmniLMM-3B的显著特点包括:

  • ⚡️ 高效率。

    OmniLMM-3B 可以高效地部署在大多数GPU卡和个人电脑上,甚至在移动手机等终端设备上。在视觉编码方面,我们通过感知器重采样器将图像表示压缩为 64 个 token,远远少于基于 MLP 架构的其他 LMMs(通常大于 512 个 token)。这使得 OmniLMM-3B 在推理期间内存成本更低且速度更快

  • 🔥 优秀的性能。

    OmniLMM-3B 在与相似大小模型相比的多个基准测试中实现了最先进的性能,超过了基于 Phi-2构建的现有 LMMs。它甚至实现了与9.6B Qwen-VL-Chat 相媲美或更好的性能

  • 🙌 双语支持。

    OmniLMM-3B 是第一个支持英语和中文双语多模态交互的终端可部署 LMM。这是通过跨语言泛化多模态能力实现的,这是我们 ICLR 2024 spotlight 论文中的一项技术。

性能评估

Model Size MME MMB dev (en) MMB dev (zh) MMMU val CMMMU val
LLaVA-Phi 3B 1335 59.8 - - -
MobileVLM 3B 1289 59.6 - - -
Imp-v1 3B 1434 66.5 - - -
Qwen-VL-Chat 9.6B 1487 60.6 56.7 35.9 30.7
CogVLM 17.4B 1438 63.7 53.8 32.1 -
OmniLMM-3B 3B 1452 67.3 61.9 34.7 32.1

样例展示

体验

你可以通过以下链接使用我们的网页端推理服务: OmniLMM-12BOmniLMM-3B.

安装

  1. Clone this repository and navigate to the source folder
git clone https://github.com/OpenBMB/OmniLMM.git
cd OmniLMM
  1. Create conda environment
conda create -n OmniLMM python=3.10 -y
conda activate OmniLMM
  1. Install dependencies
pip install -r requirements.txt

推理

模型库

模型 简介 下载链接
OmniLMM-12B 更强大的性能表现 🤗   
OmniLMM-3B 支持终端设备上的高效部署,性能优秀 🤗   

多轮对话

请参考以下代码运行 OmniLMM 的推理服务。

from chat import OmniLMMChat, img2base64

chat_model = OmniLMMChat('openbmb/OmniLMM-12B') # or 'openbmb/MiniCPM-V'

im_64 = img2base64('./assets/COCO_test2015_000000262144.jpg')

# First round chat 
msgs = [{"role": "user", "content": "What are the people doing?"}] # or Chinese input [{"role": "user", "content": "请描述一下图像"}]

inputs = {"image": im_64, "question": json.dumps(msgs)}
answer = chat_model.process(inputs)
print(answer)

# Second round chat 
# pass history context of multi-turn conversation
msgs.append({"role": "assistant", "content": answer})
msgs.append({"role": "user", "content": "Describe the image"})

inputs = {"image": im_64, "question": json.dumps(msgs)}
answer = chat_model.process(inputs)
print(answer)

可以得到以下输出:

"The people in the image are playing baseball. One person is pitching a ball, another one is swinging a bat to hit it, and there's also an umpire present who appears to be watching the game closely."

"The image depicts a baseball game in progress. A pitcher is throwing the ball, while another player is swinging his bat to hit it. An umpire can be seen observing the play closely."

✅ 未来计划

  • 支持模型微调
  • 本地可视化部署
  • 实时多模态交互代码开源
  • 更新 OCR 能力增强版本

模型协议

本仓库中代码依照 Apache-2.0 协议开源

OmniLMMs 模型权重的使用则需要遵循 “通用模型许可协议-来源说明-宣传限制-商业授权”。

OmniLMMs 模型权重对学术研究完全开放。

如需将模型用于商业用途,请联系 [email protected] 来获取书面授权,在登记后亦允许免费商业使用。

声明

作为多模态大模型,OmniLMMs 通过学习大量的多模态语料来生成内容,但它无法理解、表达个人观点或价值判断,它所输出的任何内容都不代表模型开发者的观点和立场。

因此用户在使用 OmniLMMs 生成的内容时,应自行负责对其进行评估和验证。如果由于使用 OmniLMMs 开源模型而导致的任何问题,包括但不限于数据安全问题、公共舆论风险,或模型被误导、滥用、传播或不当利用所带来的任何风险和问题,我们将不承担任何责任。

🏫 机构

本项目由以下机构共同开发: