ZSSeg: A Simple Baseline for Open-Vocabulary Semantic Segmentation with Pre-trained Vision-language

ZSSeg: A Simple Baseline for Open-Vocabulary Semantic Segmentation with Pre-trained Vision-language (arXiv-2022)

在这里插入图片描述
Paper: arXiv
Code: GitHub
主要贡献:语义分割模型与视觉-语言模型的结合,实现了任意类别的语义分割任务。

摘要

最近,通过视觉语言预训练进行的开放词汇图像分类取得了令人难以置信的成就,该模型可以对任意类别进行分类,而无需看到该类别的附加注释图像。然而,目前尚不清楚如何使开放式词汇识别在更广泛的视觉问题上发挥作用。本文以开放式词汇语义分割为目标,将其建立在现成的预先训练的视觉语言模型(即CLIP)上。
然而,语义分割和CLIP模型在不同的视觉粒度上执行,即语义分割在像素上执行,而CLIP在图像上执行。为了弥补处理粒度的差异,我们拒绝使用流行的基于一阶段FCN的框架,并提倡两阶段语义分割框架,其中第一阶段提取可推广的掩码提议,第二阶段利用基于图像的CLIP模型对在第一阶段中生成的掩码图像裁剪执行开放词汇分类。
我们的实验结果表明,当只在COCO Stuff数据集上训练并在其他数据集上评估而不进行微调时,这种两阶段框架可以获得比FCN更好的性能。此外,这个简单的框架还大大超过了以前的零样本语义分割技术:在Pascal VOC 2012数据集上为+29.5 hIoU,在COCO Stuff数据集上则为+8.9 hIoU。凭借其简单性和强大的性能,我们希望这个框架能作为一个基线,为未来的研究提供便利。代码在https://github.com/MendelXu/zsseg.baseline.

引言

语义分割是一项基本的计算机视觉任务,它为图像的每个像素分配类别标签。随着深度学习的发展[27,42,23,13,35],语义分割在监督学习范式下也发生了巨大的变化[36,7,3]。然而,与常见的图像级数据集(如ImageNet-1K/ImageNet-22K图像分类)不同的是,现有的语义分割任务通常涉及多达数十或数百个类别,这是由于注释成本显著较高,从而限制了分割器处理丰富语义的能力。

零样本语义分割[5]试图打破有限类别的瓶颈。然而,狭义的零样本语义切分通常只需要少量标记的分割数据,并且拒绝使用任何其他数据/信息,因此性能较差。在这项工作中,我们将重点放在另一个更实用的设置上:开放词汇表语义分割,作为一种广义的零样本语义分割,更侧重于建立一种可行的方法来分割任意类别的对象,并允许使用除分割数据之外的其他数据/信息。具体而言,我们建议利用图像级视觉语言学习模型的最新进展,即CLIP[41]。

虽然视觉语言学习模型已经使用丰富的图像字幕数据学习了强大的视觉类别对齐模型,但如何有效地将其图像级识别能力转移到像素级尚不清楚。一个自然的想法是将视觉语言模型与全卷积网络(FCN)[36]集成,这是一种广泛用于全监督语义分割的架构。集成的主要困难在于,CLIP模型是在图像级学习的,这与FCN的粒度不同,FCN将语义分割建模为像素分类问题,其中线性分类器应用于每个像素特征以产生分类结果,线性分类器权重矩阵的每一列表示每个类别。根据经验,我们发现粒度不一致导致性能不令人满意。

为了更好地利用图像级CLIP模型中涉及的强大视觉类别对应能力,我们采用了基于掩码提议的语义分割方法,如MaskFormer[9],该方法首先提取一组类别不可知的掩码提议,然后将每个掩码提议分类到不同的类别中。这种两阶段方法将语义分割任务解耦为两个子任务,即类不可知掩码生成和掩码类别分类。这两个子任务都很好地适应了处理不可见类:首先,使用可见类训练的类不可知掩码提议生成被观察到可以很好地推广到不可见类;其次,第二掩码提议分类阶段与CLIP模型中使用的识别粒度相同。为了进一步弥合与CLIP模型的差距,每个提案的掩蔽图像裁剪被用作CLIP模型用于不可见类分类的输入。此外,在给定预先训练的CLIP模型的情况下,我们采用提示学习方法[34]来进一步提高看不见类的分类精度。

我们在两种不同的设置下评估了所提出的方法:1)交叉数据集设置,其中模型在一个数据集上训练,并在其他数据集上评估,而不进行微调。在这种情况下,我们的两阶段框架表现出了良好的泛化能力。它在Cityscapes上的性能优于FCN方法,在Pascal Context上的性能为+113.1 mIoU,在ADE20k上的150个类的性能为+5.6 mIoU;在ADE2k上的847个类的质量为+2.9 mIoU。2) 零样本设置,其中模型在数据集的可见类的一部分上进行训练,并在所有类(包括可见类和不可见类)上进行评估。我们使用此设置与其他零样本语义分割方法进行比较。我们表明,所提出的方法虽然简单易行,但可以大大超过以前的先进零样本分割方法[5,40,48,20]。在Pascal VOC 2012[14]上,这种方法比以前的最佳方法(无自我训练)高出+37.8 hIoU,当涉及额外的自我训练过程时,高出+29.5 hIoU。在COCO Stuff[6]上,当涉及额外的自我训练过程时,该方法比以前的最佳方法(无自我训练)好+19.6hIoU和+8.9hIoU。我们希望我们简单而有效的方法能够鼓励更多人朝着这个方向进行研究。

Method

下图显示了我们的两阶段框架的概述。给定一幅图像,首先生成一组掩码提议,然后将每个建议输入图像编码器,并与通过在提示类描述上应用文本编码器获得的类权重进行比较,以执行分类。最后,将掩模预测组合在一起以产生最终的分割结果。我们将在下面描述我们框架的每个组成部分。
在这里插入图片描述

掩码提议生成

我们首先介绍掩码提议的生成。在我们的工作中,我们尝试了三种不同的方法来生成掩模提议:

GPB-UCM [2]. 这是一种经典的方法,通过考虑多个低级线索(如亮度、颜色、纹理和局部梯度)来生成分层段。这种方法生成的片段通常与物体的轮廓很好地对齐。

Selective Search [46]. 该方法还可以生成分层分段。由于该方法可以有效地对目标进行定位,因此被广泛应用于目标检测系统中[17,18]。

MaskFormer [9]. 这是最近提出的一种监督语义分割方法。与将语义分割建模为逐像素分类问题的完全卷积网络不同,MaskFormer将语义分割分解为两个子任务:首先预测片段,然后对每个片段的类别进行分类。我们观察到MaskFormer预测的片段可以用作掩码提议,并且我们经验地证明(见表6),在可见类上训练的MaskFormer可以在未见类上产生高质量的掩码提议。因此,我们利用MaskFormer作为默认的掩码提议生成器。

通过CLIP进行区域分类

使用CLIP的两种策略

利用预训练的CLIP进行区域分类有两种策略:

1)第一种策略是将CLIP图像编码器直接应用于每个掩模提议以进行分类。具体地,给定图像和掩模提议,首先以0.5的阈值对掩模提议进行二值化,然后将二值化的掩模提议应用于输入图像,擦除未使用的背景并且仅裁剪前景区域。将蒙版图像裁剪的大小调整为224x224,然后输入CLIP进行分类。然而,由于没有额外的训练过程,不能利用可见类的训练数据,导致推断中可见类的性能较差(见表7)。

2)为了利用可见类的训练数据,另一种方法是对图像编码器进行再训练。然而,如果我们简单地在可见类的训练数据上学习一组新的分类器,那么重新训练的图像编码器对不可见类没有泛化能力,因为这些类没有相应的分类器。因此,我们建议使用从预训练的CLIP模型的文本编码器生成的特征作为再训练的图像编码器的固定分类器权重。在这种方法中,图像编码器对看不见的类具有一定的泛化能力,因为鼓励图像编码器通过看到的类将视觉特征嵌入到文本编码器的相同嵌入空间中。值得注意的是,通过简单地使用CLIP生成的文本特征作为MaskFormer的分类器权重,可以很容易地将这种方法集成到MaskFormer的训练过程中,从而避免训练额外的图像编码器的需要。

这两种策略是相辅相成的(见表7),因此我们默认将这两种策略的结果集成在一起。给定一个掩码提议,我们裁剪前景区域,并通过CLIP视觉编码器和文本编码器计算其分类概率。CLIP的分类概率可以用在已知类上训练的监督模型进行集成,然后根据章节4.3生成最终的掩码结果。

提示的设计

最初的CLIP不是为开放词汇语义分割而设计的。如何设计可行的文本提示需要探索。

手工制作的提示。一种简单的方法是重复使用CLIP提供的手工提示,CLIP最初是为ImageNet1K[12]上的图像分类而设计的。有80个不同的提示,每个提示都由一个带有空白位置的自然句子组成,用于注入类别名称。由于这些提示最初并不是为语义分割而设计的,因此其中一些提示可能会产生不利影响。因此,我们在训练数据上评估这些提示中的每一个,以选择一个对开放词汇语义分割最有用的提示。

基于学习的提示。提示学习[34,51]最近显示出在特定下游任务中调整预先训练的语言/视觉语言模型的巨大潜力。我们也对这项技术进行了探索。具体来说,提示是一系列标记(token)。每个标记属于两种类型之一:[P]表示提示标记,[CLS]表示类别标记。广义提示可以公式化为[P]_0…[P]_m [CLS],其中m是提示标记的数量。在提示学习中,提示标记[P]_0…[P]_m被设置为可学习的参数,其可以在可见类上训练并推广到不可见类。

掩码预测组装

由于掩码提议可能相互重叠,导致一些像素可能被几个不同的掩码方案所覆盖。因此,我们采用简单的聚合机制从掩码预测中生成语义分割结果。具体来说,对于给定像素q,其预测属于第i类的概率定义为…,最后选择置信度最高的类别。

完全卷积网络方法(Baseline方法)

除了我们提出的两阶段框架外,一种更传统的方法是使用广泛使用的全卷积网络(FCN)。作为监督语义分割的主要方法,FCN将语义分割公式化为逐像素分类问题。具体而言,给定图像,FCN生成高分辨率特征图,并在每个像素上应用一组学习的分类器来产生分割预测。与我们提出的两阶段框架类似,在FCN框架上应用CLIP也有两种策略:

1)直接使用CLIP视觉编码器生成的特征图进行逐像素分类。请注意,在原始CLIP模型中,图像的特征由[CLS]标记(token)的特征表示,而不是由特征图表示,这种差异可能会导致性能下降。此外,原始CLIP模型在预训练期间使用224×224的图像大小,而语义分割通常需要更高的图像分辨率(例如,较小的大小为640)。因此,在推理过程中直接使用高分辨率图像可能会由于图像大小的不一致而导致较差的性能。为了缓解这个问题,我们尝试使用滑动窗口技术,该技术在以前的工作[7]中被广泛用于执行多尺度推理。我们根据经验发现,它可以提高性能,从而在默认情况下使用它。

2)所看到的类的训练数据不能在第一策略中使用。相反,我们通过第4.2节中介绍的类似方法,在可见类上重新训练了基于FCN的视觉编码器。具体来说,我们使用CLIP文本编码器来生成固定的分类器权重。因此,重新训练的模型可以对看不见的类获得一定的泛化能力。

与两阶段框架相同,如果没有指定,我们也默认集成这两种策略的预测。

猜你喜欢

转载自blog.csdn.net/qq_33757398/article/details/130668836