跳转至

视觉 语言预训练模型(理解与对齐)

Q1:CLIP 的双塔结构是如何工作的?它的文本编码器和图像编码器通常选用什么架构?

🏗️ CLIP 由图像编码器和文本编码器两个独立塔组成,通过对比学习将它们映射到共享的语义空间。

工作流程:

  1. 输入处理:一个训练批次包含 N 对图文 (I_i, T_i)

  2. 各自编码:

  3. 图像编码器将图像映射为特征向量 v_i(经线性投影并 L2 归一化)。
  4. 文本编码器将文本映射为同维度的特征向量 t_i(同样归一化)。

  5. 相似度矩阵:计算 N×N 的余弦相似度矩阵 S,其中 S_{i,j} = v_i^T t_j / ττ 为温度系数。

  6. 对称 InfoNCE 损失:最大化对角线匹配对的相似度,最小化非对角线不匹配对的相似度。总损失为 (L_{I→T} + L_{T→I}) / 2

编码器选型:

  • 图像编码器:CLIP 原论文实验了两种架构:
  • ResNet 系列(ResNet-50、ResNet-101、EfficientNet 等),提取全局池化特征后投影。
  • Vision Transformer (ViT):将图像分块,通过 Transformer 后取 [CLS] token 或全局池化。ViT-L/14 是常用变体,性能和效率最佳。

  • 文本编码器:使用 Transformer,如 12 层、512 宽的 GPT-2 风格解码器(仅自注意力,因果掩码)或 BERT 风格编码器。最终取最后一个 token 的输出(或 [EOS])作为文本全局表示。

🔗 双塔结构使得图像和文本可以完全独立编码,离线计算图像库向量,在线仅需编码查询文本并做点积匹配,天然适合大规模检索。

image.png


Q2:CLIP 在推理时如何对一个新类别进行零样本分类?写出 prompt 构造和相似度计算的关键步骤。

🎯 CLIP 零样本分类的实质是将图像分类转化为图像-文本匹配,用类别的文本描述作为分类器的权重。

关键步骤:

  1. 构造文本分类器(Prompt 集成):
  2. 对每个目标类别 c,使用多个手工设计的 Prompt 模板(如 "a photo of a {c}", "a centered satellite photo of a {c}"),填入类别名,生成多条描述。
  3. 将所有描述送入冻结的文本编码器,得到每个类别的归一化文本特征向量 t_c(对多条模板的特征取均值)。

  4. 图像特征提取:

  5. 将待分类图像送入冻结的图像编码器,得到归一化图像特征向量 v

  6. 相似度计算与预测:

  7. 计算 v 与所有 t_c 的余弦相似度,得到相似度向量 S
  8. 通过 softmax 计算类别概率:p(y=c | I) = exp(S_c / τ) / Σ_k exp(S_k / τ)
  9. 选择概率最高的类别作为预测结果。

📝 Prompt 构造的细节:

  • CLIP 在 ImageNet 上使用 80 个模板(如 "a bad photo of a {class}", "a origami {class}"),以覆盖不同语境和风格的文本。

  • 对于细粒度任务,还可加入领域提示,如 "a photo of a {class}, a type of aircraft"

  • 这种集成有效平滑了单一 Prompt 的偏差,提升零样本准确率 3-5 个百分点。


Q3:BLIP 提出的 CapFilt 机制是如何运作的?解决了什么问题?

🧹 CapFilt(Captioning and Filtering)是 BLIP 的数据清洗与增强闭环,旨在解决网络爬取图文对中文本描述质量低下、噪声大的问题。

运作流程(两阶段循环):

  1. 初始训练:使用原始带噪图文对(如 Conceptual Captions、SBU Captions)预训练一个基础多模态模型(包括图像编码器、文本编码器和解码器)。

  2. Captioner(图像字幕生成器):

  3. 使用预训练模型的文本解码器,对网络图片生成高质量的合成描述(Caption)。
  4. 这为图片提供了额外的、可能与原描述互补的新文本,增加正样本多样性。

  5. Filter(过滤器):

  6. 使用预训练模型的图文匹配(ITM)头部,对原始图文对和生成的合成图文对进行匹配度打分。
  7. 过滤掉匹配分数低的噪声对(如原描述与图像无关,或生成的描述质量差)。
  8. 保留高置信度的图文对。

  9. 数据合并再训练:将过滤后的原始对和新生成的合成对合并,重新预训练模型。这个过程可以迭代多次,不断提升数据和模型质量。

解决的问题:

  • 原始网络文本噪声:大量图文对的文字描述不准确、无关甚至错误,直接训练会损害模型语义对齐。

  • 数据量限制:通过生成合成描述,扩充了高质量训练数据,尤其增强了低频概念和长尾类别的覆盖。

  • 提升模型性能:CapFilt 让 BLIP 在检索、字幕、VQA 等多个下游任务上大幅超越同期模型。

