Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond
TL; DR:多任务的训练方式以及配套的输入输出格式定义,使得多模态视觉大模型具有了更多视觉理解能力。如 grouding、ocr 等。
导言
先从直观上感受一下 qwen-vl 处理多任务的能力。如下图 1,5 所示,qwen-vl 可以理解和输出特定格式的图像坐标位置描述;如图 2,4,6 所示,qwen-vl 能理解图像中的文字,进而可以依据图像中的文字内容完成 OCR 或视觉问答任务,而图 3 这种常规的视觉问答任务更是不再话下。
太强了!先不论常规视觉理解和视觉问答的精度如何,引入了图像物体定位和 OCR 这两类能力就足以令人惊艳了。让我们看看 qwen-vl 是如何做到的。
方法
qwen-vl 的改进主要在四个方面:1. 模型结构 2. 适配各种视觉任务的输入输出格式 3. 三阶段的训练方式 4. 高质量的多语言多模态数据。我们一个一个来看。
模型结构
现在的多模态大模型(VLM)在模型结构方面一般都有是三个部分组成,分别是视觉编码器,大语言模型和适配器。qwen-vl 也不例外:
- 视觉编码器,qwen-vl 使用的视觉编码器是 open-clip 训练的 ViT-bigG/14 的 CLIP 模型视觉塔;
- 大语言模型,大语言模型,自不必说,当然是 qwen,具体规模是 7B;
- 适配器,qwen-vl 选择的适配器是一个单层交叉注意力模块。该模块使用一组可训练的 embeddings 作为 query,将视觉编码器中提取的图像特征作为 key,来进行交叉注意力操作。由于 qwen-vl 还要做一些 grouding 的任务,因此需要保持图像的位置信息。因此,适配器这里的 query 和 key 都加了 2D 的绝对位置编码。
视觉编码器和交叉注意力模块首先将图像编码为固定长度(256 tokens)的特征,然后与文本输入的 token 一起送入到大语言模型中。
输入和输出
图片输入
为了区分文本输入和图像输入,在图片的首尾分别加上了两个特殊的 token <img>
和 </img>
用以表示图像输入的开始和结束。
位置框的输入和输出
为了进行 grouding 类的任务,引入了两组特殊 token:<box>
、</box>
和 <ref>
、/ref
,分别用以表示位置框和相关描述信息。位置坐标会被统一 normalize 到 [0, 1000),并表示为 (x1, y1), (x2, y2) 的形式。
训练和数据
qwen-vl 的训练共分为三个阶段:预训练、多任务预训练和有监督微调(SFT)。
下面通过表格的形式整理一下不同阶段的设置:
是否训练视觉编码器 | 是否训练适配器 | 是否训练大语言模型 | (实际构造的)训练任务 | 数据量 | 数据类型 | |
---|---|---|---|---|---|---|
预训练 | √ | √ | × | captioning | 1.4B | 图文对 |
多任务预训练 | √ | √ | √ | captioning、VQA、(ref) grouding (cap)、OCR、pure text gen | 76.8M | 图文交错 |
SFT | × | √ | √ | instruction multimodal SFT | 350K | 图文交错 |
注意:
-
数据方面,qwen-vl 做了很多数据清洗,在预训练阶段洗掉了 70%+ 的数据,具体清洗流程在文章附录中。
-
训练任务的形式都是自回归文本生成的形式,通过构造不同的训练数据来进行不同的任务训练。
-
预训练阶段的输入图像分辨率是 224,后面两个阶段扩增至 448
-
在第三阶段,现有的多模态指令微调一般是单图的,qwen-vl 收集了多图的图文交错的指令微调数据
-
经过前两个阶段之后的模型称为 qwen-vl,经过第三阶段 SFT 之后的模型称为 qwen-vl-chat。
总结
qwen-vl 相比于之前的 VLM 最大的亮点是加入了 grouding、OCR 这类更细粒度的、更有视觉特色的任务,而不只是简单的图片理解 VQA。并且 qwen-vl 很好地支持了图文交错的形式。笔者体验下来,目前来说,qwen-vl 是中文开源多模态大模型中最好的了。