大家好,这里是好评笔记,本文为试读,查看全文请移步公主号:Goodnote。本文详细介绍多模态模型:LLaVA。处理包含图像和文本的多模态数据,并生成合理准确的回答。
@[toc]
论文
LLaVA(Large Language and Vision Assistant)是一种多模态模型,将视觉和语言能力结合在一起,用于图像-文本理解和生成任务。以下是对LLaVA的详细介绍:
模型架构
LLaVA(Large Language and Vision Assistant)是一个简单高效的多模态模型,它通过映射矩阵连接一个预训练的 视觉编码器(CLIP ViT-L/14) 和一个 大语言模型(Vicuna) 实现跨模态理解,再使用Vicuna的解码能力生成自然语言输出。
- 输入图像,经过视觉编码器得到图像特征,之后通过多模态融合的线性投影处理,得到H_v(与文本特征对齐,达到同维度)。
- 输入文本,经过文本编码器得到图像特征。
- 图像特征和图像特征,经过文本解码器,得到。
视觉编码器
LLaVA 的视觉编码器采用了 CLIP 的 Vision Transformer (ViT-L/14),这是一个强大的预训练视觉模型。 详细内容参考:多模态论文笔记——CLIP、BLIP
架构与功能:
- CLIP ViT-L/14:由 OpenAI 提出的多模态模型,使用图像编码器和文本编码器对图像-文本对进行联合训练。
- 输入图像经过编码器后,被转化为一个二维网格的嵌入表示(feature map),其形状为:
- $\text{grid}_H$ 和 $\text{grid}_W$:表示图像在空间维度上的分辨率。
- $\text{hidden\_dim}$:每个 token 的特征向量维度。
- 这种结构化表示捕获了图像的全局和局部信息。
语言模型
LLaVA 的语言部分采用了 Vicuna,这是基于 Meta 的 LLaMA 微调优化而成的开源语言模型。Vicuna 在多模态任务中发挥着重要作用,它通过结合视觉特征和文本特征来执行生成任务。
- 从文本中提取特征:
- Vicuna 作为一个语言模型,首先负责从输入的文本中提取语言特征。Vicuna 能够有效地理解文本内容,将输入的自然语言句子转化为高维的特征表示(例如,token embedding)。这些特征是进行多模态生成和推理的基础。
- 多模态融合后,进行文本的生成:
- 在 LLaVA 中,图像特征通过 CLIP 提取,并经过投影层转换为与文本特征相同的维度。这时,文本和图像的特征被拼接成一个统一的 token 序列。Vicuna 接收这些融合后的特征(图像 token 和文本 token)作为输入,进行生成任务。
- 通过其强大的生成能力,Vicuna 能够基于输入的视觉信息和文本提示,生成符合语义的自然语言文本。生成的文本可以是图像描述、回答视觉问答、推理结论或其他复杂的生成任务。
多模态融合
LLaVA 的多模态融合部分通过简单而高效的机制,将视觉和语言特征结合在一起。
-
对齐机制:
- 图像特征的维度 和语言模型的嵌入维度 可能不一致。
- 为此,使用了一个线性投影层 对图像特征进行变换:
- 线性投影的输出形状为 。
-
特征拼接:
- 投影后的图像 token 与文本 token 按序列形式拼接在一起,形成一个长 token 序列:
- 这种设计允许语言模型通过注意力机制统一处理视觉和语言信息。
在多模态融合阶段,LLaVA团队使用了轻量级的投影层将图像特征映射到语言模型的嵌入空间,论文中提到了,这是为了便于快速进行实验和优化。其实可以使用更复杂、更有效的图像-语言融合机制,如: Flamingo 中的 gated cross-attention 和 BLIP-2 中的 Q-former 等方法。 BLIP2 的详细内容参考: cross-attention是早期扩散模型的融合技术,感兴趣的可以参考: 在DiT论文中使用了三种多模态融合技术,cross-attention是其中一种,感兴趣可以参考:
详细全文请移步公主号:Goodnote。