Github 链接: MiniCPM-V/README_zh.md at main · OpenBMB/MiniCPM-V (github.com)
技术报告: arxiv.org/pdf/2408.01800
MiniCPM-V是一系列可部署在端侧设备上的高效MLLMs。最新的 MiniCPM-Llama3-V 2.5 集成了架构、预训练和对齐方面的最新 MLLM 技术,具有几个显著特点:( 1 )性能强大,在OpenCompass上优于GPT - 4V - 1106、Gemini Pro和Claude 3,综合评估超过11个流行的基准;( 2 ) OCR能力强,在任何纵横比下都能实现1.8 M像素的高分辨率图像感知;( 3 )行为可信,幻觉率低;( 4 )支持30多种语言;( 5 )在手机上高效部署。
随着时间推移, 达到 GPT-4V 级别性能的模型的大小在迅速减小, 这可以看作是 MLLMs 的 Moore's Law.
以 MiniCPM-Llama3-V 2.5 为例介绍创新点.
包括 overall architecture 和 自适应高分辨率视觉编码方法(adaptive high-resolution visual encoding approach).
整体内容挺少的.
和一般的 mllm 一样, 包括 visual encoder, compression layer, 以及 LLM.
visual encoder 采用的方法就是自适应高分辨率视觉编码, 然后采用
SigLIPSoViT-400m/14
作为 visual encoder. compression layer
用来压缩 vision tokens, 结构是具有一层 cross attention 的 perceiver
resampler (感知重采样器) 结构. 压缩后的 visual tokens 和 text tokens
输入到大模型中. LLM backbone 是 MiniCPM-2.4B
.
一个好的 visual encoder 需要保留原始纵横比且保留足够的视觉细节; 再考虑到效率, vision tokens 的数量也要限制. 使用 LLaVA-UHD 提出的自适应视觉编码方法.
为了更好地处理不同纵横比地图像, 将图像分成 slices, 每个 slice 的纵横比和分辨率需要与 ViT 的预训练设置相匹配.
给定尺寸/分辨率为
上述划分方式不能完美精确地得到形状为
经过 visual encoding, 每个 slice 可以被编码为
对于 MiniCPM-Llama3-V 2.5
, 经过压缩每个 slice 变成了 64
个 query.
为了表明每个 slice 在图像中的位置, 对每个 slice 的 token 用两个特殊的
token <slice>
和 <\slice>
包起来,
并且用 \n
来区分不同行的 slice.
(其实就按照换行符来理解就行)
用大量可能低质量的从 web 上爬取的图片-文本对训练, 目的是将视觉模块向 LLM 的输入空间对其并且学习基本的多模态知识. 分为三个阶段:
用人工标注或强模型标注的的高质量数据集训所有参数.
RLAIF-V 方法用来缓解幻觉问题, 从开源模型中获取高质量反馈用于 DPO.
就不读了.
Yi-VL-6B/34B [108], Qwen-VL-Chat [7], DeepSeek-VL7B [68], TextMonkey [65], CogVLM-Chat-17B [102], CogVLM2-Llama3-19B [102], Idefics28B [52], Bunny-Llama-3-8B [39], XTuner-Llama-3-8B-v1.1 [27], LLaVA-NeXT-Llama-3-8B [53], Cambrian-8B/34B [99], LLaVA-NeXT-Yi-34B [61], DeepSeek-VL-1.3B [68], MobileVLM V2 [25], Mini-Gemini [57] and Phi-3-Vision-128k-instruct.
好多开源模型.
中文技术博客: MiniCPM-2B-128k: 一个小于 3B 的 128k 模型 (openbmb.vercel.app)