MaskCLIP

📅 发布时间:2026/9/29 10:57:36
MaskCLIP
1. 这篇论文到底想解决什么问题MaskCLIP 最值得掌握的不是某个具体分割结构而是它提出并验证了一个非常重要的问题一个主要为 image-level recognition 训练的 VLM内部到底已经包含多少 local / spatial semantics传统上我们看到 CLIP 的能力是因此很容易认为 CLIP 只知道“这张图片是什么”而不知道“某个东西具体在哪里”。MaskCLIP 的核心观点却是CLIP 在 image-text contrastive learning 的过程中其内部其实已经隐式学习了相当丰富的局部语义只是这些信息最后被 global pooling 汇聚起来没有直接暴露成 dense prediction。论文的目的就是在尽量不改变 CLIP、也不使用 segmentation annotation 的情况下把这些潜在的 local semantics 提取出来。因此整篇论文最核心的思想可以先记成MaskCLIP 更像是在 extraction CLIP 已有的 spatial semantics而不是从零教 CLIP 学 segmentation。2. 为什么 image-level CLIP 内部会存在 local semanticsCLIP 虽然训练目标是 image-text alignment但它训练时看到的文本通常不是单一类别标签而是自然语言 caption。例如一句描述可能包含为了把整张图片和这样复杂的 caption 对齐模型不能完全把图片看成一个不可分割的整体而必须在特征内部某种程度地区分不同局部区域及其语义。论文举例说明为了正确匹配一句复杂描述CLIP 必须把图像语义分解到局部区域并与 man、bat、swing 等概念建立对应关系。因此作者的判断可以概括为image-text alignment 在训练 global semantics 的同时也隐式产生了 local semantic organization。但这里要注意这并不意味着 CLIP 已经具有完整的 pixel-perfect segmentation 能力更准确地说是它内部已经存在一定程度的region / patch-level semantic localization。3. 原始 CLIP 为什么没有直接表现出这种 local semantics以 CLIP-ResNet 最后的 global attention pooling 为例输入 feature map 中每个 spatial location 都有一个特征每个位置分别产生 key 和 value。所有空间位置先平均得到全局特征再产生一个 global query。这个唯一的 global query 与所有位置计算 attention weight最后把各个位置的 feature 加权汇聚其中是 CLIP 原本 attention pooling 中最后的 linear projection并不是 MaskCLIP 新增加的网络。论文指出每个位置实际上都已经存在而最终的 global representation 只是把这些局部特征进一步汇聚。所以原始 CLIP 可以简单理解为也就是说局部信息并不是完全不存在而是在最终输出阶段被压缩成了一个 global image representation。4. MaskCLIP 的核心操作不再把 local semantics 汇聚掉这是整篇论文技术上最重要、也最容易理解的一步。作者发现在进行 global pooling 之前每个位置的已经包含比较丰富的 local semantics而且仍然保持 CLIP 原有的 vision-language correspondence。因此作者的想法非常直接既然每个已经有语义那就不要再把它们全部汇聚成一个 global vector。于是原本被改成直接保留由于这些特征仍然对应原来的 spatial locations把它们重新排列以后就形成也就是一张dense semantic feature map。实际实现中MaskCLIP 去掉了 query 和 key embedding 对最终 dense prediction 的作用并把 value embedding 和最后的 linear projection改写成对应的convolution从而直接保留每个 spatial location 的输出。重要的是这些权重来自原本已经训练好的 CLIP并不是重新训练一个新的 segmentation feature extractor。因此这一部分最适合记成一句话CLIP 原来把 local semantic features 聚合掉了MaskCLIP 只是选择在聚合之前把它们取出来。5. 有了 dense semantic feature怎么得到 segmentation假设现在每个位置的视觉特征为同时给定需要分割的类别例如 dog、cat、grass、sky将这些文本送进原始 CLIP Text Encoder 得到之后不需要额外训练 classifier而是直接使用 CLIP 原有的 vision-language alignment对每个位置和每个类别做相似度于是每一个 spatial location 都可以判断自己最接近哪个文本类别。整个过程可以概括为因此 MaskCLIP 的本质并不是重新学习一个 segmentation classifier而是把原来 image-text similarity 的思想从整张图扩展到了每一个 spatial location。作者强调它没有增加额外的映射参数而是直接保留原始 CLIP 的 visual-language association。6. 为什么作者不直接 fine-tune CLIP 做 segmentation作者最开始其实尝试过一个非常自然的方案然后使用 segmentation data 正常 fine-tune。这个方法在 seen classes 上可以取得不错结果但 unseen classes 的性能明显下降。作者认为一个关键原因是这种 fine-tuning 破坏了 CLIP 原本已经建立好的 vision-language associationbackbone 结构发生变化、CLIP image encoder 的参数被更新同时又加入了只在 seen classes 上训练的 mapper因此模型逐渐变成一个针对训练类别优化的 closed-set segmentation model而失去了原本的 open-vocabulary generalization。所以论文并不是简单得出fine-tuning不好而是发现了一个更重要的 trade-off针对 seen segmentation classes 优化 spatial prediction可能会牺牲 CLIP 原有的 open-vocabulary semantics。这也是为什么 MaskCLIP 采取完全相反的思路不要急着重新教 CLIP segmentation先看看 CLIP 已经会什么。7. MaskCLIP如果 CLIP spatial precision 不够怎么办MaskCLIP 虽然可以直接产生 segmentation但它本质上仍然是一个为了 image classification 设计的 CLIP image encoder因此它的 spatial resolution、boundary precision 和 dense modeling 能力都有限。作者没有继续大幅 fine-tune CLIP而是把两个能力拆开CLIP负责 semantic / open-vocabulary knowledgesegmentation network负责 precise spatial prediction具体做法是让 frozen MaskCLIP 先生成 pseudo labels然后用这些 pseudo labels 去训练 DeepLab 等专门的 segmentation network这就是 MaskCLIP。因此它实际上给出了一个非常漂亮的能力分工CLIP提供“what / roughly where”segmentation network学习“exactly which pixels”。这也给出了关于“保留原有能力与微调之间界限”的一个很实用的原则尽量不要直接破坏负责 open-vocabulary generalization 的 CLIP representation space而把新的 spatial capability 放在独立模块或独立网络中学习。论文并没有给出诸如“冻结多少层”或“learning rate 应该小于多少”这样的明确数值界限它给的是这种结构层面的设计原则。8. 两个额外 refinementKey Smoothing 与 Prompt DenoisingMaskCLIP 本身的 dense prediction 比较 noisy所以作者还提出了两个不需要训练的 refinement。Key Smoothing利用了最后 attention layer 中原本就存在的 key feature。作者认为如果两个位置的 key feature 很相似它们的 prediction 也应该比较接近因此利用不同位置之间的 key similarity 对预测进行 smoothing。这相当于利用 patch 之间的视觉相似性增强 spatial consistency。Prompt Denoising针对的是 open-vocabulary 分类时的 distractor 问题。例如给模型很多候选类别但一张图片里实际上只有少数类别存在。如果某个文本类别在所有 spatial locations 上的 confidence 都很低就把该 prompt 去掉从而减少无关类别对 dense prediction 的干扰。这两个模块不是论文最核心的创新理解到“一个增强 spatial consistency一个去掉不可能存在的类别”即可。9. 实验真正证明了什么首先在完全没有 segmentation annotation 的 annotation-free setting 下MaskCLIP 就已经能直接做 segmentation。例如 PASCAL Context 上ViT-B/16 的普通 dense CLIP baseline 是 9.0 mIoUMaskCLIP 提升到 21.7加 Key Smoothing 和 Prompt Denoising 后达到 25.5而 MaskCLIP 达到 31.1。COCO-Stuff 上也表现出类似趋势。这说明CLIP 内部的 local semantics 不只是可视化上的现象而是真的可以被用于 dense prediction。其次在 transductive zero-shot segmentation 中MaskCLIP 对 unseen classes 的提升非常明显PASCAL VOC 的 unseen mIoU 从此前 35.6 提升到 86.1PASCAL Context 从 20.7 提升到 66.7COCO-Stuff 从 30.3 提升到 54.7。作者还在 web images 上测试了 red car、yellow car、Batman、Joker 等 fine-grained 或 novel concepts说明这种 dense semantics 继承了 CLIP 的 open-vocabulary property。更有意义的是 fine-tuning 对比单纯 adapted DeepLabv2 在 PASCAL VOC unseen classes 上只有 3.7 mIoU而加入 MaskCLIP-guided learning 后达到 72.8再加入 self-training 后达到 86.1。所以这组实验不是单纯证明“MaskCLIP 比某个 baseline 好”而是在说明CLIP 原本的 open-vocabulary semantics 非常有价值关键问题是如何把它转换成 dense prediction而不要在转换过程中把它破坏掉。10. 这篇论文对 VLM Segmentation 最重要的启发从研究角度看我觉得这篇论文最应该留下的是下面这个能力分解MaskCLIP 表明CLIP 的情况大致是semantic understanding很强rough spatial grounding已经隐式存在不少precise boundary / dense spatial modeling明显不足所以问题不能简单理解为“VLM 不会 segmentation因此要给它学习一种全新的 segmentation 能力。”更值得问的是VLM 已经知道多少 spatial information以及我们增加的新能力到底是 semantic knowledge还是把已有 semantic knowledge 更好地 extraction / grounding 到空间中MaskCLIP 给出的答案更接近semantic localization 在很大程度上已经存在我们需要做的是 expose / extract / preserve / refine。但它同时也表明粗粒度 semantic localization精确 pixel grounding因此更合理的研究问题可能不是重新教 VLM “什么是 dog”而是研究如何把 VLM 已经拥有的 semantic knowledge 更完整、更稳定地映射到 region / pixel space。最后用一条主线记住 MaskCLIP整篇论文其实可以压缩成CLIP 中已经存在 local semantics→ 原本被 global pooling 隐藏 → MaskCLIP 在 pooling 前把提取出来 → 与 text embedding 做 dense similarity → 直接得到 open-vocabulary segmentation而 MaskCLIP 再进一步CLIP 保留 semantic generalization → 生成 pseudo labels → segmentation network 学习更精确的 spatial prediction如果只记一句话可以记CLIP 并不是完全不知道“dog 在哪里”而是它原本只需要最终告诉你“这张图有 dog”MaskCLIP 做的就是在这些局部语义被压成 global representation 之前把它们拿出来。***重要***不微调因为会破坏其原有的open vocabulary能力而是增加能精确分割的能力