核心要点

  • 视觉编码器(多用 CLIP ViT)把图像编码成一组视觉特征向量

  • 投影层(线性层或 MLP)把视觉特征映射到 LLM 的词嵌入空间,变成视觉 token

  • 视觉 token 与文本 token 拼接成统一序列,送入冻结或微调的 LLM 处理

  • 两阶段训练:先用图文对预训练对齐投影层,再用指令数据做视觉指令微调

标准回答

核心思路:把图像翻译成 LLM 能读的 token

LLM 只接受 token 嵌入序列。要让它「看见」图像,需把图像特征转成与文本 token 同空间的向量。LLaVA 的做法分三步:

1. 视觉编码器

用预训练的 CLIP 视觉编码器(ViT)提取图像特征,得到一组 patch 级特征向量(视觉表示已含丰富语义)。视觉编码器通常冻结。

2. 投影层对齐

关键是一个投影模块(LLaVA 早期用单线性层,后用两层 MLP),把视觉特征映射到 LLM 的词嵌入维度与空间,转化为若干「视觉 token」。这步是图像与语言对齐的桥梁。

3. 拼接送入 LLM

视觉 token 与文本提示的 token 嵌入拼接成一条序列,一起喂给 LLM。LLM 用自回归方式生成回答,即可完成看图问答、描述、推理等任务。

两阶段训练

先用图文对训练,仅更新投影层做特征对齐;再用视觉指令数据(图 + 指令 + 回答)做指令微调,可同时微调投影层与 LLM。这样以较小代价把强 LLM 升级为多模态模型。

常见误区

⚠️ 常见踩坑

LLaVA 不是从零训练多模态模型,而是「冻结视觉编码器 + 复用预训练 LLM + 训练中间投影层」;投影层不是简单 resize,而是把视觉特征对齐到 LLM 的语义嵌入空间。

追问

追问 1投影层为什么是 LLaVA 的关键?

它是连接视觉与语言两个独立预训练模型的桥梁,把 CLIP 输出的视觉特征翻译成 LLM 词嵌入空间里的「伪 token」。只有对齐好,LLM 才能正确理解图像内容。LLaVA 第一阶段就专门训练这个投影层做图文对齐。

追问 2LLaVA 的两阶段训练分别做什么?

第一阶段「特征对齐预训练」:冻结视觉编码器和 LLM,仅训练投影层,用图文对让视觉 token 对齐到语言空间。第二阶段「视觉指令微调」:用图 + 指令 + 回答的数据训练,可一并微调投影层与 LLM,赋予模型遵循指令、多轮看图对话的能力。

追问 3把图像编码成固定数量 token 与可变数量各有何取舍?

固定数量(如用 Q-Former/重采样器压成 N 个 token)控制序列长度、推理省算力,但可能丢高分辨率细节;保留全部 patch token(如原始 LLaVA)信息更全、利于 OCR/细粒度任务,但序列长、显存和延迟高。高分辨率场景常用切图或重采样折中。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。