链载Ai

标题: Multimodal AI 技术手册(一) [打印本页]

作者: 链载Ai    时间: 1 小时前
标题: Multimodal AI 技术手册(一)

Multimodal AI: A Guide to Open-Source Vision Language Models

前言:人类通过视觉、语言等多种表征媒介(模态)与世界互动,每种模态都可能在某个方面的表达和交流上有它自己的优势,融合在一起帮助我们更系统、更完整地理解这个世界。随着技术的发展,大预言模型基本实现独立自然的表达,视觉编码表征能力也逐渐增强,自然而然,我们就会想要把两方面的能力结合在一起,用一个大一统的模型完成语言+视觉的综合理解&表达,这也更靠近大家所理解的AGI-通用人工智能。

视觉+语言的多模态大模型目前主流方法是:借助预训练好的大语言模型和图像编码器,用一个图文特征对齐模块来连接,从而让语言模型理解图像特征并进行更深层的问答推理。

这样可以利用已有的大量单模态训练数据训练得到的单模态模型,减少对于高质量图文对数据的依赖,并通过特征对齐、指令微调等方式打通两个模态的表征。

主流的多模态大语言模型主要有以下几个研究方向:

Model基本思想模型结构loss函数训练数据
CLIP文本和图像在特征域对齐
  • 文本编码器(BERT)

  • 图像编码器(ViT)

  • 对上边两enc提取的特征计算预先余弦相似性距离

Info-NCE-loss(对比学习MoCo的损失函数)400 million的图文Pair
BLIP兼顾图文理解和生成的多模态模型,同时在三个视觉语言目标上联合预训练:
  • 图像文本对比学习

  • 图像文本匹配ITM

  • 图像条件语言建模LM

Multimodal mixture of Encoder-Decoder 共四个部分:
  • 单模态图像块的编码器(ViT)

  • 单模态文编码器(BERT)

  • 多模态Image-grounded text encoder: 在self-attention和FFN中间增加一层cross-attention

  • 多模Image-grounded decoder: 用causal self-attention层(预测下一个token)代替了双向子注意力层(建立当前输入token的表达)

  • ITC loss(偏理解,优化图&文本单模态编码器):图像文本对比学习,对齐图&文的特征空间;

  • ITM loss(偏理解,优化图文编码器):图像文本匹配二分类,构建图文多模态信息的相关性;

  • LM loss(偏生成,优化图文编码器):采用交叉熵损失函数训练模型以自回归方式生成连贯的描述。

预训练:
  • COCO

  • Visua Genome

  • Web datasets:Conceptual Caption 3M, Conceptual 12M(噪声较大),

  • SBU Captions

  • Web datasetsAION(115M)(噪声较大)

BLIP2通过利用与训练好的视觉模型Image Encoder和语言模型LLM来提升多模态效果和降低训练成本
  • 训练好的Image Encoder

  • 预训练Large Language Model

  • 一个可学习的 Q-Former:Image Transformer + Text Transformer

  • ITC loss(偏理解): 图文对比学习,对齐图&文特征空间;

  • ITG loss(偏生成):给定输入图像生成文本米哦啊书,迫使Query提取包含所有文本信息的视觉特征;

  • ITM loss(偏理解):图文匹配二分类,图文表示的细粒度的对齐

  • BLIP的数据(129M)

  • 采用CapFilter方法从网络图合成文本描述,选择Top2

LLaVA纯语言GPT-4生成多模态语言图像指令跟随数据视觉编码器+LLM+projector Layer自回归模型损失,通过前轮问答预测当前答案的最大似然158K指令跟随样本:
  • 58K对话

  • 23K详细描述数据

  • 77K复杂推理数据

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 loss26个数据集(指令微调格式),13个用于指令微调,13个用于Zero-Shot能力评估
趋势发展图文特征对齐,质量微调,多任务图像编码器Image Encoder+大语言模型LLM+对齐模型参数对比学习探索不同的图文特征对齐方式,同时增加指令微调能力生成过滤得到的告知力量图文对数据,使用多任务...

CLIP (Contrastive Language-Image Pre-training)

基本思想

CLIP的基本算法原理是文本和图像在特征域进行对齐。

模型结构

对比学习,维护一个图文特征相似度矩阵

目标类别对应的图文特征余弦距离最大

训练loss

参考对比学习损失,采用了info-nce-loss。

n个类别多分类的交叉熵损失函数
噪声对比NCE-loss
Info-NCE loss

