Granulon: Awakening Pixel-Level Visual Encoders with Adaptive Multi-Granularity Semantics for MLLM¶
会议: CVPR 2026
论文: CVF Open Access
代码: https://github.com/jinlab-imvr/Granulon
领域: 多模态VLM
关键词: 像素级视觉编码器, DINOv3, 文本条件粒度控制, token 聚合, 多粒度推理
一句话总结¶
Granulon 给以 DINOv3 为代表、强于细节但缺乏粗粒度语义抽象的像素级视觉编码器,加上一个"文本条件的粒度控制器 + 自适应 token 聚合"模块,让单个编码器在一次前向里就能按问题语义动态做"像素→细→粗"的多粒度推理,在同等设置下推理准确率提升约 30%、幻觉率降低约 20%。
研究背景与动机¶
领域现状:当前主流 MLLM(LLaVA、QwenVL、InternVL 等)几乎都把 CLIP 系编码器当视觉前端,靠大规模图文对比学习拿到很强的全局语义对齐能力,零样本理解和跨域泛化都不错。
现有痛点:CLIP 的特征是固定分辨率的全局语义,它学的是"图文整体一致性",因此偏向全局概念、忽略局部纹理和几何细节,在需要细粒度理解的任务(数颜色、辨小目标、医学细节)上信息丢失、表征模糊。反过来,DINOv3 这类自蒸馏的像素级编码器细节感知极强,却缺少把场景抽象成粗粒度语义的机制,单独用做 MLLM 前端时粗粒度推理能力受限。
核心矛盾:细粒度像素感知(DINOv3)与粗粒度语义抽象(CLIP)天然各占一端,单个编码器内部没有"可调节的粒度"这一维度。已有的折中是把 CLIP 和 DINO 双编码器拼在一起,但这既贵又没解决根本问题——单个编码器仍然缺少统一的 coarse-to-fine 粒度。
本文目标:不再走双编码器,而是让一个像素级编码器(DINOv3)自己获得"任务自适应的语义粒度",把粒度从被动属性变成可被文本控制的主动维度。
切入角度:作者观察到,问题本身就携带了"该看多细"的信号——"图里有什么动物"要的是全局粗粒度,"狗耳朵是什么颜色"要的是局部细粒度。既然如此,就让文本来条件化地告诉视觉流"这次该聚合到哪个粒度"。
核心 idea:用一个文本驱动的粒度控制器预测目标抽象层级,再用一个自适应 token 聚合模块按这个层级把像素特征"池化→聚类→筛选"成紧凑的语义 token,与原始像素 token 一起喂给 LLM,从而在单次前向里实现"像素→细→粗"的统一推理。
方法详解¶
整体框架¶
Granulon 的输入是图像 \(I\) 和问题文本 \(T\),输出是 LLM 的多模态回答。整条流水线把"问题该看多细"这个判断显式化:图像先过冻结的 DINOv3 拿到像素级特征图 \(F\);问题文本同时进入粒度控制器,预测出一组粒度参数 \(g^*=(\alpha^*,\beta^*,\gamma^*)\),分别控制空间下采样、聚类数量和投影器权重;这组参数驱动 AdaTA 模块把 \(F\) 做"粒度引导池化 → 关系感知聚类 → 质量筛选",产出一小撮语义 token \(S\);最后把像素 token、语义 token \(S\) 和文本嵌入拼接,经多模态投影器送入 LLM 推理。整体公式写作 \(F_{\text{mix}}(I,T)=\Phi_{\gamma^*}\big(F\oplus A_{\pi_\theta}(F;T_e)\big)\oplus T_e\),其中 \(\Phi_{\gamma^*}\) 是多模态投影器、\(A(\cdot)\) 是 AdaTA、\(T_e\) 是文本嵌入。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
I["图像 I"] --> F["DINOv3 编码<br/>像素特征图 F"]
T["问题文本 T"] --> CTRL["文本条件粒度控制器<br/>预测 g*=(α*,β*,γ*)"]
F --> ADATA["自适应 token 聚合 AdaTA<br/>池化→聚类→筛选"]
CTRL -->|"α*,β* 控制粒度"| ADATA
ADATA --> S["语义 token S"]
F --> MIX["拼接 + 多模态投影<br/>像素 token ⊕ S ⊕ 文本"]
S --> MIX
T --> MIX
MIX --> LLM["LLM 多粒度推理<br/>像素→细→粗"]
关键设计¶
1. 文本条件粒度控制器:让问题决定该看多细
这一步针对的痛点是"单个编码器没有可调粒度"——既然问题本身暗示了需要的视觉尺度,就让文本来预测它。控制器把粒度假设空间形式化为 \(\pi_\Theta=\{g_k\}_{k=1}^n\),每个 \(g_k=(\alpha_k,\beta_k,\gamma_k)\) 中 \(\alpha_k\) 控空间下采样、\(\beta_k\) 控聚类基数、\(\gamma_k\) 控投影器权重。给定问题 \(T\),控制器输出一个粒度分布 \(\bar g=\sum_{k=1}^n p_k g_k\),并取 \(g^*=\arg\max_{g_k\in\bar g}p(g_k\mid T)\) 作为最终粒度。
具体映射是 \(\sum_k p(g_k\mid T_e)\,g_k=\Phi_{\text{MLP}}\circ\Psi_{\text{agg}}\circ L^{(1)}(T_e)\):先用 LLM 的第一个 block \(L^{(1)}\) 当语言编码器抓取问题里的表层依赖和语义重点,再由 \(\Psi_{\text{agg}}\) 做均值池化加非线性投影得到紧凑文本描述子 \(h=W_p\,\sigma\big(\tfrac{1}{L}\sum_i E^{(1)}_i\big)\),最后 MLP 头 \(\Phi_{\text{MLP}}(h)=W_2\,\phi(W_1 h+b_1)+b_2\) 投到粒度 logits,softmax 成类别分布。控制器用 GPT-4o 标注的"文本-粒度"语料训练,每个问题被打上 \(n\) 维的粒度偏好权重,从而学会把语言意图映射到感知尺度。它和 DynamicViT/EViT 那种基于视觉显著性的自底向上剪 token、或 LLaVA-NeXT/InternVL 那种在固定 token 上做文本引导注意力的做法不同——这里是自顶向下、由文本先定粒度再聚合视觉。
2. 自适应 token 聚合 AdaTA:按粒度把像素压成语义 token
DINOv3 强在细纹理、弱在粗结构,AdaTA 就用控制器给的粒度参数把像素特征聚合成"该粒度下的语义 token",分三阶段:
(a) 粒度引导池化:按 \(\alpha^*\) 定义池化核 \(K_{\alpha^*}\),对特征和注意力同时降维 \(F_{\alpha^*}=K_{\alpha^*}^\top F K_{\alpha^*},\ A_{\alpha^*}=K_{\alpha^*}^\top A K_{\alpha^*}\);粗粒度时做强下采样(如 4×4 池化),细粒度时 \(K_{\alpha^*}\) 趋近单位阵。它在降分辨率的同时保留相对显著性,让 token 分辨率对齐目标粒度。
(b) 关系感知聚类:在池化后的 \(F_{\alpha^*}\) 和 \(A_{\alpha^*}\) 上跑 mini-k-means,由 \(\beta^*\) 控制簇数 \(M_{\beta^*}\),目标是 \(\{c_j\}=\arg\min\sum_i\min_j\big[\|a_i-c_j\|^2+\lambda_f\delta_{i,j}\big]\),其中 \(\delta_{i,j}\) 是基于注意力的特征距离。这样每个聚类中心同时编码视觉相似性和关系一致性,得到一批语义 token 候选。
(c) 质量筛选与精炼:给每个簇算复合质量分 \(s_j=\eta_1 S_{\text{size}}(j)+\eta_2 S_{\text{coh}}(j)-\eta_3 S_{\text{disp}}(j)\),分别奖励空间支撑、簇内语义同质性,惩罚过度分散的分布;取 Top-K 簇 \(S=\{c_j\mid j\in\text{TopK}(s_j,K)\}\) 转成语义 token。这批 token 与原始像素 token 拼接、过多模态 adapter 后并入 LLM 前向路径,从而在全局抽象和局部细节间取得平衡。
3. 像素-语义双流联合似然目标:逼模型同时用好两种 token
光有聚合还不够,得让模型学会"按任务分配像素和语义的贡献"。作者最大化两路互补 token 的联合似然:\(\arg\max_{\pi_\Theta}\mathbb{E}_{(I,T)}\big[\underbrace{\mathbb{E}_{v_i\in F}\log p_{\pi_\Theta}(C_{\text{pixel}}\mid v_i,T)}_{\text{细节贡献}}+\lambda\underbrace{\mathbb{E}_{t_j\in A_{\pi_\Theta}(F)}\log p_{\pi_\Theta}(C_{\text{sema}}\mid t_j,T)}_{\text{粒度贡献}}\big]\)。前一项衡量每个像素 token \(v_i\) 在上下文 \(T\) 下对多模态表征的细节贡献,后一项衡量每个语义 token \(t_j\) 对全局理解的贡献,\(\lambda\) 平衡两者。最终损失把这两项当正则加到任务损失上:\(\mathcal{L}=\mathcal{L}_{\text{task}}+\lambda_d\mathcal{L}_{\text{pixel}}+\lambda_t\mathcal{L}_{\text{sema}}\),\(\mathcal{L}_{\text{pixel}},\mathcal{L}_{\text{sema}}\) 是上式两个期望的负号项。这个目标让 Granulon 学会选择合适粒度、并在像素级和语义级 token 间按任务自适应分配权重。
损失函数 / 训练策略¶
全部实验在 LLaVA 框架下进行:只替换视觉编码器,其余架构、数据、模型规模、优化超参全部保持一致,以做公平的"换编码器"对比。语言主干用 Qwen-2.5-Instruct-1.5B 和 Llama-3.2-3B 两种;在 8×H200 上训 2 个 epoch,batch size 128,学习率 \(2\times10^{-5}\)。训练目标即上面的 \(\mathcal{L}=\mathcal{L}_{\text{task}}+\lambda_d\mathcal{L}_{\text{pixel}}+\lambda_t\mathcal{L}_{\text{sema}}\)。
实验关键数据¶
主实验¶
在 5 个 benchmark 上评测(VQA: SEED-Bench / A-OKVQA;Caption: CC12M / ImageNet21K Recap;Reasoning: FLUX-Reason;Medical: SurgVLM),用 GPT-4o 当裁判给语义准确率/幻觉率/粒度分,VQA 报 Recall,Caption 报 BERTscore。下表为 Qwen2.5 主干下 Granulon(Ours)与各编码器对比(数值为 Recall/GPTscore %):
| 编码器 | SEED Recall | A-OKVQA Recall | Caption GPTscore | Reasoning GPTscore |
|---|---|---|---|---|
| CLIP | 50.91 | 21.79 | 21.54 | 29.36 |
| SigLIP | 46.72 | 21.89 | 13.59 | 23.59 |
| DINOv2 | 41.40 | 16.67 | 14.36 | 36.67 |
| DINOv3 | 55.74 | 47.43 | 23.97 | 45.31 |
| Ours | 58.80 | 57.13 | 31.28 | 49.31 |
相比 CLIP,SEED-Bench Recall +7.89%、A-OKVQA Recall +35.34%;Caption GPTscore 较 SigLIP/DINOv2 分别 +17.69/+7.31。Llama3.2 主干下趋势一致,FLUX-Reason GPTscore 达 56.67%,比 DINOv2(19.49)、CLIP(28.97) 高 +37.18/+27.70。
医学域泛化¶
| 编码器 | Phase BERTscore | Phase Recall | Instrument BERTscore | Instrument Recall |
|---|---|---|---|---|
| CLIP | 91.64 | 46.15 | 94.44 | 46.92 |
| DINOv3 | 94.71 | 64.10 | 97.41 | 68.89 |
| Ours | 97.32 | 76.92 | 97.95 | 76.07 |
在手术视频的阶段识别和器械识别上,Recall 较 CLIP/DINOv3 分别 +30.77/+12.82,说明自适应粒度在需要分辨细节的专科场景里也能保住判别力。
消融实验¶
| 配置 | 关键发现 | 说明 |
|---|---|---|
| 语义 token 粒度(簇数) | A-OKVQA 粗配置(5 簇)≈+20%,50 簇仅 +0.50%;Reasoning 反而越细越好(~35%→~45%) | 最优粒度任务相关:全局理解要粗、细推理要细 |
| 去掉 Controller(固定 token) | 平均 GPTscore 明显下降 | 自适应粒度选择是关键 |
| Controller + AdaTA 联合 | 较 vanilla DINOv3 最高 +39.7%,token 仅 +10% | 提升来自"文本自适应粒度"而非堆 token 数 |
关键发现¶
- 粒度是任务相关的:粗粒度任务(A-OKVQA)用少簇、强抽象更好,细推理任务(FLUX-Reason)随簇数增多稳步涨分——这正是控制器存在的意义,固定粒度两头不讨好。
- 赢在"选对粒度"而非"token 更多":自适应版只比定值版多约 10% token,却拿到 +39.7% 提升,证明关键因子是文本自适应的粒度选择。
- 幻觉显著下降:Caption 上较 CLIP/DINOv3 分别降幻觉 6.0%/4.6%;Llama3 推理任务幻觉率从 DINOv3 的 61.3% 降到 46.3%(相对降约 46%)。
- 逐层对齐更深:把参考文本隐状态与各层做 cosine 相似度,CLIP 稳定在 ~0.60 就上不去,Granulon 持续增强到 ~0.80,说明多尺度表征更能支撑 LLM 的层级化深推理。
亮点与洞察¶
- 把"粒度"提升为文本可控的独立维度:以往要么自底向上按显著性剪 token、要么在固定 token 上加文本注意力,Granulon 反过来让文本先定粒度再聚合视觉,是个很干净的自顶向下视角。
- "唤醒"而非"替换"像素编码器:不堆双编码器,而是给 DINOv3 补上它本就缺的粗粒度抽象,单编码器单次前向就拿到 coarse-to-fine——省算力又解决根因。
- AdaTA 的池化-聚类-筛选三段是可复用模板:用注意力距离做关系感知聚类、再用 size/coherence/dispersion 复合分筛簇,这套"按预测粒度把密集特征压成少量语义 token"的流程可迁移到任何想做 token 压缩+语义抽象的视觉前端。
- 幻觉与粒度挂钩的分析角度:把句级粒度分和幻觉分一起统计,指出"细到粗的粒度对齐帮 LLM 平衡细节保真与语义连贯",给"为什么换编码器能降幻觉"提供了机制层面的解释。
局限与展望¶
- 控制器依赖 GPT-4o 标注的"文本-粒度"语料训练,这套监督信号的质量和偏置会直接影响粒度预测,论文未充分讨论标注噪声的影响。
- 粒度假设空间 \(\{g_k\}\) 是离散预定义的,\(\alpha/\beta/\gamma\) 的取值集合如何选、是否限制了表达力,正文交代有限(⚠️ 细节以原文/补充材料为准)。
- 论文主打"同等设置换编码器"的公平对比,但语言主干只测了 1.5B/3B 两个较小模型,更大 LLM 下粒度控制的收益是否同样显著未知。
- mini-k-means + Top-K 筛选引入了额外的聚类开销,虽然 token 只多约 10%,但聚类本身的延迟/可微性如何处理(公式里是 \(\arg\min\))值得关注。
相关工作与启发¶
- vs CLIP / SigLIP / EVA-CLIP:它们靠图文对比学全局语义、固定分辨率,强于检索对齐但丢细节;Granulon 改用像素级 DINOv3 并补粗粒度抽象,在细粒度 VQA/推理上反超。
- vs DINOv3(直接当前端):DINOv3 细节强但缺粗粒度语义,单用做 MLLM 前端粗粒度推理受限;本文不改 DINOv3 权重(冻结),靠外挂控制器+AdaTA 把它"唤醒"。
- vs CLIP+DINO 双编码器:双编码器贵且没解决"单编码器缺统一粒度"的根因;本文单编码器单次前向即可多粒度。
- vs DynamicViT / EViT(token 剪枝)、LLaVA-NeXT / InternVL(区域选择):那些是自底向上按视觉显著性剪 token 或在固定 token 上做文本引导注意力;Granulon 是自顶向下由文本预测粒度再聚合,控制的是"抽象层级"而非"留哪些 token"。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 把粒度变成文本可控维度、唤醒像素级编码器做 coarse-to-fine,视角新颖
- 实验充分度: ⭐⭐⭐⭐ 5 benchmark + 双 LLM + 医学域 + 幻觉/逐层对齐分析较完整,但 LLM 规模偏小
- 写作质量: ⭐⭐⭐⭐ 框架清晰、公式齐全,但部分指标(GPTscore 基线值、粒度空间取值)交代略含糊
- 价值: ⭐⭐⭐⭐⭐ 给 MLLM 视觉前端"用 DINO 而非 CLIP + 自适应粒度"指了条省算力的实用方向