🔄 本质上是利用模型自身能力进行自我数据清洗和增强,形成数据-模型相互提升的飞轮。


Q4:对比 BLIP 和 CLIP 在架构和训练目标上的核心区别。

⚖️ BLIP 与 CLIP 均属于视觉-语言预训练的经典工作,但设计哲学不同。

查看内嵌表格

💡 CLIP 是“一把锋利的刀”,专攻全局对齐;BLIP 是“瑞士军刀”,理解与生成兼顾。BLIP-2 则将 BLIP 的思路与冻结的大语言模型结合,开辟了新的范式。


Q5:LLaVA 如何将视觉编码器与 LLM 连接?使用了什么类型的投影层?

🔌 LLaVA 的目标是让预训练的 LLM “看见”图像,它通过一个轻量级线性投影层将视觉特征映射到 LLM 的词嵌入空间。

连接机制:

  1. 视觉编码器:使用预训练的 CLIP ViT-L/14(冻结或微调均可),输入图像 I,提取最终层(或倒数第二层)的特征序列。通常取 [CLS] 之前的所有 patch token 特征,形成一个 N_p × D_vis 的特征序列(如 256 个 patch,每个 1024 维)。

  2. 投影层(Adapter):一个简单的线性层(全连接),将每个 patch 的特征从 D_vis 维映射到 LLM 的嵌入维度 D_llm。公式为 H_vis = W * Z_vis,其中 W ∈ R^{D_llm × D_vis}

  3. 注入 LLM:投影后的视觉 token 序列 H_vis 被视为“视觉单词”嵌入,直接与文本指令的嵌入 token 序列拼接,送入 LLM 的 Transformer 层进行自回归生成。

为什么用简单的线性投影?

  • LLaVA 的核心理念是极简设计,希望仅通过一个轻量连接器就让冻结的 LLM 理解视觉,以最低成本验证多模态对话能力。

  • 实验发现,单层线性投影即可有效对齐视觉特征与语言空间,且训练效率极高,无需复杂的 Q-Former 或交叉注意力。

🔄 后来 LLaVA-1.5 改进为使用 两层 MLP + GELU 作为投影层,略微提升非线性拟合能力,但本质仍是简单的特征映射。


Q6:LLaVA 的多模态指令遵循能力主要来自哪一步训练?对话数据如何构造?

🗣️ LLaVA 的强大指令遵循能力来自两阶段训练,核心在第二阶段的指令微调。

训练阶段:

  1. 第一阶段:特征对齐预训练
  2. 仅训练视觉投影层,冻结视觉编码器和 LLM。
  3. 数据:使用 CC3M 中的约 595K 图文对,每个图像配一个简单的描述文本。任务:给定图像,生成描述(语言建模损失)。
  4. 目的:让投影层学会将视觉 token 映射到 LLM 的词嵌入空间,建立初始的视觉-语言桥梁。

  5. 第二阶段:端到端指令微调

  6. 此时冻结视觉编码器,更新投影层和 LLM(或仅更新 LLM)。
  7. 数据:使用多模态对话指令数据,是 LLaVA 能力的灵魂。

对话数据构造方法(关键创新):

  • 利用 GPT-4/LLM 的文本能力,将已有的图像描述和物体检测框,重新组织为多样化的多轮对话、复杂推理和详细描述指令数据。

  • 例如:

  • 图像字幕数据 → 用 GPT-4 改写为问答对:“这张图里有什么?”、“描述这个场景”。
  • 物体检测标注(COCO) → 转为位置推理对话:“图中有几个人?”、“红色的车在什么位置?”。
  • 随机加入反事实问题、常识推理、比较等,增加多样性。

  • 这样,用纯文本 GPT-4 自动生成了 158K 高质量多模态指令数据(LLaVA-Instruct-158K),成本远低于人工标注。

🧪 第二阶段在这种指令数据上微调后,LLaVA 展现出令人惊叹的多轮对话、推理和指令遵循能力,验证了视觉-语言指令微调的范式。


Q7:Q-Former 在 BLIP-2 中起什么作用?为什么被称为“信息瓶颈”?

🍾 Q-Former(Querying Transformer)是 BLIP-2 连接冻结的图像编码器和冻结的 LLM 的核心桥梁。