细节:CLIP用了大量的训练数据以及训练资源,大力出奇迹。CLIP用了400million的image-text pair对进行训练,对于image backbone,CLIP尝试了两种结构,DN50x64 和 vit-L,分别用了592 个 V100 + 18天 的时间 和 256 个 V100 + 12天 的时间,非大公司直接劝退。

BLIP(Bootstraping language image pre-training)

基本思想

兼顾图文理解和生成的多模态模型(Multimodal mixture of Encoder-Decoder),同时在三个视觉语言目标上联合预训练:图像文本对比学习ITC、图像文本匹配ITM、图像条件语言建模LM;同时提出了一种高效利用网络收集的嘈杂图文对的采样+过滤机制。
bootstraping翻译成“自举”有点别扭,我还是习惯理解为有放回抽样/迭代优化。


模型结构

训练loss

预训练阶段同时优化3个loss项,每个图文对只过1次vision-transormer(算力消耗较大),过3次text-transormer

Captioning and Filtering:一种高效的数据集增强方法,从网页噪声图像文本对中学习,采样生成器+噪声过滤器,都是从相同的预训练模型初始化,并在小型人工注释数据集e.g.COCO上单独进行微调。

  1. 采样生成器captioner:基于图像的文本解码器(生成),用LM的loss进行微调
  2. 噪声过滤器filter:基于图像的文本编码器(判别),用ITC+ITM进行微调,判断图文是否匹配

效果:从用人工标注的图文对得到的预训练模型开始初始化,captioner生成合成文本,filter过滤合成文本和网页描述文本,得到过滤后的相对干净的网页文本和合成文本->用来训练BLIP,往复进行。

CapFilt 可以通过更大的数据集和更大的视觉主干进一步提高性能,这验证了其在数据大小和模型大小方面的可扩展性。此外,通过使用 ViT-L 的大型字幕生成器和过滤器,还可以提高基础模型的性能。


在图 4 中,我们展示了一些示例字幕及其相应的图像,它们定性地展示了字幕生成器生成新文本描述的效果,以及过滤器从原始网络文本和合成文本中删除噪声字幕的效果。更多示例可以在附录中找到


数据集

图像编码器使用 ImageNet-1K 上预训练的 ViT 初始化,文本编码器以 BERT-Base 初始化,按照Vit-B 2880/ Vit-L 2400的batch-size训练 20 Epochs,预训练阶段图像尺寸224*224,微调阶段尺寸384*384.
用了以下3部分数据集预训练,加起来大概是 14M。

还尝试了一个额外的噪声文本较多的web 数据集 LAION(115M 图像)。

BLIP2

基本思想

如标题所言 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:表示学习阶段和生成学习阶段。

  1. 第一个预训练阶段,vision-language表示学习,将 Q-Former 连接到冻结的图像编码器image encoder,目标是Q-Former学习与文本最相关的视觉表示。和BLIP类似,通过联合优化 三个预训练loss,并在Query和Text之间采用不同的注意力掩码策略,从而控制Image Transformer和Text Transformer的交互方式



文中使用了两阶段的训练方式:

  1. 预训练特征对齐模块(映射层),冻结视觉编码器和LLM,只训练映射矩阵得到上面公式的最大似然,相当于为冻结的 LLM 训练一个适配的visual tokenizer。
  2. 端到端的微调语言模型+映射层。

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复杂推理数据。

MiniGPT-4

基本思想

GPT-4 具有先进的多模态生成能力的主要原因在于利用了更先进的大型语言模型(LLM),因此提出仅用一个投影层将一个冻结的视觉编码器和一个冻结的 LLM(Vicuna)对齐。

模型结构

类似BLIP2,包括一个冻结的视觉编码器(ViT-G/14 + Q-Former), 一个冻结的 LLM(Vicuna), 一个投影层。

两阶段训练

第一阶段在大量对齐的图像文本对上对模型进行预训练,以获取基础的视觉语言知识。在第二阶段,使用规模较小但更高质量的图文对数据集和精心设计的对话模板对预训练模型进行微调,以增强模型的生成可靠性和可用性。

训练loss

关于loss设计论文没有讲太细,看代码里面应该主要是计算language modeling loss:https://github.com/Vision-CAIR/MiniGPT-4/blob/main/minigpt4/models/mini_gpt4.py#L320

InstructBLIP(Instruction Tuning)

基本思想

基于 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" 来减小模型过拟合的风险,防止模型始终生成很短的输出。

D Instruction Templates


TaskInstruction Template
ImageCaptions
VQA
VQG


Llama 3.2

