多模态大模型细粒度视觉理解:Vision-OPD在线策略自蒸馏技术方案概述

MLLM在细粒度视觉理解上仍然吃力:答案往往依赖图中只占极小比例的"决定性细节",而在整图推理时,这些细节被海量视觉 token 淹没。

  • 整图推理时,这些细节往往只占图像中很小一块,被大量无关视觉 token 包围,极易在全局场景的"合理猜测"中被忽略------模型可能基于全局语义给出看似合理、实则漏掉关键局部证据的答案。
  • "Thinking-with-Images"方案,给 MLLM 配备了智能体式的视觉工具 :在推理过程中主动裁剪、放大、检查 感兴趣区域。这确实提升了细粒度理解,开销较大:
    • 需要反复编码图像(每次 crop 都重新过视觉编码器);
    • 需要多次模型调用(多步推理 + 工具调用)。

这引出一个问题:

能否通过训练把"视觉放大"的收益内化进模型,让模型在单趟前向传播(single forward pass)里就能从整图中利用细粒度证据,而不再依赖推理期的工具?

关键现象------regional-to-grdobal perception gap(区域到全局的感知差距) :同一个 MLLM,当输入是"以证据为中心裁剪出的小图"时,比输入"完整大图"时答得更准。这说明很多失败不是因为模型认不出细节,而是因为模型在全局上下文里难以聚焦到相关细节

Vision-OPD (Vision On-Policy Distillation):从同一个 MLLM 实例化两个"条件策略"------

  • Teacher(老师):只看"证据裁剪图"(crop),相当于模型开了一个特权视角;
  • Student(学生):看完整大图,即标准推理场景。

学生先在线(on-policy)生成回答,然后让老师和学生在这条学生自己生成的轨迹上做逐 token 的分布差异最小化。这样就把模型"放大看"的特权能力,迁移到了"看整图"的策略中。

2. 动机:Less is More(少即是多)

2.1 一个可验证的假设

作者提出一个简洁的验证思路:对比同一个模型在两种输入下的表现------

  • Global input(全局输入):喂完整大图;
  • Regional input(区域输入):只喂"以证据为中心裁剪出的小图"。

如果模型在"裁剪图"上答对、在"整图"上答错,就说明:模型其实能识别该证据,只是无法在全局上下文中聚焦到它。瓶颈是"聚焦能力",不是"识别能力"。

2.2 定性案例

基于 Qwen3.5-9B 的定性案例。问题问"护耳罩是什么颜色"。

  • 输入整图 → 模型预测 black(错)
  • 输入裁剪区域 → 模型正确预测 green(对)

决定性证据在孤立看时清晰可辨,但在全局上下文中被淹没。

2.3 系统性验证:差距是普遍存在的

在 ZoomBench 上的系统评测表明,这并非个别现象,而是一个系统性规律

区域输入的精度持续高出 全局输入 18~22 个百分点

更关键的是------即便是非常大的模型、闭源模型(GLM-4.6V、GPT-5.4、Gemini-3.5-Flash、Gemini-3.1-Pro)也都有显著的差距 ,证明单纯堆参数无法关闭这个 regional-to-global gap

结论 :既然模型"自己的区域感知"始终强于"全局感知",那么就可以用前者作为特权监督(privileged supervision)来提升后者------把"放大"的收益内化进单趟前向,无需推理期工具。

3. 方法:Vision-OPD(区域→全局的在线策略自蒸馏)

整个方法由两大部分组成:(A) 数据合成(构造 triplet)(B) 在线自蒸馏训练。论文的 Overview 图把这两部分画得很清楚:

Vision-OPD 总览。

:在"证据裁剪图"上生成细粒度问题,并通过边界框叠加把问题"锚定"回整图。

:用同一个 MLLM 实例化 teacher 策略 p T ( ⋅ ∣ x crop ) p_T(\cdot\mid x_{\text{crop}}) pT(⋅∣xcrop) 与 student 策略 p S ( ⋅ ∣ x global ) p_S(\cdot\mid x_{\text{global}}) pS(⋅∣xglobal)。学生在线生成 rollout y ∼ p S y\sim p_S y∼pS,沿该轨迹计算逐 token 散度 D ( p T ∥ p S ) D(p_T\|p_S) D(pT∥pS) 作为稠密监督;梯度只流经学生 logits,实现无标注的自蒸馏。

算法流程
复制代码
输入:训练集 D = {(x_i, x'_i, q_i)}; MLLM p_θ; 散度 D(如 JSD_β)
定义:
  p_S(·|x, q)  := p_θ(·|x, q)      # 学生:整图条件
  p_T(·|x', q) := p_θ(·|x', q)     # 老师:裁剪图条件(特权视角)

for step = 1 ... M:
    采样一个 batch B ⊆ D
    for 每个 (x, x', q) ∈ B:
        y ~ p_S(·|x, q)                       # 学生在线采样
        ℓ(x,x',q) = 1/|y| Σ_n D(
                        p_S(·|x, q, y_<n)
                        || stopgrad( p_T(·|x', q, y_<n) ) )
    L = 1/|B| Σ_{(x,x',q)∈B} ℓ(x,x',q)
    用 L 更新 θ

注意 stopgrad:梯度不回传到老师,老师只提供目标分布。

实验结果

参考文献

相关推荐
今天AI了吗7 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
Warren2Lynch7 小时前
从提示词到架构:Visual Paradigm VPasCode AI 驱动更新完全指南
人工智能·架构
ZGIAI7 小时前
ZGI 发布治理:同一个 Agent 服务多个入口
人工智能·架构
ZGIAI7 小时前
ZGI 批量测试:上线前验证 Agent
人工智能·架构
qq407855607 小时前
面向智能补货需求的进销存系统盘点
大数据·人工智能·低代码·制造
空堂与归7 小时前
用户分群找不到规律?用K-Means聚类算法自动发现数据模式
算法·机器学习·kmeans·聚类
Web3_Daisy8 小时前
从流动性到执行:如何降低 MEV 对 Web3 市场
大数据·人工智能·web3·区块链
日常通勤穿搭8 小时前
电商 AI 作图用哪个最方便?新手商家 AI 出图工具对比
大数据·人工智能
爱学堂IT分享8 小时前
DeepSeek+SpringAI实战AI家庭医生应用(10章) 完整版
人工智能
动词ing8 小时前
【C语言】自定义函数+指针入门
c语言·开发语言·算法