SCLIP、ProxyCLIP 与 GLA-CLIP:从单窗口聚合到跨窗口聚合
1. 阅读目标
本文解释三种 training-free open-vocabulary semantic segmentation(免额外训练的开放词汇语义分割)方法:
- SCLIP:使用 CLIP 自身的 patch 相关性改造最后一层注意力。
- ProxyCLIP:使用 DINO 等视觉基础模型的 patch 相似度,指导 CLIP Value 特征聚合。
- GLA-CLIP:将前两类方法原本局限于单个滑动窗口的聚合,扩展为跨窗口的全图聚合。
这里的 "training-free" 并不是模型从未训练过,而是:不使用目标分割数据集再次更新 CLIP、DINO 等预训练模型的参数。 推理时仍然需要给出候选类别名称,如 car、road、person。
2. 为什么 CLIP 能产生 patch 特征?
以 ViT 版本的 CLIP 为例,输入图像首先被划分为若干 patch:
x 1 , x 2 , ... , x N x_1,x_2,\ldots,x_N x1,x2,...,xN
经过 Transformer 后,模型内部保留对应的 patch token:
z 1 , z 2 , ... , z N z_1,z_2,\ldots,z_N z1,z2,...,zN
CLIP 预训练监督的是整幅图像与整句文本的匹配,并没有直接要求每个 patch 对应一个文本类别。因此:
patch 特征可以与文本特征计算相似度,但 CLIP 的训练目标并不保证这种局部对应一定准确。
Training-free 分割方法所做的事情,就是尽量从 CLIP 内部提取、整理这些不够稳定的局部语义。
最终,位置 (i) 的视觉特征 (f_i) 与类别文本特征 (t_c) 比较:
s i , c = cos ( f i , t c ) , y ^ i = arg max c s i , c s_{i,c}=\cos(f_i,t_c),\qquad \hat y_i=\arg\max_c s_{i,c} si,c=cos(fi,tc),y^i=argcmaxsi,c
每个 patch 得到类别后,再上采样为像素级分割图。
3. 什么是"单窗口聚合"?
3.1 为什么要使用滑动窗口?
CLIP 通常在较低、固定分辨率上预训练。面对高分辨率图像,直接缩小整图会丢失小目标和边界信息;直接增加 ViT token 数量又会显著增加计算量,并偏离预训练时的输入尺度。
常见处理方式是把原图裁成多个有重叠的窗口:
text
高分辨率原图
┌────────┬────────┬────────┐
│ 窗口 1 │ 窗口 2 │ 窗口 3 │
├────────┼────────┼────────┤
│ 窗口 4 │ 窗口 5 │ 窗口 6 │
└────────┴────────┴────────┘
每个窗口被当成一张独立图像,分别运行模型:
python
for window in sliding_windows(image):
clip_features = CLIP(window)
prediction = segment(clip_features)
3.2 单窗口聚合的数学含义
假设每个窗口包含 (N) 个 patch。处理窗口 1 时,只能得到该窗口的 Value:
V ( 1 ) = v 1 ( 1 ) , ... , v N ( 1 ) V^{(1)}=v_1\^{(1)},\\ldots,v_N\^{(1)} V(1)=v1(1),...,vN(1)
所以注意力矩阵只能描述当前窗口内部的 patch 关系:
A ( 1 ) ∈ R N × N A^{(1)}\in\mathbb R^{N\times N} A(1)∈RN×N
聚合结果为:
F ( 1 ) = A ( 1 ) V ( 1 ) F^{(1)}=A^{(1)}V^{(1)} F(1)=A(1)V(1)
窗口 2 会独立计算:
F ( 2 ) = A ( 2 ) V ( 2 ) F^{(2)}=A^{(2)}V^{(2)} F(2)=A(2)V(2)
因此窗口 1 中的 patch 不能读取窗口 2 的特征:
v i ( 1 ) ↚ v j ( 2 ) v_i^{(1)}\not\leftarrow v_j^{(2)} vi(1)←vj(2)
即使两个窗口存在重叠,传统做法通常也只是在预测完成之后,对重叠区域的 logits 取平均。这属于输出融合 ,不是特征阶段的跨窗口交流。
4. SCLIP:用 CLIP 自己建立 patch 关系
4.1 原始 CLIP 注意力
CLIP 的一个标准自注意力层包含:
Q = Z W Q , K = Z W K , V = Z W V Q=ZW_Q,\qquad K=ZW_K,\qquad V=ZW_V Q=ZWQ,K=ZWK,V=ZWV
A CLIP = o p e r a t o r n a m e S o f t m a x ( Q K ⊤ d ) A_{\text{CLIP}}=operatorname{Softmax}\left(\frac{QK^\top}{\sqrt d}\right) ACLIP=operatornameSoftmax(d QK⊤)
F = A CLIP V F=A_{\text{CLIP}}V F=ACLIPV
原始注意力是为了整图级图文对齐训练的,容易集中于最有判别力的区域,不一定适合完整、精细的像素级定位。
4.2 SCLIP 的核心改动
SCLIP 提出 Correlative Self-Attention(CSA),利用 CLIP 自己的同类型特征相关性,例如 (QQ^\top) 和 (KK^\top),取代原始的 (QK^\top) 关系,再用于聚合 CLIP Value。
概念上可写成:
A SCLIP ← Correlation ( Q Q ⊤ , K K ⊤ ) A_{\text{SCLIP}} \leftarrow \operatorname{Correlation}(QQ^\top,KK^\top) ASCLIP←Correlation(QQ⊤,KK⊤)
F SCLIP = o p e r a t o r n a m e P r o j CLIP ( A SCLIP V CLIP ) F_{\text{SCLIP}} =operatorname{Proj}{\text{CLIP}} (A{\text{SCLIP}}V_{\text{CLIP}}) FSCLIP=operatornameProjCLIP(ASCLIPVCLIP)
这里使用概念式而不是把不同实现细节压缩成一个不准确的等式;精确定义应以原论文和官方代码为准。
4.3 直观理解
CLIP 自己判断哪些 patch 相似,再让相似 patch 之间共享 CLIP 的语义信息。
SCLIP 完全使用 CLIP 内部特征:
CLIP 关系图 + CLIP Value \boxed{\text{CLIP 关系图}+\text{CLIP Value}} CLIP 关系图+CLIP Value
4.4 优点与风险
优点:
- 不需要额外视觉模型;
- 关系特征和被传播内容都来自 CLIP,跨模型错配相对较少;
- 方法简单,额外成本相对较低。
风险:
- CLIP 没有接受像素级监督;
- CLIP 自身的 patch 关系和边界定位可能不准确;
- 改造注意力只能利用已有的弱局部语义,不能凭空产生可靠分割知识。
5. ProxyCLIP:用 DINO 关系聚合 CLIP Value
5.1 核心动机
ProxyCLIP 认为:CLIP 擅长图文语义,但局部空间一致性较弱;DINO 等视觉基础模型通常能提供更好的 patch 对应关系,但没有直接的开放词汇文本分类能力。
因此它让二者分工:
- DINO:决定哪些 patch 应该相互传递信息;
- CLIP:提供被传播的视觉---文本语义特征。
5.2 计算过程
先提取 DINO patch 特征:
F DINO = d 1 , d 2 , ... , d N F_{\text{DINO}}=d_1,d_2,\\ldots,d_N FDINO=d1,d2,...,dN
计算两两相似度:
S DINO = F DINO F DINO ⊤ S_{\text{DINO}}=F_{\text{DINO}}F_{\text{DINO}}^\top SDINO=FDINOFDINO⊤
经过归一化、阈值筛选和 Softmax 得到 proxy attention:
A Proxy = Softmax ( Normalize ( S DINO ) + M ) A_{\text{Proxy}} =\operatorname{Softmax} (\operatorname{Normalize}(S_{\text{DINO}})+M) AProxy=Softmax(Normalize(SDINO)+M)
然后聚合 CLIP 最后一层的 Value:
F ProxyCLIP = Proj CLIP ( A Proxy V CLIP ) F_{\text{ProxyCLIP}} =\operatorname{Proj}{\text{CLIP}} (A{\text{Proxy}}V_{\text{CLIP}}) FProxyCLIP=ProjCLIP(AProxyVCLIP)
注意:这里不是直接把 DINO 特征与文本比较,也不是直接搬用 DINO Transformer 的原生注意力矩阵,而是用 DINO patch 特征构造亲和矩阵,再用它加权 CLIP Value。
ProxyCLIP 可以概括为:
DINO 亲和图 + CLIP Value \boxed{\text{DINO 亲和图}+\text{CLIP Value}} DINO 亲和图+CLIP Value
5.3 直观例子
如果 DINO 判断两个车身 patch 很相似:
A 12 = 0.8 A_{12}=0.8 A12=0.8
那么位置 1 的新 CLIP 特征可能为:
v ~ 1 = 0.6 v 1 + 0.3 v 2 + 0.1 v 3 \tilde v_1=0.6v_1+0.3v_2+0.1v_3 v~1=0.6v1+0.3v2+0.1v3
位置 2 的 CLIP 语义被传播到位置 1,从而使同一区域的预测更一致。
5.4 优点与风险
优点:
- DINO 通常具有比 CLIP 更好的局部结构和区域一致性;
- 可以减少碎片化预测,使物体区域更连续;
- 不需要重新训练 CLIP 或 DINO。
风险:
- DINO 相似不等于真实语义类别相同;
- DINO 与 CLIP 没有联合训练;
- DINO 的关系未必适合传播 CLIP Value;
- 错误亲和关系会造成跨类别特征污染;
- 需要额外运行 DINO,增加计算量和显存占用。
从保守角度看,ProxyCLIP 更像是:
以 DINO 亲和矩阵为平滑核,对 CLIP 局部语义特征进行加权平滑。
6. GLA-CLIP:从单窗口扩展到全图窗口
6.1 它发现的问题
SCLIP 和 ProxyCLIP 在滑窗推理中通常分别处理每个窗口。若一个物体跨越多个窗口,不同窗口可能产生不同判断,造成:
- 同一物体跨窗口类别不一致;
- 窗口边界出现断裂;
- 形成规则的网格状伪影。
GLA-CLIP 的主要创新不是重新发明 training-free 分割,而是处理这种跨窗口语义割裂。
6.2 全局 Key-Value 扩展
首先分别从所有窗口提取特征:
( K ( 1 ) , V ( 1 ) ) , ... , ( K ( L ) , V ( L ) ) (K^{(1)},V^{(1)}),\ldots,(K^{(L)},V^{(L)}) (K(1),V(1)),...,(K(L),V(L))
然后把所有窗口的 Key 和 Value 拼接:
K global = K ( 1 ) ; K ( 2 ) ; ... ; K ( L ) K_{\text{global}} =K\^{(1)};K\^{(2)};\\ldots;K\^{(L)} Kglobal=K(1);K(2);...;K(L)
V global = V ( 1 ) ; V ( 2 ) ; ... ; V ( L ) V_{\text{global}} =V\^{(1)};V\^{(2)};\\ldots;V\^{(L)} Vglobal=V(1);V(2);...;V(L)
当前窗口的 Query 可以检索所有窗口:
A GLA = Q local K global ⊤ ∈ R N × L N A_{\text{GLA}} =Q_{\text{local}}K_{\text{global}}^\top \in\mathbb R^{N\times LN} AGLA=QlocalKglobal⊤∈RN×LN
F GLA = Proj ( A GLA V global ) F_{\text{GLA}} =\operatorname{Proj} (A_{\text{GLA}}V_{\text{global}}) FGLA=Proj(AGLAVglobal)
传统方法的注意力矩阵是 (N\times N),GLA-CLIP 扩展为 (N\times LN)。这才使窗口 1 的 patch 能在特征阶段读取窗口 2、3、......中的信息。
6.3 Proxy Anchor
仅扩大 Key、Value 范围后,局部 Query 仍可能偏向本窗口。作者从所有窗口中选择与当前 Query 高相似的 token:
P i ( 0 ) = { j ∣ Q i ( 0 ) K global , j > ρ } P_i^{(0)} =\{j\mid Q_i^{(0)}K_{\text{global},j}>\rho\} Pi(0)={j∣Qi(0)Kglobal,j>ρ}
再对这些 token 求均值并迭代更新:
Q i ( t ) = 1 ∣ P i ( t − 1 ) ∣ ∑ j ∈ P i ( t − 1 ) K global , j Q_i^{(t)} =\frac{1}{|P_i^{(t-1)}|} \sum_{j\in P_i^{(t-1)}}K_{\text{global},j} Qi(t)=∣Pi(t−1)∣1j∈Pi(t−1)∑Kglobal,j
最终使用全局 Proxy Anchor 代替原始局部 Query,希望减少窗口来源造成的偏置。
6.4 动态归一化
全局 token 数量增加后,无关信息也会增加。作者根据窗口数 (L) 和高置信 token 数量 (|P_i|) 调整注意力:
u = 1 + λ 1 log ( 1 + L ) u=1+\lambda_1\log(1+L) u=1+λ1log(1+L)
w i = 1 + λ 2 ∣ P i ∣ w_i=1+\frac{\lambda_2}{|P_i|} wi=1+∣Pi∣λ2
作者将 (|P_i|) 视为物体尺度的代理:高置信 token 较少时,认为可能是小物体,从而强化少量高相似响应。
这是启发式设计,因为"高相似 token 少"也可能来自遮挡、低置信、纹理变化或模型表征失败。
6.5 直观例子
假设一辆公交车横跨两个窗口:
text
窗口 1:车头
窗口 2:车身与车尾
传统 SCLIP/ProxyCLIP 分别处理,窗口 1 可能把车头识别成普通汽车。GLA-CLIP 允许窗口 1 的车头 patch 读取窗口 2 的相关特征,希望利用完整车身信息,使两个窗口都预测为 bus。
6.6 优点与风险
优点:
- 直接处理滑窗之间缺乏交流的问题;
- 有助于减少窗口边界断裂和网格伪影;
- 可以作为模块接入 SCLIP、ProxyCLIP 等基线。
风险:
- 全局传播既能传播正确信息,也会远距离传播错误;
- 重叠窗口会产生重复 token,可能改变部分区域的有效权重;
- 注意力规模随窗口数量增长,增加计算和显存开销;
- Proxy Anchor 可能使错误关系变得更稳定;
- 动态归一化的物体尺度解释缺乏严格保证。
7. 三种方法的核心区别
| 方法 | 谁建立 patch 关系? | 聚合什么? | 聚合范围 | 外部模型 | 核心目的 |
|---|---|---|---|---|---|
| SCLIP | CLIP 自身的相关性 | CLIP Value | 当前窗口 | 无 | 改善 CLIP 的局部稠密表示 |
| ProxyCLIP | DINO/VFM patch 亲和度 | CLIP Value | 当前窗口 | 需要 DINO/VFM | 用更好的空间关系指导 CLIP |
| GLA-CLIP | CLIP 或 DINO/VFM,取决于所接基线 | 所有窗口的 CLIP Value | 全部窗口 | 取决于基线 | 减少跨窗口语义不一致 |
最简化的流程为:
text
SCLIP
CLIP 判断 patch 关系
→ 聚合当前窗口的 CLIP Value
→ 与类别文本比较
ProxyCLIP
DINO 判断 patch 关系
→ 聚合当前窗口的 CLIP Value
→ 与类别文本比较
GLA-CLIP
收集所有窗口的 Key 和 Value
→ 当前窗口跨窗口聚合
→ Proxy Anchor 减少窗口偏置
→ 动态归一化抑制噪声
→ 与类别文本比较
8. 如何正确评价它们?
三种方法都不是从零学习一个分割器,而是在利用预训练模型内部已经形成但不完善的局部结构。
它们能够产生效果的经验基础是:
- CLIP 的 patch/Value 特征保留一定的文本语义;
- CLIP 或 DINO 的 patch 相似度包含一定的区域信息;
- 对同类区域进行特征传播,平均而言可能增强类别信号。
但这些方法都不具备严格保证:
特征相似 ⇏ 类别必然相同 \text{特征相似}\not\Rightarrow\text{类别必然相同} 特征相似⇒类别必然相同
预测更一致 ⇏ 预测一定更正确 \text{预测更一致}\not\Rightarrow\text{预测一定更正确} 预测更一致⇒预测一定更正确
因此合理定位是:
- 可用于研究预训练模型的隐式局部能力;
- 可作为低成本、无需额外训练的分割基线;
- 可用于粗分割或辅助生成伪标签;
- 不应仅凭平均 mIoU 提升,就认为模型获得了可靠的像素级语义理解;
- 在自动驾驶、医疗等高可靠场景中,仍需要充分监督、独立验证和失败分析。
9. 参考论文与代码
9.1 SCLIP
- Feng Wang, Jieru Mei, Alan Yuille. SCLIP: Rethinking Self-Attention for Dense Vision-Language Inference. ECCV 2024.
- 论文:arXiv:2312.01597
- 官方代码:wangf3014/SCLIP
9.2 ProxyCLIP
- Mengcheng Lan, Chaofeng Chen, Yiping Ke, Xinjiang Wang, Litong Feng, Wayne Zhang. ProxyCLIP: Proxy Attention Improves CLIP for Open-Vocabulary Segmentation. ECCV 2024.
- 论文:arXiv:2408.04883
- ECCV 论文 PDF:ECVA Open Access
- 官方代码:mc-lan/ProxyCLIP
9.3 GLA-CLIP
- ByeongCheol Lee, Hyun Seok Seong, Sangeek Hyun, Gilhan Park, WonJun Moon, Jae-Pil Heo. Looking Beyond the Window: Global-Local Aligned CLIP for Training-free Open-Vocabulary Semantic Segmentation. CVPR 2026.
- 论文:arXiv:2603.23030
- 官方代码:2btlFe/GLA-CLIP
- 本文同时依据你提供的 CVPR 2026 论文 PDF 整理。
9.4 基础模型
- Alec Radford et al. Learning Transferable Visual Models From Natural Language Supervision (CLIP). ICML 2021. arXiv:2103.00020
- Mathilde Caron et al. Emerging Properties in Self-Supervised Vision Transformers (DINO). ICCV 2021. arXiv:2104.14294
10. 一句话总结
SCLIP 用 CLIP 自己的 patch 关系聚合当前窗口的 CLIP Value;ProxyCLIP 改用 DINO 的 patch 关系聚合当前窗口的 CLIP Value;GLA-CLIP 再把这种特征聚合从单个窗口扩展到整张图像的所有窗口。