作用:

  1. 视觉特征提取与压缩:Q-Former 内部有一组可学习的 query tokens(如 32 个),通过交叉注意力与冻结的图像编码器输出的所有 patch 特征进行交互。这些 query 从海量图像特征中动态提取与文本最相关的视觉信息,输出固定数量(32个)的紧凑视觉 token。

  2. 多任务对齐训练:Q-Former 同时进行三个任务:

  3. 图文对比学习 (ITC):对齐 query 输出的全局表示与文本的 [CLS]
  4. 图文匹配 (ITM):判断图文是否匹配,学习细粒度对齐。
  5. 语言建模 (LM):给定图像,用 Q-Former 自带的文本解码器生成字幕,迫使 query 提取足够视觉信息。

  6. 与 LLM 连接:训练后,Q-Former 输出的 32 个视觉 token 直接作为软视觉前缀,拼接到 LLM 的文本嵌入前,从而让冻结的 LLM “理解”图像。

为何称为“信息瓶颈”?

  • 固定低维度压缩:无论输入图像有多少 patch(如 257 个),Q-Former 都强制通过 32 个 query 进行压缩,形成信息瓶颈。

  • 过滤无用信息:这迫使 query 必须学会忽略图像中的低级冗余(纹理、背景),只抽取与语言语义最相关的高层概念(物体、关系、属性)。

  • 减轻 LLM 负担:如果不压缩,大量视觉 token 会淹没 LLM 的输入窗口,且冻结的 LLM 难以处理原始视觉特征的分布。瓶颈设计让 LLM 接收到的信息与它熟悉的文本 token 分布更一致,加速对齐。

📌 因此,Q-Former 的瓶颈结构虽小,却是冻结大模型多模态化的关键催化剂。


Q8:Flamingo 的门控交叉注意力层有什么独特设计?如何支持交错图文数据的理解?

🦩 Flamingo 是由 DeepMind 提出的处理任意交错图文序列的多模态大模型。其核心创新是在冻结的 LLM 中插入门控交叉注意力(Gated XATTN) 层。

独特设计:

  • 插入位置:在 LLM 的每个 Transformer 层中,在自注意力与前馈网络之间,插入一个额外的交叉注意力层。该层以 LLM 的隐藏状态为 Query,从视觉特征(由独立的视觉编码器提取并缓存)中聚合信息。

  • 门控机制:交叉注意力层的输出并非直接与原隐藏状态相加,而是先乘以一个可学习的门控参数 tanh(α),再相加。初始时 α=0,保证插入新层不会破坏 LLM 原有的语言能力,训练中逐步打开门控,让视觉信息融入。

如何支持交错图文数据:

  • 视觉编码器先对所有出现的图像/视频提取特征,并存储在记忆库中,为每张图分配一个特殊标记 <image>

  • 输入的文本序列中,<image> 标记出现在对应图片的自然语言描述的位置。例如:"这是 <image> 的图片。图中是 <image>,他在..."

  • 在 LLM 处理时,当遇到 <image> token,Flamingo 的交叉注意力层从该图片的特征中检索信息;其他 token 则不关注视觉(或关注空特征)。

  • 通过这种机制,模型可以自然地处理图文交错、多图对话、视频帧序列与文本交织等复杂输入,实现了强大的少样本上下文学习能力。

🚪 门控交叉注意力是一种对 LLM 最小侵入的视觉注入,优雅地保留了预训练语言能力,同时实现了灵活的多模态交互。


Q9:CoCa 模型如何将对比损失和生成损失结合在一个框架下?

🧬 CoCa(Contrastive Captioner)是 Google 提出的统一对比与生成的多模态模型,通过巧妙的设计让一个模型同时擅长理解和生成。

架构设计:

  • 共享编码器:图像编码器(ViT)处理图像,文本编码器处理文本。文本解码器部分为自回归结构。

  • 关键分流:图像编码器输出两种表示:

  • 全局向量([CLS] token):用于对比损失。
  • 序列特征(所有 patch token):用于生成损失(作为解码器交叉注意力的输入)。

训练目标联合:

  1. 对比损失(解码器头部):
  2. 使用图像全局向量 v 和文本解码器产生的文本全局向量 t(取特殊 token 的输出),计算对称 InfoNCE 损失。
  3. 这与 CLIP 相同,提供强大的全局跨模态对齐能力,适用于检索和零样本分类。

  4. 生成损失(解码器主体):

  5. 使用标准的自回归交叉熵损失进行图像字幕生成。文本解码器在交叉注意力层中关注图像序列特征,逐词生成描述。
  6. 这提供了细粒度的视觉理解和生成能力。

统一框架的关键:

  • 将文本解码器同时作为文本编码器(取特殊 token 输出用于对比)和文本解码器(自回归生成)。训练时,对比损失的文本特征通过前向传播得到,生成损失的文本序列通过自回归解码得到,两者共享大部分参数。

  • 总损失:L = λ_contrast * L_contrast + λ_caption * L_caption。两者联合优化,使得模型在对齐全局语义的同时,保留逐词的生成能力。

