Boosting Visual Reprogramming for CLIP with Dual Granularity Alignment¶
会议: CVPR 2026
论文: CVF Open Access
代码: https://github.com/JiayangWU66/DGA
领域: 多模态VLM
关键词: 视觉重编程, CLIP少样本, 标签层级, 多尺度对齐, 不确定性加权
一句话总结¶
针对 CLIP 视觉重编程(只训练输入端的视觉提示、冻结黑盒 CLIP)只做"单层对齐"的缺陷,本文提出 DGA,从数据里挖出两种被忽略的结构信息——语义粒度(标签层级)和视觉粒度(多尺度),用 PLH+HKP 做层级语义对齐、用多尺度裁剪+UPF 做不确定性加权的视觉对齐,两路协同融合,在 12 个识别数据集上比上一代 SOTA(DVP)平均提升 4.5%。
研究背景与动机¶
领域现状:模型重编程(model reprogramming)是一种参数高效的黑盒适配范式——不碰预训练模型的内部结构和参数,只在输入/输出端学一组变换。落到 CLIP 上就是视觉重编程(Visual Reprogramming, VR):冻结 CLIP 的图像/文本编码器,只学一块加在输入图像上的可学习扰动(即视觉提示 VP),把 CLIP 原有的图文对齐能力"借用"到下游分类任务上。形式化地,VR 优化一个输入变换 \(\delta\):
其中 \(M\) 是二值掩码(图像所在区域为 0、外圈为 1),保证只在图像周边贴 VP、绝不改 CLIP 内部。这在数据稀缺、只能访问黑盒 API 的场景下尤其实用。
现有痛点:从 VP、AR 到 AttrVR、DVP,这一系列 VR 方法都聚焦于单层(single-level)图文对齐——把"贴了 VP 的整图"和"类别文本描述"直接拉齐。它们把每张图当成一个扁平的整体、每个类别当成一个孤立的标签,完全没用上数据里天然存在的两种结构信息。
核心矛盾:判别不同类别的关键特征其实分布在不同的视觉细节层次上(粗尺度看全局、细尺度看局部判别区),而类别之间也存在层级语义关系(细类可以聚成超类)。单层对齐把这两种"粒度"都拍平了,VP 学到的对齐自然不够充分。
本文目标:把这两种被忽略的结构信息显式建模进 VP 的训练过程——既要让 VP 感知视觉粒度(多尺度),又要让 VP 感知语义粒度(标签层级)。
切入角度:作者有一个关键观察——构建语义层级时,不该用文本描述去算类别相似度(视觉和语言存在模态鸿沟,文本相似度未必反映视觉可分性),而应该直接用 CLIP 的视觉原型算相似度来聚类,这样得到的层级才"对齐目标模态的特征"。
核心 idea:用"视觉粒度 + 语义粒度"的双粒度对齐替代单层对齐——多尺度裁剪配不确定性加权融合处理视觉粒度,视觉原型聚类配层级知识自上而下传播处理语义粒度,两路协同生成更可靠的 VP。
方法详解¶
整体框架¶
DGA(Dual Granularity Alignment)是一个 VP 训练框架,输入是一批带标签的下游图像 + 类别文本描述,输出是一组训练好的视觉提示 \(\delta\) 和最终分类 logits。它由两条并行支路 + 一个融合头组成:
- 语义粒度支路(SG):先用 PLH 把所有类别按视觉原型相似度自底向上聚成 \(L\) 层标签层级(如细类 → 中类 → 超类),每一层都对应一组 VP 和一组层级描述;再用 HKP 让超类的知识自上而下约束子类——超类 VP 平均进全局 VP、超类 logits 经"展开-重分配-聚合"后注入子类预测。
- 视觉粒度支路(VG):对每张图做多尺度随机裁剪(粗尺度看全局、细尺度看局部),每个尺度配自己的局部 VP \(\delta_e^{local}\);再用 UPF 按预测熵给各裁剪视图算可靠性权重、加权融合,压掉"裁丢了关键物体/视图质量差"的坏预测。
- 融合头:两路 logits 用权重 \(\lambda\) 加权相加得到最终预测,损失同时监督子类分类和各层级分类。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入图像 + 类别描述<br/>(冻结黑盒 CLIP)"] --> B["PLH 原型层级构建<br/>视觉原型聚类成 L 层标签层级"]
A --> D["多尺度裁剪<br/>粗尺度全局→细尺度局部"]
B --> C["HKP 层级知识传播<br/>超类→子类: 展开-重分配-聚合"]
D --> E["UPF 不确定性加权融合<br/>按预测熵给各裁剪视图加权"]
C -->|语义 logits z_SG| F["加权融合<br/>z=(1-λ)·z_VG+λ·z_SG"]
E -->|视觉 logits z_VG| F
F --> G["最终分类预测"]
关键设计¶
1. PLH 原型层级构建:用视觉原型相似度造标签层级,绕开模态鸿沟
要做语义粒度对齐,先得有一棵"类别层级树"。作者拒绝用文本描述算类别距离——视觉/语言之间的模态鸿沟会让文本相似度偏离视觉可分性。PLH(Prototype-guided Label Hierarchization)改用 CLIP 视觉特征:先用零样本 CLIP 抽出每个样本的视觉特征,对每个类别 \(c\) 取所有样本特征均值作为视觉原型 \(p_c = \frac{1}{N_c}\sum_{i\in I_c} f_i\)。然后做自底向上的凝聚式聚类:从"每个类别各自一簇"出发,反复找当前簇里原型欧氏距离 \(d_{ij}=\|p_i-p_j\|\) 最小的一对合并,合并后新簇原型取其包含的原始类别原型的均值;重复直到构造出 \(L\) 层层级 \(\{H_l\}_{l=1}^L\)。这样得到的超类划分是按"在 CLIP 视觉空间里像不像"分的,天然贴合 VR 要对齐的目标模态。
2. HKP 层级知识传播:让超类知识自上而下约束子类的 VP 与预测
光有层级树还不够,得让上层(超类)的知识真正"传"给下层(子类)。HKP(Hierarchical Knowledge Propagation)在两个层面做自上而下传播。其一是 VP 层面:全局分支的 VP 取自身 VP 与所有 \(L\) 层超类 VP 的平均,\(\delta_{global} = \frac{1}{L+1}\left(\delta_0 + \sum_{k=1}^{L}\delta_k\right)\),让超类的提示约束子类的特征提取。其二是 logits 层面:对每个超类层级的 logits \(z_i^{(l)}\) 走三步——展开(expansion)把超类 logit 按层级关系复制给它所有从属子类,\(z_{i,c}^{(exp),(l)} = z_{i,s}^{(l)},\ \forall c\in S_s^{(l)}\);重分配(redistribution)再按子类自己的归一化置信度把展开值分摊下去,\(\tilde{z}_{i,c}^{(l)} = z_{i,c}^{(exp),(l)}\cdot \frac{\exp(z_{i,c})}{\sum_{c'}\exp(z_{i,c'})}\);聚合(aggregation)把各层级结果平均得语义 logits \(z_i^{SG} = \frac{1}{L}\sum_{l=1}^{L}\tilde{z}_i^{(l)}\)。这样超类的先验既塑造了 VP、又作为概率分布的先验注入子类预测,形成跨语义层的连贯对齐。
3. UPF 不确定性加权融合:多尺度裁剪 + 按熵过滤坏视图
视觉粒度支路先做多尺度采样:给定原图尺寸 \(S_0\)、尺度递减量 \(\Delta\),第 \(e\) 个尺度的裁剪尺寸为 \(S_e = S_0 - \Delta\cdot e\),裁剪后双线性插值回 \(S_0\) 并贴上该尺度专属的局部 VP \(\delta_e^{local}\),从而让 VP 在不同视觉细节层次上分别对齐文本。但随机裁剪有两个坑:关键物体可能被裁出框、不同视图的判别质量参差不齐。UPF(Uncertainty-calibrated Prediction Fusion)用预测熵作为质量度量来动态加权:对每个裁剪视图 \(j\) 算熵 \(H_i^{(j)} = -\sum_c p_{i,c}^{(j)}\log p_{i,c}^{(j)}\)(\(p\) 为 softmax 概率);以阈值 \(H_0\) 过滤——熵低于阈值(更确定)的视图给正权重 \(w_i^{(j)} = H_0 - H_i^{(j)}\),否则权重置 0,再 L1 归一化 \(\hat{w}_i = w_i/\|w_i\|_1\)。该尺度的融合 logits 为 \(z_i^e = \sum_j z_i^{(j)}\cdot\hat{w}_i^{(j)}\),最后对所有尺度(含全局尺度 \(z_i^0\))平均得 \(z_i^{VG} = \frac{1}{E+1}(z_i^0 + \sum_{e=1}^{E} z_i^e)\)。本质是"越确定的视图越可信",把裁糊/裁偏的预测自动压到接近 0。
损失函数 / 训练策略¶
两路 logits 用 \(\lambda\) 加权融合得最终预测 \(z_i = (1-\lambda)\cdot z_i^{VG} + \lambda\cdot z_i^{SG}\)。训练目标同时约束子类分类与各层级分类:
其中子类损失 \(\mathcal{L}_{sub} = -\log\frac{\exp(z_{i,y_i})}{\sum_j \exp(z_{i,j})}\) 是标准交叉熵;层级监督损失 \(\mathcal{L}_{hier} = -\frac{1}{L}\sum_{l=1}^{L}\log\frac{\exp(z_{i,y_i}^{(l)})}{\sum_j \exp(z_{i,j}^{(l)})}\) 在每个层级用该层标签 \(y_i^{(l)}\) 做监督。全程冻结 CLIP,只更新各尺度/各层级的 VP 参数;优化用 SGD(lr=40、动量 0.9、cosine 退火、200 epoch),\(\lambda=0.7\) 为全数据集通用设置。
实验关键数据¶
主实验¶
16-shot 设置、ViT-B/16 CLIP、12 个识别数据集、三次随机种子取均值。DGA 全面超越上一代 SOTA:
| 数据集 | VP | AttrVR | DVP-CSE | DGA(本文) |
|---|---|---|---|---|
| Aircraft | 32.1 | 36.6 | 40.3 | 51.8 |
| Cars | 65.5 | 68.3 | 72.5 | 84.4 |
| DTD | 61.4 | 65.6 | 66.7 | 73.9 |
| Flowers | 82.5 | 92.9 | 95.4 | 97.6 |
| SUN | 65.8 | 69.6 | 71.1 | 76.9 |
| ImageNet | 64.2 | 69.4 | 70.0 | 72.7 |
| 12 数据集均值 | 73.5 | 77.7 | 79.3 | 83.8 |
平均 83.8% 比 DVP-CSE(79.3%)高 4.5%、比 DVP-CLS(78.9%)高 4.9%。细粒度数据集涨幅最猛——Aircraft +11.5、Cars +11.9,正对应 VG 模块"靠少数关键视觉细节区分类别"的设计意图。跨骨干(RN50/RN101/ViT-B/32/ViT-B/16)也一致提升;ViT-B/16 涨幅相对小,作者归因于其本身特征提取已很强、提升空间有限。
消融实验¶
在 SUN/UCF/Pets/Aircraft 四个数据集上(均值为这 4 个的平均):
| 配置 | 均值Acc | 说明 |
|---|---|---|
| Full Model(VG+UPF+SG+HKP) | 77.3 | 完整模型 |
| w/o HKP(SG 保留但去 HKP) | 75.6 | 只留 logits 展开、去重分配+聚合,掉 1.7 |
| w/o SG(整条语义支路去掉) | 76.4 | 掉 0.9 |
| w/o UPF(VG 保留但去 UPF) | 75.7 | 多裁剪改简单平均,掉 1.6 |
| w/o VG(整条视觉支路去掉) | 75.5 | 掉 1.8 |
关键发现¶
- VG 支路贡献更大、尤其在难数据集上:去掉 VG 后 Aircraft 从 51.0→48.4、UCF 从 86.7→84.2,细粒度/视频识别掉点最明显,印证多尺度建模对"关键判别细节"的价值。
- UPF/HKP 是两路的"灵魂"而非可选项:单独去掉 UPF(75.7)或 HKP(75.6)的掉点,甚至接近去掉整条 VG(75.5)/SG(76.4)支路——说明光有多尺度/多层级但不会"加权融合 / 知识传播",信息根本用不起来。
- 超参不敏感、实用性强:\(\lambda\) 在各数据集上精度标准差 < 0.5%、约 \(\lambda=0.7\) 最优;UPF 阈值在 \([0.3, 2.1]\) 区间波动 < 1.6%。作者据此用一套通用超参跑所有数据集,免去逐数据集调参。
- DGA 在多数数据集上不仅均值高、标准差也低;DTD 标准差偏高源于其类内多样性大(纹理识别本身不稳定),Aircraft 略高则因类间混淆导致特征敏感。
亮点与洞察¶
- "造层级树该用视觉原型而非文本"是很对的直觉:在 CLIP 这种图文模型上做语义结构,自然会想到用文本算类别相似度;本文明确指出模态鸿沟会让文本相似度跑偏,改用 CLIP 视觉原型聚类——这个 caveat 对所有"想给 CLIP 加语义层级"的工作都有借鉴价值。
- 用预测熵当裁剪视图的可靠性权重,简单且免训练:UPF 不需要额外的质量评估网络,直接拿 softmax 熵 + 一个阈值就能把裁糊/裁偏的视图权重压到 0,是个可即插即用的多视图融合 trick。
- HKP 的"展开-重分配-聚合"把层级先验做成了概率分布的软约束:相比硬性的层级分类损失,它让超类置信度按子类自身置信度重新分摊,既注入先验又不抹掉子类的判别性,这套 logits 操作可迁移到任何带标签层级的分类任务。
- 全程不碰 CLIP 内部、只学输入端 VP,黑盒友好——双粒度的所有增益都来自"怎么更聪明地组织输入和融合输出",这点在只能访问 API 的场景很有吸引力。
局限与展望¶
- 依赖多尺度裁剪 + 多层级 VP,训练/推理开销随尺度数 \(E\) 和层级数 \(L\) 增长:每个尺度、每个层级都要各自的 VP 和一次前向,相比单层 VR 的计算量明显更高,论文未充分讨论这部分代价。⚠️ 具体开销倍数原文未给量化,以原文为准。
- PLH 的层级靠零样本 CLIP 视觉原型聚类:当下游域与 CLIP 预训练分布差异很大(如医学/遥感细分),零样本特征本身就不准,聚出来的"超类"可能并不语义合理,进而拖累 HKP——本文的 Resisc 遥感数据虽有提升,但这一隐患在更偏的域上值得警惕。
- 实验只覆盖 16-shot 分类、未测更低样本(1/4/8-shot)或更大词表场景下层级聚类与 UPF 阈值是否仍稳健。
- 改进思路:层级数/尺度数可做成自适应(按数据集类别数/类内方差决定 \(L,E\)),而非固定;UPF 的硬阈值过滤可换成更平滑的不确定性加权(如温度调节的软权重)。
相关工作与启发¶
- vs DVP:DVP 通过"解耦+重加权"多个 VP 来提升可靠性,但仍是单层图文对齐;DGA 引入语义/视觉双粒度的多层结构,区别在于它显式建模了标签层级和多尺度——这也是 Aircraft/Cars 等细粒度任务上 DGA 大幅反超 DVP 的原因。
- vs AttrVR:AttrVR 用 LLM 生成的描述性/判别性属性来引导单个 VP;DGA 沿用其实验配置但把对齐从"单 VP×属性"升级为"多层级/多尺度 VP×层级描述",从数据结构而非文本属性侧挖增量。
- vs 提示学习(prompt learning,如 CoOp/VPT):提示学习需要访问并修改预训练模型内部(插 token、改注意力),而 VR/DGA 只在输入端贴 VP、把 CLIP 当完全黑盒,适用约束访问/黑盒 API 场景,这是两类范式的根本分野。
评分¶
- 新颖性: ⭐⭐⭐⭐ 把"双粒度结构信息"显式引入 VR、并坚持用视觉原型而非文本造层级,角度新且自洽
- 实验充分度: ⭐⭐⭐⭐ 12 数据集 + 4 骨干 + 完整消融 + 三种超参敏感性分析,但只测 16-shot
- 写作质量: ⭐⭐⭐⭐ 公式与算法清晰、pipeline 图信息密但能对上方法
- 价值: ⭐⭐⭐⭐ 黑盒友好、超参不敏感,对 CLIP 少样本黑盒适配是实用的一步