微信扫码
与创始人交个朋友
我要投稿
Multimodal AI: A Guide to Open-Source Vision Language Models
前言:人类通过视觉、语言等多种表征媒介(模态)与世界互动,每种模态都可能在某个方面的表达和交流上有它自己的优势,融合在一起帮助我们更系统、更完整地理解这个世界。随着技术的发展,大预言模型基本实现独立自然的表达,视觉编码表征能力也逐渐增强,自然而然,我们就会想要把两方面的能力结合在一起,用一个大一统的模型完成语言+视觉的综合理解&表达,这也更靠近大家所理解的AGI-通用人工智能。
视觉+语言的多模态大模型目前主流方法是:借助预训练好的大语言模型和图像编码器,用一个图文特征对齐模块来连接,从而让语言模型理解图像特征并进行更深层的问答推理。
这样可以利用已有的大量单模态训练数据训练得到的单模态模型,减少对于高质量图文对数据的依赖,并通过特征对齐、指令微调等方式打通两个模态的表征。
主流的多模态大语言模型主要有以下几个研究方向:
Model | 基本思想 | 模型结构 | loss函数 | 训练数据 |
---|---|---|---|---|
CLIP | 文本和图像在特征域对齐 |
| Info-NCE-loss(对比学习MoCo的损失函数) | 400 million的图文Pair |
BLIP | 兼顾图文理解和生成的多模态模型,同时在三个视觉语言目标上联合预训练:
| Multimodal mixture of Encoder-Decoder 共四个部分:
|
| 预训练:
|
BLIP2 | 通过利用与训练好的视觉模型Image Encoder和语言模型LLM来提升多模态效果和降低训练成本 |
|
|
|
LLaVA | 纯语言GPT-4生成多模态语言图像指令跟随数据 | 视觉编码器+LLM+projector Layer | 自回归模型损失,通过前轮问答预测当前答案的最大似然 | 158K指令跟随样本:
|
mini-GPT4 | 用一层MLP将视觉编码器和更强大的LLM连接 | 视觉编码器(ViT-G/14+Q-Former)+LLM(Vicuna)+projector layer | 类似BLIP2,主要是Language modeling loss | 只训练投影层:5M对齐的图文对+35000个告知蓝两个图文对 |
InstructBLIP | 指令微调训练通用视觉语言模型 | 类似BIP2,增加之零零输入同时给到Q-Former和LLM | 类似BIP2,主要是Language modeling loss | 26个数据集(指令微调格式),13个用于指令微调,13个用于Zero-Shot能力评估 |
趋势发展 | 图文特征对齐,质量微调,多任务 | 图像编码器Image Encoder+大语言模型LLM+对齐模型 | 参数对比学习探索不同的图文特征对齐方式,同时增加指令微调能力 | 生成过滤得到的告知力量图文对数据,使用多任务... |
CLIP的基本算法原理是文本和图像在特征域进行对齐。
a photo of [object]
, 分别对image 和 text进行特征提取以及余弦距离计算,当object为目标类别时,相似度最高,即为预测结果(效果好);目标类别对应的图文特征余弦距离最大
参考对比学习损失,采用了info-nce-loss。
细节:CLIP用了大量的训练数据以及训练资源,大力出奇迹。CLIP用了400million的image-text pair对进行训练,对于image backbone,CLIP尝试了两种结构,DN50x64 和 vit-L,分别用了592 个 V100 + 18天 的时间 和 256 个 V100 + 12天 的时间,非大公司直接劝退。
基本思想:
兼顾图文理解和生成的多模态模型(Multimodal mixture of Encoder-Decoder),同时在三个视觉语言目标上联合预训练:图像文本对比学习ITC、图像文本匹配ITM、图像条件语言建模LM;同时提出了一种高效利用网络收集的嘈杂图文对的采样+过滤机制。
bootstraping翻译成“自举”有点别扭,我还是习惯理解为有放回抽样/迭代优化。
预训练阶段同时优化3个loss项,每个图文对只过1次vision-transormer(算力消耗较大),过3次text-transormer
Captioning and Filtering:一种高效的数据集增强方法,从网页噪声图像文本对中学习,采样生成器+噪声过滤器,都是从相同的预训练模型初始化,并在小型人工注释数据集e.g.COCO上单独进行微调。
效果:从用人工标注的图文对得到的预训练模型开始初始化,captioner生成合成文本,filter过滤合成文本和网页描述文本,得到过滤后的相对干净的网页文本和合成文本->用来训练BLIP,往复进行。
图像编码器使用 ImageNet-1K 上预训练的 ViT 初始化,文本编码器以 BERT-Base 初始化,按照Vit-B 2880/ Vit-L 2400的batch-size训练 20 Epochs,预训练阶段图像尺寸224*224,微调阶段尺寸384*384.
用了以下3部分数据集预训练,加起来大概是 14M。
还尝试了一个额外的噪声文本较多的web 数据集 LAION(115M 图像)。
如标题所言 Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models,分两个阶段,通过利用预训练好的视觉模型和语言模型来提升多模态效果和降低训练成本。
BLIP-2由预训练的Image Encoder,预训练的Large Language Model,和一个可学习的 Q-Former 组成。
Q-Former由Image Transformer和Text Transformer两个子模块构成,它们共享相同自注意力层。
为了减少计算成本并避免灾难性遗忘,BLIP-2 在预训练时冻结预训练图像模型和语言模型,由于简单地冻结预训练模型参数会导致视觉特征和文本特征难以对齐,为此BLIP-2提出两阶段预训练 Q-Former 来弥补modality gap:表示学习阶段和生成学习阶段。
把问题和Q-Former提取的视觉表示一起输入LLM从而得到答案,不过还多了一个把问题也加入了Q-Former的输入,使提取的图像特征和问题更相关。这种方式也用在了他们的下一篇文章InstructBLIP中,用于注入指令进行微调。
预训练数据集:
预训练好的Image Encoder和 LLM:
训练设定:第一阶段预训练250k步,第二阶段预训练80k步,图像输入尺寸,更多细节看原文。
效果展示:可做到视觉知识推理、视觉常识推理、视觉对话、个性化图像到文本生成等,只需在视觉提示之后附加文本提示作为 LLM 的输入。
使用仅限语言的GPT-4生成多模态语言图像指令跟随数据,提出一种连接视觉编码器和LLM的端到端训练多模态大模型。
使用视觉编码器CLIP ViT-L/14
语言解码器LLaMA
构成多模态大模型,然后使用生成的数据进行指令微调。输入图片经过与训练好的视觉编码器的到图片特征,图片特征经过一个映射矩阵转化为视觉Token ,这样Vison Token 与Language Token 指令就都在同一个特征空间,拼接后一起输入大模型。这里的映射层W也可以替换为更复杂的网络来提升性能,比如Flamingo中用的gated cross-attentio,BLIP-2中用的Q-former。
使用如下式所示的的方式组织每一轮的对话输入输出,训练模型预测助手的答案以及在哪里停止,因此仅使用绿色序列和标记来计算自回归模型中的损失,即根据所有前轮的指令和回答来预测当前目标回答,也就是经典的next token prediction。
文中使用了两阶段的训练方式:
Table 2: The input sequence used to train the model. Only two conversation turns are illustrated here; in practice, the number of turns varies based on the instruction-following data. In our current implementation, we follow Vicuna-v0 [9] to set the system message Xsystem-message and we set
什么是指令跟随数据使用ChatGPT/GPT-4将数据转化为多模态指令跟随数据(multimodel instrustion-following data)。具体来说,为了将输入图像编码为视觉特征来作为纯文本 GPT的(soft) promt,文中用了两种类型的表达:
通过这两类符合表示,将视觉内容传达给了语言大模型,然后人工设计了3种对话方式,利用GPT-4进行生成和扩充,分别是:
最后总共收集了158K独特的语言图像指令跟随样本,包括58K对话数据、23K详细描述数据、77K复杂推理数据。
GPT-4 具有先进的多模态生成能力的主要原因在于利用了更先进的大型语言模型(LLM),因此提出仅用一个投影层将一个冻结的视觉编码器和一个冻结的 LLM(Vicuna)对齐。
类似BLIP2,包括一个冻结的视觉编码器(ViT-G/14 + Q-Former), 一个冻结的 LLM(Vicuna), 一个投影层。
第一阶段在大量对齐的图像文本对上对模型进行预训练,以获取基础的视觉语言知识。在第二阶段,使用规模较小但更高质量的图文对数据集和精心设计的对话模板对预训练模型进行微调,以增强模型的生成可靠性和可用性。
关于loss设计论文没有讲太细,看代码里面应该主要是计算language modeling loss:https://github.com/Vision-CAIR/MiniGPT-4/blob/main/minigpt4/models/mini_gpt4.py#L320
基于 BLIP-2 提出指令微调的范式,借助额外的 instruction 提取更有用的视觉特征。
InstructBLIP 的架构和 BLIP-2 相似,从预训练好的 BLIP-2 模型初始化,由图像编码器、LLM 和 Q-Former 组成。为了进行指令微调,在BLIP-2的基础上把 instruction text tokens也作为输入同时给到Q-former和LLM。其中可学习的K个queries 通过Q-former中共享的 self-attention 和输入指令交互,通过 cross-attention 和输入图片的特征交互,鼓励提取与任务相关的图像特征。
和BLIP-2一致,分两个阶段
分两种情况:
作者将11类任务的26个数据集转化成指令微调的格式,把它们分成13个 held-in 数据集用于指令微调,和13个 held-out 数据集用于 Zero-Shot 能力的评估。held-out分两种,一种是这些数据在训练期间没被模型见过,但是同类型的任务中学过,另一种是在训练和同类型的任务都不涉及(比如下图中全为白框的4个任务)。
在训练期间,所有的 held-in 数据集的训练集混合,总数量太大且每个数据集的规模存在显着差异,均匀混合会导致模型过拟合较小的数据集,欠拟合较大的数据集。因此,文中提出根据数据集的大小的平方根或者其他正相关比例进行采样。更多训练细节见原文。
对于每个任务,人工制作了10-15个高质量的自然语言指令模板。对于一些偏爱简洁响应的数据集,在 instruction 中增加了 "short", "briefly" 来减小模型过拟合的风险,防止模型始终生成很短的输出。
Task | Instruction Template |
---|---|
ImageCaptions | |
VQA | |
VQG |
由 Meta 开发的 Llama 3.2 Vision 是多模态 LLM 的集合,旨在处理文本和图像。Llama 3.2 Vision 提供 11B 和 90B 参数大小,在图像文本任务中的性能优于许多开源和专有模型。
为了支持图像输入,Meta 使用适配器将预先训练的图像编码器集成到语言模型中,适配器将图像数据连接到文本处理层。这允许模型同时处理图像和文本输入。
主要特点:
需要注意的事项:
要部署 Llama 3.2 Vision,请查看博客文章,或者直接使用 OpenLLM 运行。openllm serve llama3.2:11b-vision
NVLM 是 NVIDIA 开发的多模态 LLM 系列,代表了 VLM 的前沿方法。它在需要深入了解文本和图像的任务中取得了最先进的结果。第一个公开迭代 NVLM 1.0 可与 GPT-4o 等顶级专有模型以及 Llama 3-V 405B 等开放获取模型相媲美。
主要特点:
不同的架构:NVLM 1.0 系列由三种独特的架构组成,适用于不同的用例。
强大的图像推理:NVLM 1.0 在 OCR、多模态推理和高分辨率图像处理等任务中超越了许多专有和开源模型。它展示了卓越的场景理解能力。根据 NVIDIA 提供的示例图像,它能够识别潜在风险并根据视觉输入提出行动建议。
改进的纯文本性能:NVIDIA 研究人员观察到,虽然开放式多模态 LLM 通常在视觉语言任务中取得很好的效果,但它们在纯文本任务中的性能往往会下降。因此,他们为 NVLM 模型开发了“生产级多模态”。这使得 NVLM 模型在视觉语言任务和纯文本任务中都表现出色(多模态训练后平均准确率提高了 4.3 分)。
需要注意的事项:
Molmo 是由 Allen Institute for AI 开发的一系列开源 VLM。Molmo 型号提供 1B、7B 和 72B 参数,提供同类产品中最先进的性能。根据基准测试,它们的性能可以与 GPT-4V、Gemini 1.5 Pro 和 Claude 3.5 Sonnet 等专有模型相媲美。
Molmo 性能的关键在于其独特的训练数据 PixMo。这个高度精选的数据集由 100 万对图像-文本组成,包括两种主要类型的数据:
有趣的是,Molmo 研究人员使用了一种创新的数据收集方法:要求注释者在 60 到 90 秒内提供图像的口头描述。具体来说,这些详细描述包括所有可见的内容,甚至是空间定位和对象之间的关系。结果表明,注释者提供详细的标题比传统方法(写下来)效率要高得多。总体而言,他们收集了 712k 张图像的高质量音频描述,这些图像是从 50 个高级主题中采样的。
主要特点:
需要注意的事项:
Qwen2-VL 是 Qwen 系列中自动立体货柜的最新版本。现在,它超越了对植物和地标等对象的基本识别,可以了解场景中多个对象之间的复杂关系。此外,它还能够识别图像中的手写文本和多种语言。
Qwen2-VL 还将其功能扩展到视频内容,支持视频摘要、问答和围绕视频的实时对话。
主要特点:
需要注意的事项:
您可以在模型的 GitHub 存储库中找到更多限制信息。
Pixtral 是由 Mistral 开发的 120 亿参数开源模型,标志着该公司首次涉足多模态功能。Pixtral 旨在理解图像和文本,在 Apache 2.0 许可下以开放权重发布。
作为一种指令调整模型,Pixtral 在交错图像和文本文档的大规模数据集上进行了预训练。因此,它能够进行多轮次、多图像对话。与以前的开源模型不同,Pixtral 在多模态任务中表现出色,同时保持了出色的文本基准性能。
主要特点:
出色的教学跟踪能力:基准测试结果表明,Pixtral 12B 在教学跟踪任务方面的表现明显优于 Qwen2-VL 7B、LLaVa-OneVision 7B 和 Phi-3.5 Vision 等其他开源多模态模型。Mistral 创建了新的基准测试 MM-IF-Eval 和 _MM-MT-Bench_,以进一步评估 Pixtral 在多模态环境中的性能,而 Pixtral 在这方面也表现出色。这些基准测试预计将在不久的将来为社区开源。
图片来源:Pixtral 公告博客文章
多图像处理: Pixtral 可以在单个输入中处理多个图像,并以原始分辨率处理它们。该模型支持 128,000 个令牌的上下文窗口,并且可以摄取具有不同大小和纵横比的图像。
需要注意的事项:
要部署 Pixtral 12B,您可以使用 OpenLLM 运行。openllm serve pixtral:12b
请考虑以下因素以确保最佳性能和可用性:
由于 VLM 体积大,通常需要大量的计算资源。像上面提到的这样性能最好的开源模型可以达到超过 700 亿个参数。这意味着您需要高性能 GPU 来运行它们,尤其是对于实时应用程序。
并非所有模型服务和部署框架都旨在处理多模式输入,例如文本、图像和视频。为了充分利用 VLM 的潜力,请确保您的服务和部署框架可以同时容纳和处理多种数据类型。
自动立体货柜通常用于要求苛刻的应用,例如:
在这些使用案例中,流量可能会根据用户行为出现不可预测的峰值。这意味着您的部署框架应支持在高峰时段快速扩展。
每个基准测试都有特定的用途,可以突出模型的不同功能。以下是 VLM 的五个流行基准:
链接:A Comprehensive Evaluation Benchmark for Multimodal Large Language Models
基本思路:
针对多模态大模型提出评估基准MME,在14个子任务上评估了目前比较前沿的12个大模型的感知和认知能力。
通用的全面评估基准应具备以下四个特点:
对应的设计:
MME涵盖了感知和认知能力的考察,总共有14个子任务:
在12个当前比较SOTA的方法上的评估结果:
结论:综合感知能力和认知能力,BLIP2、mPLUG-Owl、InstructionBLIP、Mini-GPT4 总体表现更优。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-10-30
Cohere推出多模态 AI 搜索模型 Embed3了
2024-10-30
GPT-4o只考了21分:AI视觉推理能力受到严重质疑
2024-10-29
【文档智能】文档解析揭秘:文档结构化信息提取技术、数据集综述
2024-10-29
Midjourney又更新,AI版的PS来了
2024-10-28
AI时代的人性化交互:语音交互技术
2024-10-28
Stable Diffusion 3.5来了!更真实,更可控,更开放!魔搭社区推理最佳实践
2024-10-28
360在图文多模态大模型领域的突破与实践
2024-10-28
一块显卡理解一部完整电影!智源联合多所高校推出小时级的超长视频理解大模型Video-XL
2024-06-17
2024-05-30
2024-07-11
2024-06-17
2024-08-06
2024-08-30
2024-04-21
2024-09-12
2024-06-26
2024-07-11
2024-09-26
2024-09-26
2024-09-01
2024-07-31
2024-07-25
2024-07-19
2024-07-15
2024-07-15