💡 CoCa 证明了对比和生成并非对立,通过架构分流可以互相促进,达到 SOTA 的检索与字幕性能。


Q10:在高分辨率图像理解中,模型常采用“动态分块”策略,请解释其原理和优势。

🧩 高分辨率图像(如 4K 文档、遥感图)直接缩放到模型标准输入(如 336×336)会丢失大量细节。动态分块策略旨在在可控的计算复杂度下保留高分辨率信息。

原理:

  1. 自适应分块:根据图像原始分辨率与目标分辨率(如 336×336)的比值,计算需要切割的块数和切割方向。例如,一张 672×336 的图,可水平切为两个 336×336 的子块。

  2. 全局视图与局部块并行:

  3. 将原图缩放到一个全局缩略图(336×336),获得整体上下文。
  4. 同时,按分割策略切出多个局部高分辨率子块。
  5. 全局图和所有子块分别送入视觉编码器(共享权重),得到各自的特征序列。

  6. 特征拼接与位置编码:

  7. 全局特征序列与所有子块特征序列在 token 维度拼接,形成一个长序列。
  8. 为每个子块的特征添加可学习的位置编码,以区分其来源空间位置,保留二维空间结构。

  9. 送入后续处理:拼接后的高维特征直接输入 Q-Former、LLM 或后续 Transformer,进行跨块和全局-局部的交互。

优势:

  • 细节保留:对于文档 OCR、表格理解、细粒度物体识别,局部高分辨率信息被完整保留,而非通过插值丢失。

  • 计算可控:输入token数与分块数线性正比,可以通过限制最大分块数来约束总计算开销,比直接放大整图(token数平方增长)高效得多。

  • 动态适应:不同图像根据其尺寸和复杂度生成不同数量的块,实现“按需分配”计算资源。

📐 这种策略已被 LLaVA-1.5-HD、DeepSeek-VL 等先进模型采用,是目前平衡精度与效率的主流方案。


Q11:CLIP 的零样本能力上限受什么限制?为什么在一些细粒度分类上不如有监督模型?

🔬 CLIP 零样本能力的上限受限于其全局语义对齐的粒度和训练数据的覆盖与质量。

限制来源:

  1. 全局向量瓶颈:CLIP 将整张图像压缩为一个向量,丢失了空间信息和局部细节。对于需要区分“同种鸟类的不同品种”(如北极燕鸥 vs 普通燕鸥),判别依据往往是羽毛末端的微小色斑或喙的弧度,这些细节在全局池化后被淹没。

  2. 训练数据的长尾与噪声:尽管 CLIP 使用了 4 亿图文对,但细粒度类别(如特定汽车型号、稀有植物)的高质量描述稀少。模型学到的是类间粗粒度区分,缺乏类内精细差异的理解。

  3. 文本描述的粗糙性:零样本分类依赖类别名称的文本嵌入。对于“哈士奇”和“阿拉斯加雪橇犬”,仅靠类名难以捕获两者的细微视觉差异。即使使用 Prompt 模板,也无法弥补文本侧本身缺乏细粒度视觉描述的问题。

  4. 对比学习的优化目标:InfoNCE 损失鼓励“整体相似”,而非“局部判别”。它会让同类别图像的特征趋于集中,但可能忽略类内子结构的保持,导致对需要精细属性组合的类别区分能力弱。

与有监督模型的差距:

  • 有监督模型在细粒度分类的训练中,接收了类别边界经过精细标注的图像,可通过交叉熵损失直接优化类间边界,并在数据增强下学习到局部判别特征(如 attention 到鸟的翅膀花纹)。

  • CLIP 的零样本是“无监督检索”式的,缺乏这样的针对性信号。

📊 因此,CLIP 在通用粗粒度分类上逼近甚至超越有监督模型,但在需要局部细节、专业领域知识的任务上存在天然天花板。


Q12:对比 CLIP-ViT 和 CLIP-ResNet,哪种视觉编码器更适合做密集预测的迁移?为什么?

🔍 CLIP-ViT 更适合密集预测任务的迁移,如语义分割、目标检测、深度估计。原因如下:

  1. 保留空间结构:
  2. ResNet 通过多次下采样,最终输出一个高度抽象的特征图(如 7×7),空间分辨率极低,难以恢复精确的空间位置。
  3. ViT(Vision Transformer)将图像切成 patch(如 14×14 像素),在整个 Transformer 过程中保持 token 数量和空间对应关系不变(除 [CLS] 外)。即使最后提取 [CLS] 输出,中间层的 patch token 仍保留了 2D 空间信息。这对于密集预测需要逐像素/逐区域预测至关重要。

  4. 感受野与全局上下文:

  5. ViT 通过自注意力,每个 patch 从第一层起就拥有全局感受野,能更早建立长距离依赖,这对理解场景中物体间关系、分割大物体非常有利。
  6. ResNet 的感受野逐步扩大,早期层局部性强,对密集预测的上下文建模不如 ViT 直接。

  7. 特征层级多样性:

  8. ViT 各层的 patch 特征通常变化平滑,适合作为特征金字塔的输入。许多工作(如 DINO、MAE)证明了 ViT 的特征在密集预测上的优越性。
  9. ResNet 的多尺度特征(如 FPN)虽然也有效,但通过下采样获得的层级不如 ViT 均匀保留的 token 序列灵活。

