核心要点

  • 图像编码(CNN/ViT)+ 问题编码(RNN/Transformer)→ 多模态融合 → 答案输出

  • 融合方式:早期用拼接/逐元素乘/双线性池化,主流用交叉注意力让问题关注相关图像区域

  • 答案路线两选一:分类式(在固定答案表上 softmax)或生成式(解码器自由生成文本)

  • 现代方案常用预训练 VLM(BLIP/LLaVA),把问题作为文本提示、图像作为视觉输入直接生成答案

标准回答

整体流程

VQA 给定一张图像和一个自然语言问题,要求输出答案。标准流水线分三步:

  1. 图像编码:用 CNN 或 ViT 提取视觉特征(区域特征或网格/patch 特征)。
  2. 问题编码:用 RNN 或 Transformer 把问题编码为文本表示。
  3. 多模态融合:把两路特征对齐融合,再预测答案。

融合是核心

简单方法是拼接、逐元素相乘或双线性池化。主流做法是交叉注意力:让问题 token 去 attend 图像区域,定位与问题相关的视觉证据(视觉接地),从而回答「图中红色物体是什么」这类问题。

答案输出两条路线

  • 分类式:把答案当作固定词表上的分类,softmax 选最可能答案,简单高效但答案受限。
  • 生成式:用解码器自由生成文本,灵活、可应对开放式问题,是当前 VLM(如 LLaVA、BLIP-2)的主流。

常见误区

⚠️ 常见踩坑

VQA 不是简单图文检索;它需要跨模态推理与定位。分类式 VQA 受答案词表限制,开放式问题需用生成式。

追问

追问 1为什么交叉注意力比简单拼接更适合 VQA?

拼接是把全局图像向量和问题向量粗暴合并,丢失空间信息,难以回答涉及局部区域的问题。交叉注意力让每个问题 token 动态加权图像各区域,定位到问题真正关心的部位(视觉接地),对计数、空间关系、属性识别等细粒度问题显著更好。

追问 2VQA 模型如何缓解「只靠语言先验猜答案」的问题?

VQA 数据存在语言偏置(如问「香蕉什么颜色」总答黄色,不看图也对)。缓解手段:用平衡数据集(VQA v2 为每个问题配相反答案的图像)、加强视觉接地、引入对抗去偏或因果干预,迫使模型真正依赖图像而非问题文本统计规律。

延伸学习

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