2026-06-29-QWenVL

Overall Architecture

(Qwen-VL)[https://github.com/QwenLM/Qwen-VL] 的核心目标是把一个 text-only LLM 扩展成 vision-language model,使其能够同时理解文本和图像。

整体结构可以分成三部分:

1
2
3
4
5
6
7
8
9
10
11
Image

Visual Encoder / ViT

Position-aware Vision-Language Adapter

Compressed visual tokens

Qwen LLM

Text / box / OCR / grounding output

其中:

  • LLM:使用 Qwen-7B 初始化;
  • Visual Encoder:使用 ViT,将图像切成 patch (patch_size=14) 后输出 image patch features;
  • Visual Adapter:使用 cross-attention,把较长的图像 patch feature sequence 压缩成固定长度的 visual token sequence,最终输入给 LLM 的不是原始图像,而是一段连续的 visual embeddings,再加上文本 prompt。

Visual Encoder

Qwen-VL 的 visual encoder 是 ViT。它把图像切成 patch,然后每个 patch 产生一个 feature vector。

例如,如果图像分辨率是 448×448,patch size 是 14,那么 patch grid 是 \(32 \times 32 = 1024\)。所以 ViT 会输出大约 1024 个 image patch tokens \(X_{\text{img}} \in \mathbb{R}^{1024 \times d}\)

这些 patch features 包含图像局部区域的信息,例如物体、文字、纹理、颜色、空间布局等。

但是如果直接把 1024 个 visual tokens 全部送进 LLM,会带来较大的 sequence length 和计算成本。因此 Qwen-VL 引入了 cross-attention vision-language adapter 来压缩 visual sequence。


Learnable Query Embeddings for Cross-Attention

Qwen-VL 的 Visual Adapter 的query是 learnable query embeddings。这些query可以理解成一组可学习的信息槽位,它们的作用是从 ViT 输出的大量 image patch tokens 中主动“读取”有用信息。

假设 ViT 输出\(X_{\text{img}} \in \mathbb{R}^{N \times d}\)

Visual Adapter 中有 256 个 learnable queries: \(Q_{\text{learned}} \in \mathbb{R}^{256 \times d}\)

cross-attention 的形式大致是:

$$ \text{softmax} \left( \frac{QK^\top}{\sqrt{d}} \right)V $$

其中:

  • query 来自 learnable embeddings;
  • key/value 来自 ViT image patch features;
  • 每个 learnable query 会 attend 到所有 image patches;
  • 每个 query 输出一个压缩后的 visual token。

本质上这些 learnable queries 把图像压缩成固定长度的 visual representation。经过训练后,可能分别学习捕捉不同类型的信息,例如global scene information, object-level information, text/OCR regions…


Cross-Attention Vision Adapter 的输出

Visual Adapter 输出的256个 continuous visual embeddings 会被放进 LLM 的输入序列中。

Qwen-VL 使用特殊 token 来标记图像内容的开始和结束:

1
<img> [visual token 1] [visual token 2] ... [visual token 256] </img>

然后再接用户文本 prompt:

1
embedding"<img>" visual_embeddings embedding"</img>" text_embeddings..

所以 LLM 看到的是一个 interleaved multimodal sequence。


Multi-Task Pretraining

Qwen-VL 的训练流程分为三阶段:

1
2
3
Stage 1: Pretraining
Stage 2: Multi-task Pretraining
Stage 3: Supervised Fine-tuning

Stage 1: Image-Text Pretraining

第一阶段主要使用大规模 image-text pairs。这一阶段冻结了LLM部分,只训练 visual encoder 和 visual adapter。图像分辨率为 224×224。训练目标是普通的 text token cross-entropy,也就是给定图像后预测对应文本。这个阶段的作用是让 visual encoder 和 adapter 学会把图像信息转成 LLM 能理解的 visual embeddings。


Stage 2: Multi-Task Pretraining

第二阶段引入更高质量、更细粒度的 vision-language annotation data,并提高输入分辨率。图像分辨率从 224×224 提高到 448×448。这一阶段训练了 visual encoder + Visual Adapter + LLM。

Qwen-VL 在这一阶段同时训练 7 类任务:

1
2
3
4
5
6
7
Captioning
VQA
Grounding
Referring Grounding
Grounded Captioning
OCR
Pure-text Autoregression

这些任务都被统一成 autoregressive text generation。

例如,bounding box 不需要额外 detection head,而是被表示成文本:

1
<box>(661,612),(833,812)</box>

被 box 指代的文本片段用:

1
<ref>bees</ref>

所以 grounded caption 可以写成:

1
Beautiful shot of <ref>bees</ref><box>(661,612),(833,812)</box>

这种设计的关键是让 captioning、VQA、OCR、grounding 都被转成同一个 next-token prediction 问题。因此模型不需要为每个任务设计单独的 head。


Stage 3: Supervised Fine-Tuning

第三阶段是 instruction fine-tuning,用来得到 Qwen-VL-Chat。这一阶段冻结了 Visual encoder,只训练 Visual Adapter 和 LLM。

这一阶段增强模型的:

1
2
3
4
5
instruction following
dialogue ability
multi-image understanding
localization ability
multilingual response ability

训练时会混合 multimodal dialogue data 和 pure-text dialogue data,以避免模型丢失通用语言对话能力。


Comment

QWen-VL主要工作是通过设计visual encoder和visual adapter使得LLM能同时接收image和text信息,并通过预训练和SFT赋予了模型多模态推理能力。模型的上下文长度在8192,尚未在这方面进行额外训练和设计。

Author

Jiangshan Gong

Posted on

2026-06-29

Updated on

2026-07-01

Licensed under

Comments