ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

What Holds Back Open-Vocabulary Segmentation?

2026/10/2 17:26:15 拓冰建站 浏览量
What Holds Back Open-Vocabulary Segmentation? 先把它记成一个非常简单的框架OVS 性能瓶颈 Region Classification Mask Proposal Train/Test Labeling Mismatch作者通过一系列Oracle 实验把这几个问题一个一个拆开来看。论文观察到近年来 OVS 性能已经出现明显的平台期而且 COCO 上训练、ADE20K 上测试的 open-vocabulary 方法和直接在 ADE20K 上监督训练的模型仍然有接近 20 个点的差距。1. 论文想回答什么我们之前一直在讨论一个问题为什么 image-level VLM 很强 但到了 dense / pixel-level prediction 就变差MaskCLIP、DenseCLIP、CAT-Seg 等工作更多是在想怎么把 CLIP 的语义能力更好地下沉到 pixel / region而这篇论文换了一个角度假如把 OVS 系统里的某一个组件直接换成“完美组件”性能到底能提高多少这样就可以判断真正卡在哪里。作者主要研究的是mask-based OVS具体选了FC-CLIP、 MAFT它们都是CLIP Mask Transformer核心把任务拆成Mask Localization Mask Recognition即先产生 mask再判断这个 mask 是什么类别。这点其实和 OpenSeg 的思路非常接近region/mask proposal → region feature → text matching2. 研究的标准 pipeline大致可以记成Mask Decoder 会产生很多候选 mask同时每个 mask 有自己的 embedding另一方面然后判断这个 mask 属于哪个类别。除此之外还有一个特殊类别no-object如果一个 query 被判断为 no-object它就不会进入最终 segmentation。论文特别指出这个no-object embedding 是在训练集上学出来的这为后面的问题埋下了伏笔。所以先记住250 个左右 candidate masks → 选择/过滤 → 分类 → 最终 segmentation3. 第一组实验如果 Mask 完全正确CLIP 能不能认对这就是Segmentation Oracle。直接把模型产生的 mask 换成 Ground Truth Mask完全不考虑 segmentation boundary 的问题。对于每个 GT mask用mask pooling然后与所有类别的 CLIP text embedding 比较给出完美的区域我看 CLIP 能不能认出是什么结果仍然不够好。最好的 ConvNeXt-Large 即使使用 perfect segmentation也只有41.8 PQ仍然比对应的 in-domain supervised model 低接近 8 个点。作者因此得到Finding 1: CLIP 的 region-level classification 本身就是瓶颈不是说只要 segmentation mask 准确CLIP 的强大语义能力就一定能正确识别这个区域。这和前面学习 MaskCLIP / CAT-Seg 的问题正好对应上CLIP 知道整张图片dog并不代表任意一个准确 dog regiondog 都能稳定成立。4. 第二组实验如果 Classification 完全正确呢作者反过来做Classification Oracle。这一次保留模型自己的 mask但是只要一个 mask 和 GT overlap 足够作者就直接把它的类别改成正确答案。也就是Mask 还是模型自己的Category 直接给正确答案结果 FC-CLIP26.8 → 39.8MAFT26.9 → 39.2提升非常明显尤其 unseen class 提升更大。说明classification 确实是大问题。但问题来了即使分类完全正确性能还是明显低于 in-domain model说明剩下的问题就在Mask Proposal所以现在已经得到两个瓶颈Classification 不够好 Proposal 不够好5. 最有意思的实验模型是真的“没有产生正确 mask”吗这里是我觉得这篇论文最值得你关注的一部分。Mask decoder 实际上不是只输出最终那几个 mask而是先生成很多候选论文中最多N250于是作者问有没有可能正确 mask 其实已经在这 250 个里面只是最后被选错、过滤掉了于是做Mask Selection Oracle利用 GT从全部 candidate masks 中挑出最匹配 GT 的那些 mask。理论上Oracle Selection 应该性能提升。结果第一次居然性能下降FC-CLIP26.8 → 21.96. 为什么“选对 mask”反而变差——no-object虽然 Oracle 已经把正确 candidate mask 找出来了但 classifier 可能说→ no-object于是直接 discard因此正确的 mask 其实已经生成了 但被 no-object filtering 干掉了作者于是直接删除 no-object logit不允许这些 oracle-selected masks 被扔掉。结果 FC-CLIP26.8 → 36.7MAFT26.9 → 33.7unseen class 的提升尤其明显。所以得到非常重要的 Finding 3很多 valid mask 不是“没找到” 而是“找到后被错删了”。真正的问题变成Proposal Generation → Proposal Selection7. 那为什么 unseen object 特别容易被当成 no-object这里就进入这篇论文第二个非常重要的观点 Training supervisionTest objective举论文里的例子painting。ADE20K 认为墙上的画应该是一个独立 objectwall painting但在 COCO 中这个 painting 往往unlabeled或者直接merged into wall那么模型训练的时候如果它产生训练 supervision 反而可能告诉它于是模型学会看到墙上的 painting mask → 不应该输出。但是 ADE20K 中 painting 又是 evaluation 想要的类别。类似地还有pillow。所以问题已经不只是COCO 没见过 ADE20K 的 class name而是更严重的COCO 教模型“不应该把这个区域单独分出来”但 ADE20K 却要求“把这个区域单独分出来”论文把它称作labeling policy conflict / shift。这也是Finding 5训练 annotation policy 和测试 annotation policy 冲突8. 所以这篇论文最后真正得出的结论是什么如果把整篇论文压缩成一张逻辑图我认为就是Open-Vocabulary Segmentation现在有三层问题1.VLM region recognition 不够好2.Mask proposal / selection 不够好3.taxonomy 与 test taxonomy 的定义方式冲突尤其第三点很容易被忽视。以前我们可能自然认为Open Vocabulary 没见过 dog → 测试靠 CLIP 认识 dog但这篇论文提醒我们更困难的情况其实是训练阶段不仅没要求你预测它 甚至明确训练你“不要预测它”这时候再强的 text classifier 也没用因为正确 mask → no-object → discardCLIP 根本没有机会分类它。9. 作者认为未来应该怎么做作者最后给出的方向主要有三类。1、benchmark / taxonomy 本身要处理好train taxonomy → test taxonomy不能存在大量互相矛盾的 annotation policy。2、也是非常有意思的一点Vocabulary-aware Proposal Generator现在的 proposal generator 基本是无论测试 vocabulary 是dog, cat 还是dog head, dog body, tail它产生的 proposals 基本一样。作者认为未来应该变成类似即想分什么会影响如何产生 mask。3、引入更丰富的 annotation guidance如 few-shot segmentation examples 或 natural language annotation guidelines让模型知道某个类别到底应该怎么划边界、什么算独立对象。10. 和之前看的论文放到一起理解到这里其实可以把你最近学的东西串起来了。MaskCLIP / DenseCLIP 主要在问CLIP 里到底有没有 dense semantic informationCAT-Seg 在问粗糙的 pixel-text similarity 怎样通过 cost aggregation 变好OpenSeg / SAN 这类 mask-based 方法更多是在解决怎样得到 region再用 VLM 做 open-vocabulary recognition而这篇论文是在这些工作之后问组件都已经做了这么多改进 为什么 OVS 还是上不去它给出的答案是不是一个组件的问题而是 dense VLM representation 还不够好同时 mask proposal / selection 也有问题而且更底层还有 training supervision 本身可能和 open-vocabulary evaluation 冲突。你现阶段读这篇论文我觉得最值得真正记住的不是具体 PQ 数字而是下面这条逻辑链Perfect Mask → Classification 仍然不好Perfect Classification → Segmentation 仍然不好继续往下追很多 good masks 其实已经生成 → 被 no-object 丢弃最终追到COCO supervisionADE20K evaluation policy所以这篇论文真正的核心不是“提出了一个更强 OVS”而是告诉你OVS 的问题不仅是如何学到更好的 dense feature 还包括模型到底应该生成什么 region 以及训练数据有没有告诉它正确的 segmentation policy。1、CLIP 强大的 image-level semantics强大的 region-level semanticsCLIP 可能认识 dog 但不一定能从一个局部 dense region representation 中 稳定、精确地区分 dog 与所有其他类别。论文自己最终概括为当前 VLM 缺少足够好的dense representation / region-level classification ability。2、mask proposal 为什么会成为 bottleneckmask proposal bottleneck实际上包括两层Proposal Generation Proposal Selection即 “有没有生成正确 region” 和 “生成以后有没有留下来”都有问题。4、当前方法到底主要卡在 semantics还是 spatial localization两者都是独立 bottleneck但 annotation-policy shift 导致的很多严重错误首先表现为 proposal / spatial failure最值得记住的是最后这一层OVS 并不是简单的 “先做好 class-agnostic segmentation再让 CLIP 分类”就可以解决。因为所谓的class-agnostic mask 其实并没有真正脱离 vocabulary。你认为哪些区域值得成为一个独立 mask本身就受到训练 taxonomy / annotation policy 的影响。这其实也是这篇论文对前面 OpenSeg、SAN 这类「proposal VLM classification」路线最重要的反思