由 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 1.0

NVLM 是 NVIDIA 开发的多模态 LLM 系列,代表了 VLM 的前沿方法。它在需要深入了解文本和图像的任务中取得了最先进的结果。第一个公开迭代 NVLM 1.0 可与 GPT-4o 等顶级专有模型以及 Llama 3-V 405B 等开放获取模型相媲美。

主要特点:


需要注意的事项:

数据集

Molmo

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

Qwen2-VL 是 Qwen 系列中自动立体货柜的最新版本。现在,它超越了对植物和地标等对象的基本识别,可以了解场景中多个对象之间的复杂关系。此外,它还能够识别图像中的手写文本和多种语言。

Qwen2-VL 还将其功能扩展到视频内容,支持视频摘要、问答和围绕视频的实时对话。

主要特点:

需要注意的事项:

您可以在模型的 GitHub 存储库中找到更多限制信息。

Pixtral

Pixtral 是由 Mistral 开发的 120 亿参数开源模型,标志着该公司首次涉足多模态功能。Pixtral 旨在理解图像和文本,在 Apache 2.0 许可下以开放权重发布。

作为一种指令调整模型,Pixtral 在交错图像和文本文档的大规模数据集上进行了预训练。因此,它能够进行多轮次、多图像对话。与以前的开源模型不同,Pixtral 在多模态任务中表现出色,同时保持了出色的文本基准性能。

主要特点:


需要注意的事项:

要部署 Pixtral 12B,您可以使用 OpenLLM 运行。openllm serve pixtral:12b

部署 VLM 重点考虑的因素

请考虑以下因素以确保最佳性能和可用性:

基础架构要求

由于 VLM 体积大,通常需要大量的计算资源。像上面提到的这样性能最好的开源模型可以达到超过 700 亿个参数。这意味着您需要高性能 GPU 来运行它们,尤其是对于实时应用程序。

多式联运处理

并非所有模型服务和部署框架都旨在处理多模式输入,例如文本、图像和视频。为了充分利用 VLM 的潜力,请确保您的服务和部署框架可以同时容纳和处理多种数据类型。

快速扩展

自动立体货柜通常用于要求苛刻的应用,例如:

在这些使用案例中,流量可能会根据用户行为出现不可预测的峰值。这意味着您的部署框架应支持在高峰时段快速扩展。

Bechmark

每个基准测试都有特定的用途,可以突出模型的不同功能。以下是 VLM 的五个流行基准:

MME多模态大模型评估体系

链接:A Comprehensive Evaluation Benchmark for Multimodal Large Language Models

基本思路

针对多模态大模型提出评估基准MME,在14个子任务上评估了目前比较前沿的12个大模型的感知和认知能力。

通用的全面评估基准应具备以下四个特点

  1. 涵盖不同层次的能力,包括感知和认知能力。前者指识别特定对象,如对象的存在、数量、位置和颜色。后者指通过组合LLM中的感知信息和知识推导出更复杂的答案(前者是后者的前提)。
  2. 数据或注释应尽可能不来自现有的公开可用数据集,以避免数据泄漏的风险。
  3. 指令应尽可能简明扼要,并符合人类的认知。所有模型应在相同统一的指令下进行测试,以进行公平比较,一个优秀的MLLM也应能够推广到这种简明扼要的指令。
  4. MLLM对指令的响应应直观且便于定量分析。

对应的设计

MME涵盖了感知和认知能力的考察,总共有14个子任务:

  1. 感知能力:OCR能力和粗粒度识别、细粒度识别,前者识别对象的存在、数量、位置和颜色,后者识别电影海报、名人、场景、地标和艺术作品。
  2. 认知能力:包括常识推理、数值计算、文本翻译和代码推理。
  3. 所有的指令-答案对都是人工构建的。对于涉及到的少数公共数据集,也仅使用图像,而不直接依赖于其原始注释。同时,我们努力通过真实照片和图像生成来收集数据。
  4. MME的指令设计简明扼要,以避免对模型输出的影响,基本假设是一个好的MLLM应能够适配简单且常用的指令。
  5. 根据MLLM的输出准确&客观,主要是以"是""否"问答,便于进行定量统计。需要注意的是,文中还尝试设计了带有多项选择题的指令,但发现当前的MLLM可能无法遵循复杂的指令。

在12个当前比较SOTA的方法上的评估结果:


结论:综合感知能力和认知能力,BLIP2、mPLUG-Owl、InstructionBLIP、Mini-GPT4 总体表现更优。







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5