MiniCPM-V和OmniLMM 是面向图文理解的开源多模态大模型系列。该系列模型接受图像和文本输入,并提供高质量的文本输出。我们发布了两个版本的模型,旨在实现领先的性能和高效的部署:
-
MiniCPM-V 2.8B:可在终端设备上部署的先进多模态大模型。最新发布的 MiniCPM-V 2.0 可以接受 180 万像素的任意长宽比图像输入,实现了和 Gemini Pro 相近的场景文字识别能力以及和 GPT-4V 相匹的低幻觉率。
-
OmniLMM-12B:相比同规模其他模型在多个基准测试中具有领先性能,实现了相比 GPT-4V 更低的幻觉率。
- [2024.04.12] 我们开源了 MiniCPM-V 2.0,该模型刷新了 OCRBench 开源模型最佳成绩,在场景文字识别能力上比肩 Gemini Pro,同时还在综合了 11 个主流多模态大模型评测基准的 OpenCompass 榜单上超过了 Qwen-VL-Chat 10B、CogVLM-Chat 17B 和 Yi-VL 34B 等更大参数规模的模型!点击这里查看 MiniCPM-V 2.0 技术博客。
- [2024.03.14] MiniCPM-V 现在支持 SWIFT 框架下的微调了,感谢 Jintao 的贡献!
- [2024.03.01] MiniCPM-V 现在支持在 Mac 电脑上进行部署!
- [2024.02.01] 我们开源了 MiniCPM-V 和 OmniLMM-12B,分别可以支持高效的端侧部署和同规模领先的多模态能力!
MiniCPM-V 2.8B可以高效部署到终端设备。该模型基于 SigLip-400M 和 MiniCPM-2.4B构建,通过perceiver resampler连接。最新发布的 MiniCPM-V 2.0 的特点包括:
-
🔥 优秀的性能。
MiniCPM-V 2.0 在多个测试基准(如 OCRBench, TextVQA, MME, MMB, MathVista 等)中实现了 7B 以下模型的最佳性能。在综合了 11 个主流多模态大模型评测基准的 OpenCompass 榜单上超过了 Qwen-VL-Chat 9.6B、CogVLM-Chat 17.4B 和 Yi-VL 34B 等更大参数规模的模型。MiniCPM-V 2.0 还展现出领先的 OCR 能力,在场景文字识别能力上接近 Gemini Pro,OCRBench 得分达到开源模型第一。
-
🏆 可信行为。
多模态大模型深受幻觉问题困扰,模型经常生成和图像中的事实不符的文本。MiniCPM-V 2.0 是 第一个通过多模态 RLHF 对齐的端侧多模态大模型(借助 RLHF-V [CVPR'24] 系列技术)。该模型在 Object HalBench 达到和 GPT-4V 相仿的性能。
-
🌟 高清图像高效编码。
MiniCPM-V 2.0 可以接受 180 万像素的任意长宽比图像输入(基于最新的LLaVA-UHD 技术),这使得模型可以感知到小物体、密集文字等更加细粒度的视觉信息。
-
⚡️ 高效部署。
MiniCPM-V 2.0 可以高效部署在大多数消费级显卡和个人电脑上,包括移动手机等终端设备。在视觉编码方面,我们通过perceiver resampler将图像表示压缩为更少的 token。这使得 MiniCPM-V 2.0 即便是面对高分辨率图像,也能占用较低的存储并展现优秀的推理速度。
-
🙌 双语支持。
MiniCPM-V 2.0 提供领先的中英双语多模态能力支持。 该能力通过 VisCPM [ICLR'24] 论文中提出的多模态能力的跨语言泛化技术实现。
TextVQA, DocVQA, OCRBench, OpenCompass, MME, MMBench, MMMU, MathVista, LLaVA Bench, Object HalBench 上的详细评测结果。
Model | Size | TextVQA val | DocVQA test | OCRBench | OpenCompass | MME | MMB dev(en) | MMB dev(zh) | MMMU val | MathVista | LLaVA Bench | Object HalBench |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Proprietary models | ||||||||||||
Gemini Pro Vision | - | 74.6 | 88.1 | 680 | 63.8 | 2148.9 | 75.2 | 74.0 | 48.9 | 45.8 | 79.9 | - |
GPT-4V | - | 78.0 | 88.4 | 645 | 63.2 | 1771.5 | 75.1 | 75.0 | 53.8 | 47.8 | 93.1 | 86.4 / 92.7 |
Open-source models 6B~34B | ||||||||||||
Yi-VL-6B | 6.7B | 45.5* | 17.1* | 290 | 49.3 | 1915.1 | 68.6 | 68.3 | 40.3 | 28.8 | 51.9 | - |
Qwen-VL-Chat | 9.6B | 61.5 | 62.6 | 488 | 52.1 | 1860.0 | 60.6 | 56.7 | 37.0 | 33.8 | 67.7 | 56.2 / 80.0 |
Yi-VL-34B | 34B | 43.4* | 16.9* | 290 | 52.6 | 2050.2 | 71.1 | 71.4 | 45.1 | 30.7 | 62.3 | - |
DeepSeek-VL-7B | 7.3B | 64.7* | 47.0* | 435 | 55.6 | 1765.4 | 74.1 | 72.8 | 38.3 | 36.8 | 77.8 | - |
TextMonkey | 9.7B | 64.3 | 66.7 | 558 | - | - | - | - | - | - | - | - |
CogVLM-Chat | 17.4B | 70.4 | 33.3* | 590 | 52.5 | 1736.6 | 63.7 | 53.8 | 37.3 | 34.7 | 73.9 | 73.6 / 87.4 |
Open-source models 1B~3B | ||||||||||||
DeepSeek-VL-1.3B | 1.7B | 58.4* | 37.9* | 413 | 46.0 | 1531.6 | 64.0 | 61.2 | 33.8 | 29.4 | 51.1 | - |
MobileVLM V2 | 3.1B | 57.5 | 19.4* | - | - | 1440.5(P) | 63.2 | - | - | - | - | - |
Mini-Gemini | 2.2B | 56.2 | 34.2* | - | - | 1653.0 | 59.8 | - | 31.7 | - | - | - |
MiniCPM-V | 2.8B | 60.6 | 38.2 | 366 | 47.6 | 1650.2 | 67.9 | 65.3 | 38.3 | 28.9 | 51.3 | 78.4 / 88.5 |
MiniCPM-V 2.0 | 2.8B | 74.1 | 71.9 | 605 | 55.0 | 1808.6 | 69.6 | 68.1 | 38.2 | 38.7 | 69.2 | 85.5 / 92.2 |
我们将 MiniCPM-V 2.0 部署在小米 14 Pro 上,并录制了以下演示视频,未经任何视频剪辑。
请参考这里了解 MiniCPM-V 1.0 的信息和使用教程。
OmniLMM-12B 是当前系列中性能最佳的版本。该模型基于EVA02-5B和Zephyr-7B-β初始化构建,并使用perceiver resampler连接,采用了课程学习的方法在多模态数据上进行训练。该模型具有三个特点:
-
🔥 性能领先。
OmniLMM-12B 相比其他同规模模型在多个基准测试中取得领先的性能(包括 MME、MMBench、SEED-Bench 等),模型掌握了较为丰富的多模态世界知识。
-
🏆 行为可信。
多模态大模型的幻觉问题备受关注,模型经常生成和图像中的事实不符的文本(例如,确信地描述图片中并不存在的物体)。OmniLMM-12B是 第一个通过多模态 RLHF 对齐的综合能力优秀的开源多模态大模型(借助 RLHF-V [CVPR'24] 系列技术)。该模型在 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 |
---|---|---|---|---|---|---|---|---|---|
GPT-4V† | - | 1771.5 | 75.1 | 56.8 | 3.53 / 70.8 | 86.4 / 92.7 | 71.6 | 47.8 | 93.1 |
Qwen-VL-Plus† | - | 2183.4 | 66.2 | 45.2 | - | - | 65.7 | 36.0 | 73.7 |
Yi-VL 6B | 6.7B | 1915.1 | 68.6 | 40.3 | - | - | 67.5 | 28.8 | 51.9 |
Qwen-VL-Chat | 9.6B | 1860.0 | 60.6 | 35.9 | 2.93 / 59.4 | 56.2 / 80.0 | 64.8 | 33.8 | 67.7 |
CogVLM-Chat | 17.4B | 1736.6 | 63.7 | 32.1 | 2.68 / 52.1 | 73.6 / 87.4 | 68.8 | 34.7 | 73.9 |
LLaVA 1.5 | 13.6B | 1808.4 | 68.2 | 36.4 | 2.71 / 51.0 | 53.7 / 77.4 | 68.1 | 26.4 | 64.6 |
OmniLMM-12B | 11.6B | 1935.8 | 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_video_demo_zh.mp4
欢迎通过以下链接使用我们的网页端推理服务: OmniLMM-12B | MiniCPM-V 2.0.
- 克隆我们的仓库并跳转到相应目录
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
模型 | 简介 | 下载链接 |
---|---|---|
MiniCPM-V 2.0 | 最新版本,提供高效而领先的端侧双语多模态理解能力。 | 🤗 |
MiniCPM-V | 第一版 MiniCPM-V | 🤗 |
OmniLMM-12B | 性能最强的版本 | 🤗 |
请参考以下代码使用 MiniCPM-V
和 OmniLMM
进行推理。
from chat import OmniLMMChat, img2base64
chat_model = OmniLMMChat('openbmb/MiniCPM-V-2') # or 'openbmb/OmniLMM-12B'
im_64 = img2base64('./assets/hk_OCR.jpg')
# First round chat
msgs = [{"role": "user", "content": "Where should I go to buy a camera?"}]
inputs = {"image": im_64, "question": json.dumps(msgs)}
answer = chat_model.chat(inputs)
print(answer)
# Second round chat
# pass history context of multi-turn conversation
msgs.append({"role": "assistant", "content": answer})
msgs.append({"role": "user", "content": "Where is this store in the image?"})
inputs = {"image": im_64, "question": json.dumps(msgs)}
answer = chat_model.chat(inputs)
print(answer)
可以得到以下输出:
"You should go to the Canon store for a camera."
"The Canon store is located on the right side of the image."
点击查看 MiniCPM-V 2.0 基于Mac MPS运行 (Apple silicon or AMD GPUs)的示例。
# test.py
import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('openbmb/MiniCPM-V-2', trust_remote_code=True, torch_dtype=torch.bfloat16)
model = model.to(device='mps', dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained('openbmb/MiniCPM-V-2', trust_remote_code=True)
model.eval()
image = Image.open('./assets/hk_OCR.jpg').convert('RGB')
question = 'Where is this photo taken?'
msgs = [{'role': 'user', 'content': question}]
answer, context, _ = model.chat(
image=image,
msgs=msgs,
context=None,
tokenizer=tokenizer,
sampling=True
)
print(answer)
运行:
PYTORCH_ENABLE_MPS_FALLBACK=1 python test.py
MiniCPM-V 2.0 目前可以部署在Android和Harmony操作系统的手机上。 🚀 点击这里开始手机端部署。
- 支持模型微调
- 本地用户图形界面部署
- 实时多模态交互代码开源
本仓库中代码依照 Apache-2.0 协议开源
OmniLMM 模型权重的使用遵循 “通用模型许可协议-来源说明-宣传限制-商业授权”。
OmniLMM 模型权重对学术研究完全开放。
如需将模型用于商业用途,请联系 cpm@modelbest.cn 来获取书面授权,登记后可以免费商业使用。
作为多模态大模型,MiniCPM-V 和 OmniLMM 通过学习大量的多模态数据来生成内容,但它无法理解、表达个人观点或价值判断,它所输出的任何内容都不代表模型开发者的观点和立场。
因此用户在使用 MiniCPM-V 和 OmniLMM 生成的内容时,应自行负责对其进行评估和验证。如果由于使用 OmniLMM 开源模型而导致的任何问题,包括但不限于数据安全问题、公共舆论风险,或模型被误导、滥用、传播或不当利用所带来的任何风险和问题,我们将不承担任何责任。
本项目由以下机构共同开发: