GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)

Paper:GroupViT: Semantic Segmentation Emerges from Text Supervision

Code:https://github.com/NVlabs/GroupViT

Project Page:https://jerryxu.net/GroupViT/

简介:

  • LSeg 虽然能够实现 zero-shot 的语义分割,但是训练方式并不是对比学习,没有将文本作为监督信号,因此还是需要有监督的分割图标注进行训练。而且由于语义分割的标注非常麻烦,因此分割领域的数据集都不大,LSeg 用的 7 个数据集加起来可能也就一二十万个样本。

  • 如何像 CLIP 一样,利用到文本来进行自监督训练呢?GroupViT 就是语义分割领域像 CLIP 一样使用文本来自监督训练的代表工作之一。GroupViT 通过文本自监督的对比学习来进行语义分割的训练,在推理阶段,可以实现 zero-shot 的推理。

  • GroupViT 的核心思想是利用了深度学习之前无监督分割的 grouping 思想。当时的做法大概是在确定某个中心点之后,不断向外发散,将接近的点都分到一个 group 中,最终发散完毕,得到分割结果。在 GroupViT 中的 grouping 是将 ViT 中的图像块 token进行分配,分配到不同的语义类别 token 上。

GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)_第1张图片

模型架构训练流程:

如下图举例:

  1. 输入图像为24*24,patchsize为16*16,那我们便会得到14*14=196长度的序列,经过linear projection得到patch embedding,维度为196*384(vit-small特征维度为384),另外的输入grouptokens先设为64*384(384为了保证维度相同,便于与patchembedding做拼接,64是希望刚开始时有尽可能多的聚类中心,之后可以合并),grouptoken可以看作cls token,想用grouptoken代表整个图片,而我们用了64个grouptoken的原因是分割任务中每一个类别用一个特征表示,即有64个起始聚类中心,学习过程与cls token类似。

  2. 在6层transformer layer之后,利用学到的语义信息合并到更大的group,利用GroupBlock把之前的图像patch embedding直接assign到这64个grouptoken上,相当于做一次聚类的分配,有64个聚类中心,则有64个token,之后得到segment token维度为64*384,相当于变相的降低了序列长度。

  3. group block用类似于自注意力的方式计算图像块token相似度与grouptoken的相似度得到相似度矩阵,然后用相似度矩阵帮助Image patch做聚类中心的分配。从而实现将输入从196*384降维到64*384。聚类中心的分配其实是不可导的,作者用gumbel softmax将过程变为可导的,再去进行模型的训练。

  4. 常见的图片里类别不会太多,所以将64个类别变得更小,将相似的小的块合并成大的块。故又加了8个新的grouptokens 即8*384,进一步通过transformer学习(3层),将64个segment tokens再次映射到8个聚类中心上,之后又加了一层Grouping block,再将64+8的序列分配到8*384的token上,图像分为8大块,每一块有八个特征。

  5. 文本通过文本编码器的得到一个文本特征Zt,图片现在为8大块特征,利用平均池化得到一个1*384特征,再按照clip的方式,图像特征与文本特征计算一个相似度。

GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)_第2张图片

模型训练过程:

GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)_第3张图片

  • 模型zero-shot推理

    给定一张图片,图片先经过groupViT,得到8个group embedding,再把有可能的标签通过文本编码器得到一系列的文本特征,接下来算图像的group embedding与文本的特征之间的相似度,即可得知每个group embedding对应什么类别。

局限:有几个group embedding只能分割成几类。

GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)_第4张图片

作者试验多少个grouptoken效果最好,故选择了8。

GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)_第5张图片

    作者想知道加的group token到底是怎样工作的,是否为聚类中心,如下图,第一个stage64类对应较小区域(眼睛、四肢),第二个stage8类,对应较大区域 (草地、身体、人脸)

GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)_第6张图片

实验结果:

    本文结果在数据集CC+YFCC上训练,并且是文本监督的,且具有zero-shot迁移能力,但与最好的结果DeepLab V3 plus 88mIou,比本文方法高三十几个点。

  • GroupViT 是第一个实现 zero-shot 语义分割的工作;

  • GroupViT 相较于其他自监督语义分割方法提升显著

  • 但是,PASCAL VOC 在有监督上的水准已经在 90+ 了,因此还是有很大的提升空间。

GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)_第7张图片

    除了与图形配对的文本本身,还将文本中的名词提取出来,按照类似 CLIP 中的方法生成 prompt (如 “A photo of a {tree}.”),与某个图像特征计算对比损失,见原文 Figure 3;

局限性:

  • 现在groupvit的结构更倾向于一个图像的编码器,没有很好的利用dense prediction特性。

  • 背景类,在做zero-shot推理时最大的相似度有时也比较小,作者为尽可能提高前景类分割性能,所以他设置了一个相似度阈值,比如对PASCAL数据集,阈值设置为0.9/0.95,即group embedding与文本的相似度必须超过0.9且是取得最大的那个,才能说grouping enbedding属于这一类,如果都没有超过0.9,即被认为是背景类。不同数据集的阈值设置不同。

oracle对比:

    为了探究目前 GroupViT 的性能瓶颈到底在哪里,分割做的不错,但语义分割没做好,只是分类分错了。作者做了与 oracle 结果进行对比的实验。所谓 oracle mask mIoU,是指模型在完成分割之后,不用模型预测的类别结果,而是将每个mask 与 GT mask 计算 IoU,直接取最大的类别标签作为类别结果。这相当于,模型只要分割的准就行了,语义类别的预测是肯定准的。

GroupViT:Semantic Segmentation Emerges from Text Supervision(语义分割CVPR2022)_第8张图片

    结果如图可以看到,oracle 结果相比于原结果有多达二三十个点的巨大提升,这说明,语义类别预测错误是 GroupViT 模型的一大瓶颈。这是由于对比学习的训练结果对于背景这种语义比较模糊类别很难识别。

你可能感兴趣的:(读论文,机器学习,深度学习,人工智能,计算机视觉,神经网络)