大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型:LLaVA。处理包含图像和文本的多模态数据,并生成合理准确的回答。
文章目录
- 论文
- 模型架构
- 视觉编码器
- 语言模型
- 多模态融合
- 总结
- 训练细节
- 阶段1:特征对齐预训练
- 阶段2:端到端微调
- 总结
- 实验
- LLava 1.5模型
- 论文
- LLaVA 1.5模型的改进
- LLava 1.6(LLaVA-NeXT)模型
- 论文
- LLaVA 1.5模型的改进
- Reference
- 历史文章
- 机器学习
- 深度学习
论文
Visual Instruction Tuning
LLaVA(Large Language and Vision Assistant)是一种多模态模型,将视觉和语言能力结合在一起,用于图像-文本理解和生成任务。以下是对LLaVA的详细介绍:
模型架构
LLaVA(Large Language and Vision Assistant)是一个简单高效的多模态模型,它通过映射矩阵连接一个预训练的 视觉编码器(CLIP ViT-L/14) 和一个 大语言模型(Vicuna) 实现跨模态理解,再使用Vicuna的解码能力生成自然语言输出。
- 输入图像 X v X_v Xv,经过视觉编码器得到图像特征 Z v Z_v Zv,之后 Z v Z_v Zv通过多模态融合的线性投影处理,得到H_v(与文本特征对齐,达到同维度)。
- 输入文本 X q X_q Xq,经过文本编码器得到图像特征 H q H_q Hq。
- 图像特征 Z v Z_v Zv和图像特征 H q H_q Hq,经过文本解码器,得到 X a X_a Xa。
视觉编码器
LLaVA 的视觉编码器采用了 CLIP 的 Vision Transformer (ViT-L/14),这是一个强大的预训练视觉模型。
详细内容参考:多模态论文笔记——CLIP、BLIP
架构与功能:
- CLIP ViT-L/14:由 OpenAI 提出的多模态模型,使用图像编码器和文本编码器对图像-文本对进行联合训练。
- 输入图像经过编码器后,被转化为一个二维网格的嵌入表示(feature map),其形状为:
[ 1 , grid H × grid W , hidden_dim ] [1, \text{grid}_H \times \text{grid}_W, \text{hidden\_dim}] [1,gridH×gridW,hidden_dim]- grid H \text{grid}_H gridH 和 grid W \text{grid}_W gridW:表示图像在空间维度上的分辨率。
- hidden_dim \text{hidden\_dim} hidden_dim:每个 token 的特征向量维度。
- 这种结构化表示捕获了图像的全局和局部信息。
语言模型
LLaVA 的语言部分采用了 Vicuna,这是基于 Meta 的 LLaMA 微调优化而成的开源语言模型。Vicuna 在多模态任务中发挥着重要作用,它通过结合视觉特征和文本特征来执行生成任务。
- 从文本中提取特征:
- Vicuna 作为一个语言模型,首先负责从输入的文本中提取语言特征。Vicuna 能够有效地理解文本内容,将输入的自然语言句子转化为高维的特征表示(例如,token embedding)。这些特征是进行多模态生成和推理的基础。
- 多模态融合后,进行文本的生成:
- 在 LLaVA 中,图像特征通过 CLIP 提取,并经过投影层转换为与文本特征相同的维度。这时,文本和图像的特征被拼接成一个统一的 token 序列。Vicuna 接收这些融合后的特征(图像 token 和文本 token)作为输入,进行生成任务。
- 通过其强大的生成能力,Vicuna 能够基于输入的视觉信息和文本提示,生成符合语义的自然语言文本。生成的文本可以是图像描述、回答视觉问答、推理结论或其他复杂的生成任务。
多模态融合
LLaVA 的多模态融合部分通过简单而高效的机制,将视觉和语言特征结合在一起。
-
对齐机制:
- 图像特征的维度 hidden_dim \text{hidden\_dim} hidden_dim 和语言模型的嵌入维度 emb_dim \text{emb\_dim} emb_dim 可能不一致。
- 为此,使用了一个线性投影层
W
W
W 对图像特征进行变换:
Projected Features = Vision Features ⋅ W \text{Projected Features} = \text{Vision Features} \cdot W Projected Features=Vision Features⋅W- 线性投影的输出形状为 [ 1 , grid H × grid W , emb_dim ] [1, \text{grid}_H \times \text{grid}_W, \text{emb\_dim}] [1,gridH×gridW,emb_dim]。
-
特征拼接:
- 投影后的图像 token 与文本 token 按序列形式拼接在一起,形成一个长 token 序列:
Input Sequence = [ Image Tokens , Text Tokens ] \text{Input Sequence} = [\text{Image Tokens}, \text{Text Tokens}] Input Sequence=[Image Tokens,Text Tokens] - 这种设计允许语言模型通过注意力机制统一处理视觉和语言信息。
- 投影后的图像 token 与文本 token 按序列形式拼接在一起,形成一个长 token 序列:
在多模态融合阶段,LLaVA团队使用了轻量级的投影层将图像特征映射到语言模型的嵌入空间,论文中提到了,这是为了便于快速进行实验和优化。其实可以使用更复杂、更有效的图像-语言融合机制,如: Flamingo 中的 gated cross-attention 和 BLIP-2 中的 Q-former 等方法。
BLIP2 的详细内容参考:
cross-attention是早期扩散模型的融合技术,感兴趣的可以参考:
在DiT论文中使用了三种多模态融合技术,cross-attention是其中一种,感兴趣可以参考:
总结
- 视觉编码器:
- CLIP ViT-L/14 作为视觉编码器,从图像中提取结构化的特征。通过 CLIP,图像被转化为固定维度的特征嵌入,这些特征为后续的多模态融合提供视觉信息。
- 语言模型:
- 采用基于 LLaMA 微调优化的 Vicuna,这使得模型在多模态任务中能够有效地处理文本输入。Vicuna 主要负责从文本中提取特征,并结合视觉信息进行多模态任务的生成。
- 多模态融合:
- 视觉特征和文本特征通过 线性投影 和 token 拼接 的方式进行融合。视觉特征经过投影后与文本特征对齐,形成一个统一的 token 序列,然后输入到语言模型中进行生成任务。
训练细节
LLaVA 模型在训练过程中分为两个阶段:特征对齐预训练 和 端到端微调。
阶段1:特征对齐预训练
-
原因:由于 CLIP 的视觉编码器和语言模型的词嵌入(word embedding)不在同一个语义空间,因此需要这个阶段来确保视觉和语言特征可以有效对齐。
-
目标:将图像特征与文本词嵌入(word embedding)对齐,对图像特征进行变换,将其转换到文本的语义表达空间,使得图像和文本能够在统一的语义空间内进行操作。
-
步骤:
- 数据集:在 CC3M 数据集(一个包含大量图像和文本对的数据集)上进行预训练。
- 冻结模型权重:在这个阶段,视觉编码器(Vision Encoder) 和 LLM(大型语言模型,如 Vicuna)保持权重不变。
- 训练插值层:唯一需要训练的是 投影层(Projection W) 的权重,该层用于将从 CLIP 提取的视觉特征(图像 token embedding)映射到与文本特征(文本 word embedding)相同的语义空间。
- 对齐目标:通过训练,最大化图像特征与文本词嵌入之间的对齐概率,即让图像和文本特征在同一语义空间中更加接近。
阶段2:端到端微调
-
目标:通过端到端微调,优化投影层和语言模型,以提升模型在多模态任务中的表现,特别是生成和推理任务。
-
步骤:
- 数据集:使用 生成的指令数据,包括 对话、详细描述 和 复杂推理 数据,进行训练。
- 冻结视觉编码器:在这个阶段,依然冻结 视觉编码器(Vision Encoder) 的权重不变,只更新语言模型和投影层的权重。
- 更新模型权重:训练过程中会同时更新 投影层(Projection W) 和 LLM语言模型 的权重,以适应下游任务。
- 任务类型:
- Multimodal Chatbot:训练模型理解和生成基于图像和文本的对话。LLaVA在多模态聊天机器人实验中表现出色,能够准确回答用户的问题,并提供详细的描述和复杂的推理。与BLIP-2和OpenFlamingo相比,LLaVA在对话、详细描述和复杂推理任务上的表现均优于对手。
- Science QA:训练模型处理图像和文本的科学问答任务。在科学问答数据集上,LLaVA在无图像上下文的问题上达到了90.92%的准确率,接近当前最优方法MM-CoTBase的91.68%。通过与GPT-4的集成,LLaVA的最终准确率达到了92.53%,刷新了现有方法的记录。
总结
- 阶段1:特征对齐预训练,通过训练投影层来对齐图像和文本特征,使它们在同一语义空间中。
- 阶段2:端到端微调,通过在具体任务(如对话生成和科学问答)上进行微调,进一步提升模型的多模态生成和推理能力。
这两个阶段结合起来,帮助 LLaVA 模型从特征对齐到多模态任务的优化,实现高效的图像-文本融合和生成能力。
LLaVA的训练过程中对多轮对话实验了一些策略:
- 多轮对话数据生成:为每张图片生成多轮问题和答案的对话数据,形成图像和文本的交互序列。
- 指令构建:
- 第一轮:随机选择图片和问题的顺序。
- 后续轮次:指令设置为当前轮次的问题。
- 多模态指令-跟随序列格式化:通过上述构建方式,确保图像和文本数据以统一的格式输入模型,保证多模态数据的有效融合。
- 语言模型指令调优:对语言模型进行自回归训练,使其在给定图像和指令的条件下,生成符合上下文的回答。
这种策略通过结合图像与文本的多模态信息,优化语言模型的生成能力,适应复杂的多模态任务。
实验
- Multimodal Chatbot:LLaVA在多模态聊天机器人实验中表现出色,能够准确回答用户的问题,并提供详细的描述和复杂的推理。与BLIP-2和OpenFlamingo相比,LLaVA在对话、详细描述和复杂推理任务上的表现均优于对手。
- Science QA:在科学问答数据集上,LLaVA在无图像上下文的问题上达到了90.92%的准确率,接近当前最优方法MM-CoTBase的91.68%。通过与GPT-4的集成,LLaVA的最终准确率达到了92.53%,刷新了现有方法的记录。
LLava 1.5模型
论文
Improved Baselines with Visual Instruction Tuning
LLaVA 1.5模型的改进
LLaVA 1.5 在多个方面进行了增强,包括语言模型的更新、插值层的升级、视觉编码器分辨率的提升,以及数据质量的改进,这些都共同推动了模型的性能提升,使得LLaVA 1.5能够在多模态任务上取得更好的效果。
- LLM模型:
- Vicuna v1.5 13B:LLaVA 1.5 使用了更大、更强的语言模型——Vicuna v1.5(13B参数),相较于LLaVA原版使用的语言模型,Vicuna v1.5 具有更强的语言理解和生成能力,特别是在多模态任务中表现出色。
- 融合(插值层):
- MLP层:LLaVA 1.5 将原先的单一线性投影层(Projection Layer)替换为更复杂的多层感知机(MLP)。MLP具有多个线性层堆叠,并能捕捉更复杂的非线性关系,这有助于更好地对齐视觉和语言特征,从而提升多模态生成效果。
- Vision Encoder(视觉编码器):
- CLIP ViT-L/336px:在LLaVA 1.5中,输入图像的分辨率被提高到336像素(相比LLaVA的224像素)。这种分辨率提升使得模型能够提取更多细节,从而更好地理解图像中的内容,提升对图像的细节捕捉能力。
- 更高质量的数据:
- 数据质量的提升通常意味着使用了更丰富、更具多样性且标注更加精准的训练数据集。这有助于提高模型的表现,尤其是在更复杂的多模态任务上。
LLava 1.6(LLaVA-NeXT)模型
论文
LLaVA-NeXT: Improved reasoning, OCR, and world knowledge
LLaVA 1.5模型的改进
LLaVA 1.6在多个方面进行了重要升级,包括视觉编码器分辨率的提升、语言模型参数量的大幅增加、OCR能力的增强以及视觉对话性能的改进。这些改进使得LLaVA 1.6在图像理解、语言生成、推理和OCR任务上都达到了新的高度,表现更加出色。
- Vision Encoder分辨率:
- LLaVA引入了“AnyRes”技术。这项技术使模型具有适应性,能够根据输入图像的不同分辨率进行调整,从而优化图像处理过程。
- 支持更大的输入分辨率,新增的分辨率包括672x672、336x1344、1344x336等。这些更高的分辨率允许模型捕捉更多的图像细节,从而增强其对图像的理解能力。
- 还支持通过图片裁切、编码和合并的方式处理不同分辨率的输入,进一步增强了视觉编码器的灵活性和表现。
- LLM模型参数量大升级:
- LLaVA 1.6将语言模型(LLM)的参数量从1.5版本的13B提升到34B。这一升级使得模型具有更强的语言理解和生成能力,尤其在处理复杂的多模态任务时,表现得更加出色。
- OCR能力提升:
- OCR(光学字符识别)能力的提升使得LLaVA 1.6在图像中的文字识别和推理能力上有了显著进展。通过改进指令数据集的构建,LLaVA 1.6能够更好地进行OCR任务,提升了视觉推理的准确性。
- 更好的视觉对话:
- 更好的视觉对话,更多场景,覆盖不同应用,以及更好的世界知识和逻辑推理。它能够根据图像内容提供更丰富、更精确的回答,进一步增强了多模态交互的能力。
- 高效部署和推理
- 高效的推理和部署能力是LLaVA 1.6的亮点之一,尤其是在资源受限的环境下,其优化的推理框架(如SGLang)能够在保证模型表现的同时,提升推理速度和响应能力。这对于实际应用场景非常重要,尤其是在实时处理需求高的任务中。
Reference
【LLM多模态】LLava模型架构和训练过程 | CLIP模型
一文读懂多模态大模型:LLaVA系列 | 从图像到视频的内容理解
历史文章
机器学习
机器学习笔记——损失函数、代价函数和KL散度
机器学习笔记——特征工程、正则化、强化学习
机器学习笔记——30种常见机器学习算法简要汇总
机器学习笔记——感知机、多层感知机(MLP)、支持向量机(SVM)
机器学习笔记——KNN(K-Nearest Neighbors,K 近邻算法)
机器学习笔记——朴素贝叶斯算法
机器学习笔记——决策树
机器学习笔记——集成学习、Bagging(随机森林)、Boosting(AdaBoost、GBDT、XGBoost、LightGBM)、Stacking
机器学习笔记——Boosting中常用算法(GBDT、XGBoost、LightGBM)迭代路径
机器学习笔记——聚类算法(Kmeans、GMM-使用EM优化)
机器学习笔记——降维
深度学习
深度学习笔记——优化算法、激活函数
深度学习——归一化、正则化
深度学习——权重初始化、评估指标、梯度消失和梯度爆炸
深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总
深度学习笔记——卷积神经网络CNN
深度学习笔记——循环神经网络RNN、LSTM、GRU、Bi-RNN
深度学习笔记——Transformer
深度学习笔记——3种常见的Transformer位置编码
深度学习笔记——GPT、BERT、T5
深度学习笔记——ViT、ViLT
深度学习笔记——DiT(Diffusion Transformer)
深度学习笔记——CLIP、BLIP
深度学习笔记——AE、VAE
深度学习笔记——生成对抗网络GAN
深度学习笔记——模型训练工具(DeepSpeed、Accelerate)
深度学习笔记——模型压缩和优化技术(蒸馏、剪枝、量化)
深度学习笔记——模型部署
深度学习笔记——VQ-VAE和VQ-VAE-2