前期几篇内容介绍了原生分辨率及相关评估:《多模态大模型中图像分辨率packing策略及原生分辨率NaViT的部分结论》和《多模态大模型中不同分辨率策略研究与原生分辨率的有效性评估》,再来看一个关于多模态大模型处理不同分辨率的trick,提到现有多模态大模型在处理高分辨率图像时,因固定划分图像为全局和局部区域导致视觉token数量过多、推理效率低下,且无法根据任务需求自适应调整视觉粒度的问题。因此提出通过视觉粒度缩放器生成多粒度视觉token,并利用视觉粒度路由器结合图像和指令动态选择合适粒度。
方法
AVG-LLaVA模型结构主要在LLaVA-NeXT的基础上新增了两个核心模块:视觉粒度缩放器 和视觉粒度路由器 ,整体架构如下图:
视觉粒度缩放器
- 多粒度特征生成 :token采用空间金字塔池化思想,通过堆叠1×2和2×1的平均池化层,逐步降低视觉token数量(每次减半),生成从细到粗的多粒度视觉特征。 例如,对于CLIP-ViT-L-336编码的24×24token网格,通过缩放器可生成24×12、12×12、12×6、6×6等不同粒度的token。
- 优点 :无需额外训练即可生成多粒度特征,同时保留空间信息,为后续动态选择提供基础。
视觉粒度路由器
路由器基于输入图像和指令,从多粒度特征中选择最合适的粒度,结构借鉴MoE,包含三个子层:
- 输入处理
- 拼接所有粒度的视觉token,形成多粒度视觉token
(
为粒度数量)。
- 筛选指令token:计算原始指令token
与原始粒度视觉token的余弦相似度,保留Top-k个最相关的指令token
。
- 特征融合与预测
- Transformer层 :融合多粒度视觉token与筛选后的指令token,增强跨模态交互。
- MLP层 :对每个融合后的token预测粒度类别,输出logits
(
为token总数)。
- 投票层 :通过可学习权重矩阵
聚合所有token的logits,得到最终logits
,再通过softmax计算粒度选择概率分布。
- 输出
选择概率最高的粒度对应的视觉token输入到LLM进行推理。
训练方法简述
各粒度视觉 token 与指令 token连结后,由 LMM 处理以估算相应奖励。视觉粒度路由器依据 LMM 反馈优化粒度选择。
AVG-LLaVA的训练分为两个阶段,采用多阶段训练策略:
- 阶段1:多粒度视觉指令微调
训练视觉编码器、视觉-语言连接器和LLM,使其具备处理N种不同粒度视觉特征的能力。通过不同粒度的视觉token进行下一个token预测,仅对回答部分应用交叉熵损失,让模型学习感知和处理多粒度视觉信息。 - 阶段2:基于LMM反馈的粒度排序(RGLF)
冻结其他模块,仅训练视觉粒度路由器。利用LLM对不同粒度视觉token生成回答的log概率作为反馈,通过排序损失使路由器对更优粒度赋予更高评分,并结合交叉熵损失让路由器学习LLM偏好的最优粒度,最终通过加权求和得到总损失,实现路由器与LLM偏好的对齐,无需额外人工标注数据。
实验
AVG-LLaVA: An Efficient Large Multimodal Model with Adaptive Visual Granularity,https://arxiv.org/pdf/2410.02745v3