Date:2024.10.03 【paper


在引言部分文章就提到,大型视觉-语言模型(LVLMs),普遍采用“视觉编码器(visual encoder)→跨模态连接器(cross-modal connector)→LLM”的通用架构

视觉编码器
跨模态连接器
LLM

随后采用,词元预测算法,即[[Qwen-VL 技术报告阅读笔记#补充]]中的算法,进行下一词元预测

影响LVLMs能力的关键因素:

  • 更大的模型架构
  • 更高分辨率的图像
  • 专家混合模型
  • 模型集成
  • 更精巧的视觉-文本模态间连接器

原有LVLMs的缺陷:

  • 采用静态、冻结的Clip风格的视觉编码器:该模型的视觉表达可能并不足够
  • 固定图像的输入尺寸:会导致模型丢失大量细节
  • 视频视作独立模态:一维位置编码限制建模时空的能力
  • 数据量和参数量: 稀缺

Qwen2-VL:

  • ViT:引入2D旋转位置编码(2D RoPE) 前文提到的"Naive Dynamic Resolution"机制,将不同尺寸的图片处理为不同长度的视觉序列
  • 不同scale的模型
  • 针对视频优化:多模态旋转位置编码(MRoPE):使用独立的组件来表示时间和空间信息,促进文本、图像和视频中位置信息的有效融合;采用统一的范式来处理图像和视频,从而增强模型的视觉感知能力

Qwen2-VL

Qwen2-VL 家族,后续Qwen2.5-VL[[Qwen2.5-VL 技术报告阅读笔记]]基本延续改设计

模型名称 视觉编码器 LLM 模型描述
Qwen2-VL-2B 6.75亿 15亿 最高效的模型,专为端侧运行设计。在资源有限的场景下,能为大多数任务提供足够的性能。
Qwen2-VL-7B 6.75亿 76亿 在成本效益方面性能最优的模型,其文本识别和视频理解能力得到显著升级。它在广泛的视觉任务上表现出色。
Qwen2-VL-72B 6.75亿 720亿 能力最强的模型,在视觉推理、指令遵循、决策和**智能体(agent)**能力方面得到进一步提升。它能在大多数复杂任务上提供最佳性能。

模型结构

![[Pasted image 20250822101807.png]]

延续Qwen-VL[[Qwen-VL 技术报告阅读笔记]]的技术框架,也是ViT+LLM的形式,其中ViT约6.75亿参数,LLM选择Qwen2


朴素动态分辨率

目的:使模型可以处理任意分辨率的图像,并将其转化为动态大小的视觉词元(据文章说,在Qwen-VL的plus和max版本中已经初步实现)

实现方式:修改ViT,移除原先的绝对位置编码,采用2D-RoPE来编码图像的位置信息。

  • 推理阶段:不同分辨率的图像被打包为一个单一序列,并通过控制打包长度,限制显存使用
  • 在ViT之后,添加一个简单的MLP:将相邻的 2 × 2 2\times 2 2×2的词元压缩为一个单一词元,依旧为了节省显存;同时在压缩后的视觉词元的序列开头和结尾处,分别插入特殊词元<|vision_start|><|vision_end|> ;文章举例,假设分辨率为224x224的图片,patch_size=14,最终在进入LLM之前被压缩为66个token
    在Qwen2.5VL中依旧延续了这种做法,但其分割方式同Qwen2VL好似也有不同,在两个特殊词元中存在大量的<|image_pad|>字段,因为其具备输入原始分辨率的能力(初步猜测)
多模态旋转位置编码(M-RoPE)

LLM中常规的1D-RoPE仅编码一维位置信息,M-RoPE可以同时建模多模态输入的位置信息

实现方式:M-RoPE将原始的旋转编码分解为三个组件来实现:时间、高度和宽度

  • 对于文本输入:组件使用相同的位置ID,即功能上等价于1D-MoPE
  • 对于图像输入:每个Vison token(前文提到具体怎么做的),固定时间ID不变,高度和宽度根据token在图片中的位置分配不同的ID
  • 对于视频输入:其等价于一系列具备时间关联的帧序列,因此时间ID随每一帧递增,高度和宽度的编码方式遵循图像输入

如果输入包含多个模态,每种模态的位置ID初始化为上一个模态的最大位置ID+1![[Pasted image 20250822133510.png]]

文章中存在一句不太理解的话:

M-RoPE 不仅增强了位置(positional)信息的建模能力,还降低了图像和视频中位置 ID 的重要性,使模型在推理过程中能够外推至更长的序列。

统一的图像和视频理解

Qwen2-VL采用图像和视频数据混合的训练方案

  • 视频以每秒两帧进行采样
  • 单张图片视作两个相同的帧
  • 集成深度为2的3D卷积处理视频输入:使模型可以处理3D tube而不是仅处理2D patch,不增加序列长度的情况下,可以处理更多的视频帧Paper

训练

延续Qwen-VL的三阶段训练方法[[Qwen-VL 技术报告阅读笔记#训练]]

初始预训练阶段

  • 6000亿个词元的语料库
  • Qwen2作为LLM,视觉编码器采用==源于DFN的ViT==,同时将原有的位置编码用2D-RoPE替代
  • 目的:侧重于学习图文关系、通过OCR识别图像中的文本内容以及图片分类任务(基础预训练)

第二预训练阶段

  • 8000亿个与图像相关的数据词元,有视觉问答数据集,和多任务数据集等
  • 目的:细致化视觉-文本之间的相互作用;提升图像查询能力;提升多任务能力;维持语言能力
    总结:在预训练阶段,共采用了1.4万亿个词元(文本、图像),训练过程中,仅对文本词元进行监督
    思考:此处说仅对文本词元进行监督,个人理解是对LLM的最终输出进行监督,因为图片的特征最终也是以文本相同的形式送入LLM之中

指令微调阶段(instruction fine-tuning)

  • 数据构成:纯文本对话、多模态对话(图像问答,文档解析,视频理解,视频流对话和agent-base交互
  • 数据格式:采用ChatML格式,详见下方描述
数据格式

同Qwen-VL一致,也采用特殊的词元区分视觉和文本输入,具体而言在图像特征的序列的开头和结尾分别插入:<|vision_start|><|vision_end|> 词元,标明图像内容的边界

说明:依旧是仅对蓝色标注的部分进行监督

对话数据
![[Pasted image 20250822152311.png]]

每次交互都由两个特殊词元(<|im_start|><|im_end|>)标记,促进对话终止

Vision Grounding
![[Pasted image 20250822153116.png]]

Bounding box统一归一化到[0,1000)的范围内,并表示为:
( X t o p l e f t , Y t o p l e f t ) , ( X b o t t o m r i g h t , Y b o t t o m r i g h t ) ) (X_{top left}, Y_{top left}), (X_{bottom right}, Y_{bottom right})) (Xtopleft,Ytopleft),(Xbottomright,Ybottomright))
使用 <|box_start|><|box_end|> 词元来标记bbox文本;<|object_ref_start|><|object_ref_end|> 词元来指示bbox的描述(如果在小模型算法中即为其Classes)

Visual Agent:终极目标
![[Pasted image 20250822153241.png]]

思路:将 UI 操作、机器人控制、游戏、导航等任务统一视为序列决策问题,从而使模型能够通过多步动作执行完成复杂任务

流程:

  • 定义任务规则
    • 确定允许的动作集合
    • 设定函数调用的关键词模式
  • 任务执行循环
    • 根据当前观测信息进行分析、推理与规划
    • 选择合适的动作并执行
    • 与环境交互,获取新的观测信息
  • 迭代执行
    • 重复上述过程,直到任务完成
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