多模态大模型:视觉模型与 LLM 的结合之路
一、背景与回顾
在多模态大模型的发展进程中,视觉编码器(Vision Encoder)与大语言模型(LLM)的融合方式经历了显著演变。早期的工作如 Mini-GPT4、Llava、Blip2 和 QwenVL 主要处于第一阶段,侧重于通过堆叠数据和设计训练任务来提升图像理解能力。然而,受限于图像分辨率(通常为 448x448)和视觉特征序列长度,这些模型在 OCR 能力和细节感知上存在瓶颈。
本文重点介绍进入第二阶段的多模态大模型代表:InternVL-v1.5 与 Qwen2VL。InternVL-v1.5 首次将 ViT 参数量扩展至 6B,并引入动态长宽比技术;Qwen2VL 则进一步提出了动态分辨率策略和统一的多模态位置编码。以下将详细解析两者的核心架构差异与技术实现。
二、InternVL-v1.5 深度解析
2.1 核心架构升级
相较于第一阶段的模型,InternVL-v1.5 在模型规模与数据处理上进行了重大革新:
| 特性 | 第一阶段模型 | InternVL-v1.5 |
|---|
| ViT 参数量 | <300M | 6B |
| 图像分辨率 | 448*448 | 4484487 (动态) |
| 视觉特征序列长度 | 512 | 1792 |
| 动态长宽比 | 不支持 | 支持 |
视觉编码器增强:InternVL-v1.5 将 ImageEncoder (ViT) 的参数量扩展到了 6B,显著提升了视觉特征的表达能力。同时,图像分辨率被提升至相当于 7 个 448x448 的 patch,并引入了动态长宽比机制。
数据增强:除了自然场景数据,InternVL-v1.5 还收集了大量文档数据,专门针对算法的 OCR 能力进行了强化。
2.2 动态长宽比 (Dynamic Aspect Ratio)
传统多模态模型通常将图像 resize 到固定的长宽比(如 448x448 或 1344x1344),这会导致两个问题:极端长宽比的图片失真严重,或者固定较大尺寸导致 ViT 产生超长序列消耗算力。
InternVL-v1.5 引入了动态长宽比解决方案,具体流程如下:
- 预设最大 Patch 数:设定
max_patches(例如 7),图像会被切分为多个 448x448 的 patch,但总数不超过该限制。
- 适配长宽比:根据
max_patches 计算可适配的长宽比组合(长 * 宽 <= max_patches - 1)。
- 匹配与切片:根据原图分辨率和长宽比,选择最匹配的网格(如 2:3),将图片 resize 后切片为多个 448x448 的 patch。
- 填充处理:若不足,将原图 resize 到 448x448 放在 patch 后面作为补充。
优势:
- 避免极端长宽比图片因强制 resize 导致的变形。
- 根据图像实际分辨率动态调整序列长度,平衡计算量与信息量。
- 采用分块思想,解决了大分辨率图像直接输入 ViT 的计算量过大问题。
2.3 Pixel Shuffle 与模型结构
由于动态长宽比的引入,ViT 最多会接受 max_patches 个 448x448 的图片。若不做处理,视觉特征序列长度将达到 max_patches * 1024,导致显存占用过高。
为此,InternVL-v1.5 引入了 Pixel Shuffle 算法:
- 输入:ViT 输出的 (1024, hidden_dim) 序列。
- 变换:Reshape 为 (32, 32, hidden_dim) 的特征图。
- 操作:每个 2x2 区域为基础单元进行像素重排,得到 (16, 16, hidden_dim*4) 的特征图。
- 输出:Flatten 得到 (256, hidden_dim*4) 的序列。
这一过程将单张图片的序列长度从 1024 降低至 256,大幅减少了后续 LLM 的输入负载。模型整体架构中,使用 MLP 将对齐后的视觉特征与 InternLM2-Chat-20B 作为语言模型进行连接。
2.4 训练数据集
为了提升通用能力和 OCR 能力,InternVL-v1.5 采用了两阶段训练策略:
- 预训练阶段:仅训练 ViT 和 MLP 部分。数据集包含基础能力训练,如图像简单描述、目标检测和 OCR。序列长度设为 4096,
max_patches 设为 7。
- 微调阶段 (Finetune):包含各种复杂任务,如图像详细描述、表格理解、图像问答等。
此外,为提升中文场景理解能力,InternVL-v1.5 利用 LLM 将大量英文数据集翻译为中文,并使用 PaddleOCR 和 Wukong 数据集生成了专门的 Wukong-ocr 数据集。
三、Qwen2VL 深度解析
3.1 核心改进点
相较于 InternVL-v1.5,Qwen2VL 在以下方面进行了改进:
- 模型尺度:ViT 模型大小固定在 675M;LLM 大小分为 1.5B、7.6B 和 72B 三个版本。
- 图像预处理:不仅关注图像宽高,还关注图像分辨率。分辨率越高的图像,使用更多的视觉 Token 来表示。
- 统一的多模态 RoPE 位置编码:开发了一套位置编码,用于表示视觉、视频和文字的位置信息。
3.2 动态分辨率 (Dynamic Resolution)
InternVL 系列虽然支持动态长宽比,但在实际应用时更多考虑的是长宽比而非分辨率。Qwen2VL 的图像转序列模块则同时考虑了这两者,极大程度上提升了推理效率。
实现流程:
- 图像预处理:以 512x512 图像为例,resize 成 504x504(能被 28 整除)。分为 36x36 个 patch,每个 patch 大小为 14x14x3。Channel 维度重复一次(用于统一视频处理逻辑),得到 36x36 个 patch,大小为 14x14x3x2。最后 Flatten 得到 (1296, 1176) 的序列。
- 视觉编码:预处理后的序列先经过 3D 卷积变为 (1296, 1280),作用相当于 FFN。随后过 ViT 得到 img_emb。由于输入长宽均能被 28 整除,得到的 seq_len 一定能被 4 整除。
- 序列压缩:将 img_emb reshape 为 (324, 5120),并使用 FFN 将 hidden 维度与大模型对齐。
这种机制允许模型根据图像分辨率分配 token 数量,资源消耗更加合理。例如,对于低分辨率图像,Qwen2VL 分配的 token 远少于 InternVL-v1.5,从而节省算力。
3.3 统一的多模态 RoPE 位置编码
为了统一文本、图像和视频的处理,Qwen2VL 提出了 Multimodal Rotary Position Embedding (M-RoPE)。每个 token 拥有三个 position_id:
- Temporal Position IDs:时间 ID(纯文本中表示原始位置,图片或视频中表示时间/帧位置)。
- Height Position IDs:高度 ID(纯文本中与时间 ID 一致,视频和图片中表示垂直位置)。
- Width Position IDs:宽度 ID(纯文本中与时间 ID 一致,视频和图片中表示水平位置)。
合成机制:
在生成单个 token 的最终位置 embedding 时,Qwen2VL 分别生成时间、高度和宽度的 rope 位置编码,并保证这三个维度都均有高维区域和低维区域。这种设计保证了后续 pos id 比前序 pos id 大,且能有效减小 position_id 的值,使模型能用更小的 pos_id 适配更长的序列长度。
3.4 训练过程
Qwen2VL 的训练经过三个阶段:
| 训练阶段 | 可训练参数 | 训练数据集介绍 |
|---|
| 第一阶段预训练 | ViT, Adapter | 共 600B Tokens,主要是图片分类、图文对关系和 OCR 训练任务 |
| 第二阶段预训练 | 全部参数 | 数据集内容同上,数据量增加到 1400B Tokens |
| Finetune 训练 | 全部参数 | 指令跟随数据集,包含图像问答、文档解析、多图理解、视频理解及多 Agent 合作 |
四、总结
InternVL-v1.5 与 Qwen2VL 代表了多模态大模型在视觉特征提取与序列优化上的重要进展。
InternVL-v1.5 的贡献:
- 引入大 ViT(6B)和长 img_emb,增强了理解富文本图片的潜力。
- 扩充的训练数据集显著提升了 OCR 能力。
- 动态长宽比有效处理了极端长宽比图片,避免了图像变形。
Qwen2VL 的贡献:
- 精细的动态图像预处理方式,根据分辨率分配 token 数量,资源消耗更合理。
- 统一的多模态位置编码(M-RoPE)成功融合了图像、视频和文本,实验证明能提升模型效果。
两者均展示了多模态大模型在处理高分辨率、复杂布局及长序列信息时的最新技术方向。