Open Vocabulary Segmentation

本文记录开放世界语义分割相关工作。包括Zero Shot语义分割的工作。

关于开放视觉感知

首先回顾close set的语义分割,任务预定义了 \(K\) 个类别,之后训练一种网络将RGB图像空间映射到离散的 \(K\) 标签空间。模型可能在学习过程中隐式地学习到了 \(K\) 个类别的属性。但是用户在使用的时候,必须要自己建立真实类别与这 \(K\) 个预定义类别的联系。比如用户想识别真实世界中的 “稻草人”,但是首先要想到在预定义类别中与之最相近的就是“人”,接着需要在close set语义分割系统中识别出来的“人”中判断是不是稻草人。

而一些大规模的图文匹配数据集催生了一批具有Zero shot感知能力的模型,例如(CLIP这样的图文匹配模型、Diffusion这样的文生图模型)。我们希望这样的能力能够被继承到分割模型中,也就是说分割模型能够显式地理解文本概念并且将其与正确的image region关联起来。从模型上来看,就是从学习softmax classifier变成了学习mask embedding和text embedding。普遍认为,text embedding已经学习地很好了,要做地就是让vision embedding与之对齐。

由此,诞生了如下几种的实验setting。

  • Zero shot: 将某个数据集的类别划分为seen和unseen,仅仅使用seen类别的图像特征和文本类别训练,在seen和unseen上推理。
  • Open Vocabulary: 依然会使用训练集上的所有信息,但是在建模上,输出mask embedding,通过和现成的text embedding计算相似度的方式完成分类。测试在一个数据集训练的模型在多个数据集上的推理能力。
  • Unsupervised/Training Free:不使用任何分割标注。可能是无监督学习;可能是重新预训练、之后再进行推理(SegCLIP);也可能是直接使用某个预训练模型进行推理。
  • Transductive Zero Shot:

截至目前(2023.10),OV的局限性: - 模型不确定性,什么情况下会出错?目前只能在固定类别上衡量模型的能力,但是在应用中需要在广泛的类别中衡量。目前的Evaluation是不够的。 - 性能还不够好,需要逼近甚至超过close set模型。 - 现有的训练标注粒度还不够细。 - 现在主要关注visual category,需要解决visual attribute、relationship等问题。 - Scale up能力不足。

论文阅读列表

Zero-Shot Semantic Segmentation

Towards Open-Set Semantic Segmentation Of Aerial Images

Unsupervised Semantic Segmentation by Contracting Object Mask Proposals

A Simple Baseline for Zero-shot Semantic Segmentation with Pre-trained Vision-language Model

LSeg

Language-driven Semantic Segmentation

Semantic segmentation in-the-wild without seeing any segmentation examples

ZegFormer

ZegCLIP

OpenSeg

不使用Pixel Annotation

GroupViT

ReCO

(no annotation)

MaskCLIP

SegCLIP

本文研究开放词汇表语义分割,遵循“学习patch表示到文本表示的对齐并学习patch分组”的pipeline,设计了一种cross-attention based聚类方法,重新训练了一个CLIP Image Encoder,使其具有空间上粒度更细的可以和文本对齐的patch特征。

SegCLIP框架图

如上图所示,Semantic Group插入在Encoder的Transformer Layer之间。基于聚类的思想,先初始化 \(L\) 个可视化的语义中心 \(\mathcal{H}_c = \{c_k\}_{k=1}^{L}\);在计算语义中心和 \(N\) 个patch语义 \(\mathcal{H}_p\) 距离的建模上,使用cross attn,得到的 \(\hat{\mathcal{H}_c}\) 是微调后的语义中心;接下来将patch特征与聚类中心做一个分配,使用Gumbel-Softmax(依概率采样),得到匹配矩阵 \(\mathcal{M}\in \mathbb{R}^{N\times L}\) (类同GroupViT的soft assignment);接下来,根据分配结果更新聚类中心,相比于KMeans中使用的将同一个聚类中的patch语义均值作为新的聚类中心 \(\hat{\mathcal{H}_p} \in\mathbb{R}^{L\times C}\),这里添加了残差链接以及MLP: \[ \hat{\mathcal{H}_p} = \operatorname{MLP}(\operatorname{MEAN}(\mathcal{M}^T\mathcal{H}_p) + \hat{\mathcal{H}_c}) \]

SegCLIP重建损失示意图

除了CLIP本身的contrastive loss之外,还设计了另外两个损失。如果说,之前的cross-attn只是建立了聚类中心和所有patch特征的关系,这两个损失是真正在缩小类内距离。

对于重建损失,其动机是,通过同一个聚类中可见的patch embedding获得的聚类中心,应该跟其他不可见的patch embedding语义仍然相似。

对于KL损失,其动机是使用现成的superpixel方法,得到另外一组super patch,让该super patch与 \(\mathcal{M}\) 表示的聚类保持一致。

训练时,SegCLIP使用CLIP初始化参数并在文本对数据集上训练image encoder,之后直接在各个语义分割数据集上,进行Zero-Shot的推理。

SegCLIP关于两个额外损失函数的消融实验