🚀 实践中,CLIP-ViT 的 patch 特征可直接上采样或与解码器连接,在冻结或微调下均表现出色,成为密集预测的主流选择。


Q13:BLIP-2 的 Q-Former 内部注意力是如何在文本和视觉间交互的?是交叉注意力还是自注意力?

🧬 Q-Former 内部混合了自注意力和交叉注意力,两者交替使用,实现文本和视觉的深层交互。

Q-Former 的架构细节:

  • Q-Former 由两个子模块组成,各包含多个 Transformer 块:
  • 图像 Transformer:负责与冻结的图像编码器输出交互。
  • 文本 Transformer:负责与文本输入交互。

  • 交互方式:

  • 自注意力(Self-Attention):在图像 Transformer 内部,可学习的 query tokens 彼此进行自注意力,共享信息。在文本 Transformer 内部,文本 tokens 进行自注意力。
  • 交叉注意力(Cross-Attention):图像 Transformer 中的 query tokens 作为 Query,从冻结图像编码器输出的 patch 特征(作为 Key 和 Value)中提取视觉信息。这是视觉与 query 的交互。
  • 共享自注意力(Shared Self-Attention):query tokens 和文本 tokens 通过共享的自注意力层进行交互。即它们被拼接后,送入同一个自注意力模块,实现 query 与文本的相互关注。因此,文本与视觉的交互是通过 query 作为中介,在共享自注意力中完成的。

📌 简单说,Q-Former 没有直接让文本与视觉做交叉注意力,而是通过共享自注意力让文本关注到 query,而 query 已经通过交叉注意力吸收了视觉信息。这种设计保持了 query 作为“视觉语言中介”的信息瓶颈角色。


Q14:为什么 LLaVA 只用了一个简单的线性投影层就能取得不错的效果?这说明了什么?

🔌 LLaVA 使用一个单层线性投影将 CLIP 视觉特征映射到 LLM 的嵌入空间,就实现了强大的多模态理解能力。

成功原因:

  1. CLIP 视觉特征已高度语义化:CLIP 训练后的视觉特征已经与文本特征在语义空间中对齐,线性投影只需完成维度变换,无需复杂的空间重建或语义翻译。特征本身的语义内容已经非常适合 LLM 理解。

  2. LLM 的强大语言先验:现代 LLM(如 LLaMA、Vicuna)具有极强的语言理解和推理能力。一旦视觉特征被“翻译”成它可以接收的 token 序列,LLM 就能凭借其语言泛化能力,快速学习如何关注和整合视觉信息。

  3. 端到端指令微调的补偿:LLaVA 的两阶段训练中,第二阶段在高质量的多模态指令数据上进行微调。这弥补了线性投影可能存在的对齐不足,LLM 通过微调学会了如何“读取”这种简单的视觉 token。

这说明了什么?

  • 预训练特征的通用性与解耦性:好的视觉预训练(CLIP)已经将视觉信息编码为对语言友好的形式,极大降低了连接门槛。

  • 大模型的“放大器”效应:一个强大的 LLM 可以容忍甚至补偿前端相对简单的连接模块。

  • 简洁架构的价值:无需复杂的 Q-Former 或 Resampler,即可达到 competitive 效果,证明了过度的瓶颈设计并非必须,这激励了社区追求简单高效的设计(如 LLaVA-1.5 仅使用 MLP 投影)。

💡 这本质上是将“视觉-语言对齐”的重担部分从专用模块转移到了 LLM 的泛化能力上。


Q15:LLaVA-1.5 相比 LLaVA 做了哪些改进?比如响应格式、视觉编码器分辨率等。

🛠️ LLaVA-1.5 对原始 LLaVA 进行了多项务实优化,大幅提升了性能和数据效率。

