12 KiB
OmniLMM 是面向图文理解的开源多模态大模型系列。该系列模型接受图像和文本输入,并提供高质量的文本输出。我们发布了两个版本的 OmniLMM,旨在实现领先的性能和高效的部署:
-
OmniLMM-12B:相比同规模其他模型在多个基准测试中具有领先性能。
-
OmniLMM-3B:可在终端设备上部署并具备先进的多模态对话能力。
目录
OmniLMM-12B
OmniLMM-12B 是当前系列中性能最佳的版本。该模型基于EVA02-5B和Zephyr-7B-β初始化构建,并使用perceiver resampler连接,采用了课程学习的方法在多模态数据上进行训练。该模型具有三个特点:
-
🔥 性能领先。
OmniLMM-12B 相比其他同规模模型在多个基准测试中取得领先的性能(包括 MME、MMBench、SEED-Bench 等),模型掌握了较为丰富的多模态世界知识。
-
🏆 行为可信。
多模态大模型的幻觉问题备受关注,模型经常生成和图像中的事实不符的文本(例如,确信地描述图片中并不存在的物体)。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 和 ChatGPT-3.5 (纯文本模型) 尝试构建 实时多模态交互助手. OmniLMM-12B 将视频帧转为对应的图像描述并输入给ChatGPT-3.5来生成对用户指令的响应。演示视频未经编辑。
OmniLMM-3B
OmniLMM-3B(即 MiniCPM-V)可以高效部署到终端设备。该模型基于 SigLip-400M 和 MiniCPM-2.4B构建,通过perceiver resampler连接。OmniLMM-3B的特点包括:
-
⚡️ 高效部署。
OmniLMM-3B 可以高效部署在大多数 GPU 和个人电脑上,包括移动手机等终端设备。在视觉编码方面,我们通过perceiver resampler将图像表示压缩为64个token,远远少于基于MLP架构的其他多模态大模型(通常大于512个token)。这使得 OmniLMM-3B 在推理期间存储占用更低并且速度更快。
-
🔥 优秀的性能。
OmniLMM-3B 在多个测试基准中实现了同规模最佳性能,超过了基于Phi-2构建的多模态大模型。该模型甚至在部分基准中实现了与9.6B Qwen-VL-Chat匹配或更好的性能。
-
🙌 双语支持。 OmniLMM-3B 是第一个支持中英双语的端侧多模态大模型。 该能力通过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-3B。演示视频是OnePlus 9R上的原始录屏结果。
Demo
欢迎通过以下链接使用我们的网页端推理服务: OmniLMM-12B | OmniLMM-3B.
安装
- 克隆我们的仓库并跳转到相应目录
git clone https://github.com/OpenBMB/OmniLMM.git
cd OmniLMM
- 创建 conda 环境
conda create -n OmniLMM python=3.10 -y
conda activate OmniLMM
- 安装依赖
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."
未来计划
- 支持模型微调
- 本地用户图形界面部署
- 实时多模态交互代码开源
模型协议
本仓库中代码依照 Apache-2.0 协议开源
OmniLMM 模型权重的使用遵循 “通用模型许可协议-来源说明-宣传限制-商业授权”。
OmniLMM 模型权重对学术研究完全开放。
如需将模型用于商业用途,请联系 cpm@modelbest.cn 来获取书面授权,登记后可以免费商业使用。
声明
作为多模态大模型,OmniLMM 通过学习大量的多模态数据来生成内容,但它无法理解、表达个人观点或价值判断,它所输出的任何内容都不代表模型开发者的观点和立场。
因此用户在使用 OmniLMM 生成的内容时,应自行负责对其进行评估和验证。如果由于使用 OmniLMM 开源模型而导致的任何问题,包括但不限于数据安全问题、公共舆论风险,或模型被误导、滥用、传播或不当利用所带来的任何风险和问题,我们将不承担任何责任。
机构
本项目由以下机构共同开发:








