跳转至

SCLIP: Rethinking Self-Attention for Dense Vision-Language Inference

会议: ECCV 2024
arXiv: 2312.01597
代码: https://github.com/wangf3014/SCLIP (有)
领域: 多模态VLM
关键词: CLIP, 语义分割, 自注意力, 零样本, 密集预测

一句话总结

发现CLIP在密集预测中失败的根因是自注意力机制导致的空间位置错配(spatial-invariant features),提出Correlative Self-Attention(CSA)机制——仅用一个投影矩阵计算token间相关性作为注意力分数,无需任何训练/额外参数即可将CLIP的零样本语义分割mIoU从14.1%提升至38.2%(8个基准平均),大幅超越现有SOTA的33.9%。

研究背景与动机

  1. 领域现状:CLIP在零样本分类上表现出色(ImageNet 70%+),但在语义分割等密集预测任务上表现极差(ADE20k仅3.1% mIoU,COCO-Stuff仅5.7%)。
  2. 定性观察:CLIP实际上能正确识别图像中存在哪些物体(如flamingo、water),但将它们的位置搞反了(如在flamingo区域预测water)——这是空间不对齐问题,而非语义理解不足。
  3. 根因分析:CLIP的self-attention学到了空间不变特征(spatial-invariant)——不同位置的token共享相似的attention pattern。这对图像级分类有利(全局表征),但对像素级密集预测有害(需要空间协变特征)。
  4. 核心洞察:self-attention中Q·K^T的乘法形式让CLIP倾向于学习全局关系,不鼓励token关注自身位置。如果改用"自相关"——即token与自身的相似度天然最高——就能自动增强对角注意力,实现空间协变。
  5. 核心idea:抛弃Q·K^T的传统注意力,改为Q·Q^T + K·K^T的相关性注意力(CSA),不需要训练直接复用CLIP预训练权重。

方法详解

整体框架

SCLIP = CLIP + 在最后一个transformer层将原始self-attention替换为CSA模块。仅修改注意力分数的计算方式,其他所有组件(值矩阵、FFN、其他层)完全不变。无需训练、无需额外参数。

关键设计

  1. 原始Self-Attention的问题

    • 标准公式:Attn = Softmax(X·W_q·W_k^T·X^T / √d)
    • W_q和W_k是两个不同的投影矩阵,乘积W_q·W_k^T不保证是对称半正定的
    • 这意味着token的"自相关"(i=j时的对角元素)不一定最大
    • 导致CLIP学到空间不变特征:每个位置的attention map长得差不多
  2. Correlative Self-Attention (CSA)

    • 基本公式:Attn = Softmax(X·W_r·W_r^T·X^T / τ)
    • 关键:使用同一个矩阵W_r的内积W_r·W_r^T,天然保证对称半正定
    • 对角元素增强:token i与自身的相关性天然最大(归一化向量的自相关=1)
    • 语义相关性:相似语义的token间也获得高注意力分数
  3. 实际实现(使用预训练权重)

    • 做什么:直接复用CLIP最后一层的W_q和W_k作为W_r
    • 公式:Attn = Softmax(X·W_q·W_q^T·X^T/τ) + Softmax(X·W_k·W_k^T·X^T/τ)
    • 取Q-Q和K-K相关性的ensemble
    • 为什么能work:CSA对投影矩阵不敏感——它只衡量距离度量,改变W_r只改变距离形式
    • 实验证明:随机初始化的W_r也能获得竞争性结果!
  4. 无需后处理

    • 现有方法(如TCL用PAMR、ReCo用DenseCRF)依赖重型后处理来平滑分割结果
    • SCLIP中CSA天然产生空间连续的特征:相邻语义相似token获得相似注意力
    • 不需要任何refinement或smoothing就能产出好的分割结果

损失函数 / 训练策略

  • 无需训练:真正的零样本、零参数学习方法
  • 仅修改CLIP ViT最后一层的自注意力计算方式
  • 推理时将14×14 patch特征与文本embedding计算密集相似度
  • 支持任意目标类别集(open-vocabulary)

实验关键数据

主实验(8个语义分割基准mIoU%)

方法 VOC21 Context60 Object VOC20 City. Ctx59 ADE20k Stuff 平均
CLIP 18.8 9.9 8.1 49.4 6.5 11.1 3.1 5.7 14.1
MaskCLIP 43.4 23.2 20.6 74.9 24.9 26.4 11.9 16.7 30.3
GroupViT 52.3 18.7 27.5 79.7 18.5 23.4 10.4 15.3 30.7
TCL 51.2 24.3 30.4 77.5 23.5 30.3 14.9 19.6 33.9
SCLIP 59.1 30.4 30.5 80.4 32.2 34.2 16.1 22.4 38.2

消融实验

设计选择 平均mIoU
原始CLIP(Q·K^T) 14.1
MaskCLIP(identity attention) 30.3
CSA with W_q 竞争性
CSA with W_k 竞争性
CSA with random W_r 仍然竞争性!
CSA ensemble (W_q + W_k) 38.2(最优)
温度τ调节 √d 默认值最优
修改哪一层 仅最后一层最有效

关键发现

  1. 从14.1%到38.2%:一个极其简单的注意力修改带来了24.1个百分点的提升
  2. SCLIP超越了需要额外训练的GroupViT(30.7%)和TCL(33.9%),且完全免训练
  3. 随机W_r也能work——证明CSA对投影参数不敏感,其核心优势在于"自相关"机制本身
  4. 不需要PAMR等后处理——CSA天然产出空间平滑的密集特征
  5. Attention map可视化:CSA产生的注意力清晰反映物体边界,与原始CLIP的弥散pattern形成鲜明对比

亮点与洞察

  1. 极简但极有效:整个方法仅需修改一行注意力计算公式,效果提升巨大(+24.1% mIoU)
  2. 根因分析深入:不是简单patch-and-test,而是从self-attention机制深入分析了CLIP密集预测失败的原因
  3. 零成本迁移:无需训练、无需额外参数、不改变模型大小——真正的"free lunch"
  4. 重要启发:CLIP的语言监督预训练已经包含了丰富的密集视觉信息,只是被空间不变的注意力机制"锁住"了

局限性 / 可改进方向

  1. CSA仅替换最后一层——修改多层是否能进一步提升?
  2. 在更大的ViT backbone(如ViT-Large)上效果待验证
  3. 仅评估语义分割,未测试其他密集预测任务(深度估计、实例分割)
  4. CSA的对称性假设在某些场景下可能过强
  5. 与需要训练的方法(如TCL*+PAMR)相比,加入后处理后差距缩小

相关工作与启发

  • MaskCLIP:丢弃Q-K处理(等价于identity attention),本文更优雅地用相关性注意力
  • GroupViT:引入group token学习分割,需要额外预训练
  • TCL:需要fine-tuning+PAMR后处理才能竞争
  • CLIP Surgery:同期工作,也修改CLIP注意力用于分割
  • 启发:其他视觉transformer(如DINOv2、SAM)的self-attention是否也存在类似的空间不变问题?

评分

  • 新颖性:⭐⭐⭐⭐⭐ (极简修改、深刻洞察)
  • 技术深度:⭐⭐⭐⭐ (对注意力机制的分析到位)
  • 实验充分性:⭐⭐⭐⭐⭐ (8个基准、多种消融、有/无后处理对比)
  • 实用价值:⭐⭐⭐⭐⭐ (零成本、即刻可用)
  • 写作质量:⭐⭐⭐⭐⭐ (问题发现→分析→解决的叙事极佳)

相关论文