主要改进:

  1. 视觉编码器升级:从 CLIP-ViT-L/14 换为 CLIP-ViT-L/14@336,即分辨率从 224×224 提升至 336×336。更高分辨率的输入保留了更多视觉细节,显著提升 OCR、文档理解和细粒度识别能力。

  2. 投影层增强:将单层线性投影替换为两层 MLP + GELU 激活,略微增加非线性映射能力,更好地将视觉 token 适配到 LLM 的语义空间。

  3. 响应格式统一:训练时要求模型仅输出答案,不输出推理过程或多余解释,并通过 Prompt 明确格式(如 ASSISTANT: 后直接回答)。这避免了冗长输出,简化了评估,且使训练更聚焦。

  4. 数据策略优化:使用了更多的多模态指令数据(如 ShareGPT、VQAv2、GQA、OKVQA 等学术数据集),并将它们统一转换为多轮对话格式,大幅丰富了训练数据。

  5. 训练效率提升:在第二阶段微调时,仅解冻 LLM 和投影层,冻结视觉编码器,且使用 LoRA 或全量微调等更高效方案。

📊 这些改进使 LLaVA-1.5 在多个基准上以更小规模超越了后续许多模型,成为简洁高效多模态模型的典范。


Q16:Qwen-VL 的位置感知视觉编码器是如何将位置信息嵌入到视觉特征中的?

📍 Qwen-VL 使用 位置感知的视觉编码器(Vision Transformer with Position-Aware),将原始图像中的2D 绝对位置信息显式地编码进视觉 token 中。

实现机制:

  1. 2D 位置编码:与标准 ViT 仅对 patch 序列使用一维位置编码不同,Qwen-VL 的视觉编码器为每个 patch 学习两个位置编码:一个对应行坐标,一个对应列坐标。它们可以相加或拼接后作为 patch 的位置偏置。

  2. 相对位置编码:在自注意力计算中,Qwen-VL 还引入了相对位置偏置(如 T5 或 Swin Transformer 中的相对位置偏置),让模型更好地利用 patch 间的空间邻近关系。

  3. 位置嵌入的注入位置:位置编码被加到自注意力的 Query 和 Key 上,影响注意力权重的计算,从而使模型对空间位置敏感。

  4. 结合文本位置指令:在下游训练中,Qwen-VL 可接收带有位置信息的问题(如“图片左下方的红色汽车是什么品牌?”),视觉编码器的位置感知表示与文本中的位置词对应,实现空间推理。

🎯 这种显式的位置感知设计,使 Qwen-VL 在理解图像中的空间关系、区域描述和物体定位等任务上表现突出,优于单纯依赖全局池化的模型。


Q17:多模态模型中的“视觉重采样器”(如 Perceiver Resampler)与 Q-Former 的设计哲学有何不同?

🧠 两者都是视觉特征压缩器,但哲学路径不同。

查看内嵌表格

📌 Q-Former 更“重”且与语言深度耦合,强调语义对齐;Perceiver Resampler 更“轻”和通用,强调高效压缩。


Q18:Flamingo 中的 Perceiver Resampler 如何将变长的视频帧特征压缩成固定长度?

🎞️ Flamingo 通过 Perceiver Resampler 处理变长视频输入的关键是可学习的 latent queries。

压缩过程:

  1. 输入:从视频中采样 T 帧,每帧经视觉编码器得到 N_p 个 patch token。总特征序列长度为 T × N_p,这是一个巨大的变长序列。

  2. Latent Queries:Perceiver Resampler 维护一组固定数量的可学习向量 Q,形状为 (K, D),其中 K 是预设的(如 64 或 128),不随 T 变化。

  3. 交叉注意力压缩:

  4. Q 作为 Query,整个视频帧的 T × N_p 个特征拼成的序列作为 Key 和 Value,进行交叉注意力。
  5. 输出是更新后的 Q,形状仍为 (K, D)
  6. 这个过程相当于用固定数量的“探针”从整个视频特征池中动态提取最有用的信息,并压缩到这 K 个向量中。

  7. 与 LLM 交互:这 K 个压缩后的视觉 token 被送入 LLM 的门控交叉注意力层,作为视觉记忆。

⚙️ 通过这种方式,无论视频长短,最终提供给 LLM 的视觉 token 数量是恒定的,解决了视频输入时 token 数爆炸的问题,同时也保留了选择关键帧信息的能力。


Q19:为什么在多模态预训练中,很多模型会同时进行图文对比和图文匹配两个损失?

⚖️ 对比损失(ITC)与匹配损失(ITM)是互补的,它们从不同粒度优化跨模态对齐。

为什么同时需要两者:

  • ITC(对比损失):提供全局判别信号。它最大化匹配图文对的整体相似度,同时推远不匹配对。这让模型学到全局一致的语义概念,且能有效利用大量负样本。但 ITC 对细粒度对齐不敏感,无法捕捉单词与图像区域的局部对应。

  • ITM(匹配损失):提供细粒度判别信号。它是一个二分类任务,判断一对图文是否匹配。为了做好这个任务,模型必须学习更精细的跨模态线索(如属性、关系是否一致)。ITM 还常用于难负例挖掘,即用 ITC 初筛后的高分不匹配对作为 ITM 的困难负样本,直接优化模型对微小不匹配的识别能力。

协同效应:

  • ITC 提供全局基础,ITM 在全局基础上进行精修。两者联合通常使检索和推理能力都更强。

  • 例如,BLIP、ALBEF 等工作显示,结合两者可以显著超越只用一种损失的模型。

🎯 因此,ITC 和 ITM 分别解决“大致像不像”和“细节对不对”,是多模态理解任务中常用的组合拳。


Q20:BLIP-2 中第二阶段的视觉-语言生成训练,为什么只解冻 Q-Former 而不解冻 LLM?

🧊 BLIP-2 两阶段训练中,第一阶段训练 Q-Former 对齐视觉和文本,此时 LLM 完全冻结且不参与。第二阶段进行视觉-语言生成时,依然冻结 LLM,只训练 Q-Former。

原因:

  1. 保护 LLM 的语言能力:冻结的 LLM 已经在海量纯文本上预训练,拥有强大的语言生成、推理和常识能力。如果解冻并用多模态数据微调,很可能发生灾难性遗忘,损害其原有的语言能力,且对多模态数据的过拟合风险高。

  2. Q-Former 的桥梁作用:BLIP-2 的设计目标就是让 Q-Former 成为一个通用的、语言对齐的视觉接口。第二阶段通过生成损失训练 Q-Former,是让它学会将视觉信息翻译成 LLM 能理解的、适合生成任务的“视觉提示”。这完全可以在不改变 LLM 的情况下完成。

  3. 计算效率与泛化:冻结 LLM 极大减少了训练参数量和显存消耗,且使得 LLM 作为标准组件,可替换不同型号。这种解耦设计是 BLIP-2 的核心哲学。

📌 这类似于给 LLM 加一个“视觉读卡器”,而不修改 LLM 本身的“大脑”。


Q21:InstructBLIP 是如何将指令感知注入 Q-Former 的?在推理时指令提示的作用是什么?

🗣️ InstructBLIP 在 BLIP-2 的基础上,将任务指令(Instruction) 显式注入 Q-Former,使其在提取视觉特征时能根据指令进行动态聚焦。

注入机制:

  • 在 Q-Former 内部,除了一组可学习的 query tokens,还将指令文本的 token 作为额外的输入,与 query 一起进行自注意力交互。

  • 这样,query 在通过交叉注意力关注图像特征时,指令的语义会引导 query 去提取与任务最相关的视觉信息。例如,指令“描述这张图里的动物” vs “回答图中几个人”,Q-Former 会输出不同的视觉表示。

  • 训练时,使用多样化的任务指令(分类、描述、问答等)进行多任务训练,让 Q-Former 学会条件化视觉提取。

推理时指令提示的作用:

  • 用户或系统在推理时给定指令(如“简短回答”或“用 JSON 格式输出”),这个指令文本被送入 Q-Former,指导它从图像中提取与该格式/任务匹配的特征。

  • 这实现了零样本任务迁移:同一个模型,根据不同的指令提示,可以执行不同类型的下游任务,而无需微调。

🎯 指令感知让 Q-Former 从“静态视觉编码器”升级为“任务驱动的动态信息提取器”。


Q22:对比 BLIP-2 和 LLaVA 在下游微调时的计算开销,为何 LLaVA 更轻量但对话效果更好?

📊 LLaVA 在架构上比 BLIP-2 更简单,但对话效果往往更优,核心原因是架构简洁性与 LLM 深度参与的权衡。

计算开销对比:

查看内嵌表格

为何 LLaVA 对话效果更好?

  • LLM 深度参与:LLaVA 让 LLM 直接学习读取视觉 token,而不是通过一个冻结的 LLM 只能从 Q-Former 的少量压缩 token 中间接理解。LLM 庞大的参数和注意力机制直接作用于视觉 token,可以进行更复杂的跨模态推理。

  • 信息丢失少:简单的投影层保留了所有 CLIP 的 patch token(256 个),信息量远大于 Q-Former 压缩后的 32 个 query token。对需要细节的对话任务更有利。

  • 指令微调数据质量:LLaVA 使用高质量、多样化的 GPT-4 生成的多模态指令数据,针对性更强。

💡 因此,让 LLM 直接“看”原始视觉 token,并参与微调,远比通过一个复杂但信息有损的瓶颈层更有效,这体现了“大道至简”。


Q23:Fuyu 架构为何完全取消了视觉编码器,直接将图像块送入 Transformer?有什么利弊?

🧱 Fuyu 是一种极简多模态架构:它没有独立的视觉编码器(如 ViT),而是将原始图像切成 patch,直接通过线性投影后,与文本 token 拼接送入一个统一的 Transformer 解码器。

利(优势):

  • 极致简化:没有视觉编码器,架构统一为纯解码器,代码和系统复杂度极低,易于训练和部署。

  • 原生分辨率:图像块以原始分辨率直接输入,可以灵活处理任意比例、任意尺寸的图像,无需缩放到固定大小,避免了细节丢失。

  • 统一自注意力:从底层开始图像和文本 token 就进行完全混合的自注意力,早期细粒度交互能力强,可能对需要紧密多模态推理的任务有益。

  • 计算与存储高效:没有独立的视觉编码器参数,仅需维护一个Transformer。

弊(劣势):

  • 缺乏视觉先验:没有经过视觉预训练的专用编码器,模型必须从头学习局部和全局视觉模式,训练效率极低,需要海量数据。

  • 长序列计算压力:高分辨率图像会产生极多 patch token(如 800×800 图像产生数千 token),Transformer 的自注意力复杂度随 token 数平方增长,计算和显存压力巨大。

  • 视觉归纳偏置弱:CNN/ViT 的归纳偏置(平移不变性、局部性)丢失,模型可能更难学习基本的视觉层次结构。

🛠️ 因此,Fuyu 适合模型与数据规模极大、追求端到端统一的场景,但在当前资源约束下,带预训练视觉编码器的混合架构仍是主流。


Q24:在多模态推理时,“图像 Token”的数量是固定的还是动态变化的?怎么设计动态分配?

🔄 图像 token 数量可以固定或动态,动态分配更高效。

固定 vs 动态:

  • 固定:如 CLIP 双塔、标准 LLaVA(256 个 patch token)。好处是简单、易批处理;缺点是低分辨率图像浪费 token,高分辨率图像信息压缩不足。

  • 动态:根据图像尺寸、复杂度动态分配 token 数量。例如,一张简单的小图标可能只需 16 个 token,而一张复杂的遥感图可能需要 1024 个 token。

动态分配的设计方法:

  1. 基于分辨率的动态分块:如 Qwen-VL、LLaVA-HD。根据图像原始长宽比和预设的基础分辨率,动态决定切分为多少个局部块。每个块产生固定数量 token,总 token 数 = 基础全局图 token + 块数×每块 token。

  2. 自适应 token 修剪:在编码过程中,使用评分网络预测每个 token 的重要性,只保留 Top-K 个高分 token,丢弃冗余背景 token。这可以在 Transformer 中间层实现。

  3. 查询驱动的 token 选择:类似 Q-Former,用少量 query 从所有 patch 中动态检索最相关的信息,输出 token 数固定,但信息内容动态适应当前输入和任务指令(如 InstructBLIP)。

📐 动态分配能在不牺牲计算效率的前提下,最大化关键视觉信息的保留,是未来视觉语言模型的重要方向。


Q25:如果让你设计一个支持超高分图像(如 8K 遥感图)的问答模型,架构上你会做哪些改动?

🌍 8K 遥感图(典型尺寸 ~8000×8000 像素)若直接切块,会产生百万级 patch token,无法直接送入 Transformer。需设计层次化、多粒度视觉编码与高效检索问答的架构。

架构改动方案:

  1. 层次化视觉编码器:
  2. 第一阶段:快速扫描编码。将整图极速降采样至小图(如 512×512),用轻量 ViT 编码获得全局语义和粗略场景图。回答全局问题(“图中是否有农田?”)时仅用此层。
  3. 第二阶段:动态高分辨率分块编码。根据问题定位相关区域(通过文本中的地理坐标或物体名),仅将相关区域以高分辨率(如 1024×1024 块)编码。可采用类似滑动窗口的方式,但只在需要时才激活该区域编码。

  4. 地理空间感知的位置编码:

  5. 为每个 patch 嵌入地理坐标(经纬度) 作为位置编码,或者使用可学习的经纬度嵌入。这样模型可以将视觉信息与地图元数据结合,理解空间关系。

  6. 视觉记忆与检索:

  7. 预计算所有高分辨率块的 CLIP 特征并存入向量数据库(标注坐标)。用户提问时,先用问题文本检索最相关的图像块(空间+语义联合检索),再将相关块高分辨率编码送入 LLM。

  8. 多粒度融合:

  9. 在 LLM 端,同时输入全局缩略图特征和检索到的高分辨率块特征,通过交叉注意力或拼接实现多尺度信息融合,既能把握全局结构,又能看清局部细节(如“识别这栋建筑物的门窗数量”)。

  10. 渐进式解码:

  11. 对于需要遍历检查的任务(如“找出所有油罐”),可使用迭代式生成,模型每次输出一个关注区域坐标,系统读取相应高分辨率块,再继续生成。

🚀 这种“先全局后局部、按需提取”的设计,结合向量检索和地理编码,是处理超高分辨率图像的有效架构。