摘要
部分监督实例分割是一种通过学习有限的base类和带注释的掩码来从novel类别中分割对象的任务,从而消除了沉重的注释负担。解决这一问题的关键是建立一个有效的类不可知掩码分割模型。与以前只在base类别上学习此类模型的方法不同,在本文中,我们提出了一种名为ContrastMask的新方法,该方法在统一的像素级对比学习框架下,在base类别和novel类别上学习mask分割模型。在这个框架中,base类别的带注释掩码和新类别的伪掩码作为对比学习的先验,其中来自掩码区域(前景)的特征被拉到一起,并与来自背景的特征进行对比,反之亦然。通过该框架,极大地提高了前景和背景之间的特征区分,便于类不可知的掩码分割模型的学习。在COCO数据集上的详尽实验证明了我们的方法的优越性,它优于以前的最先进技术。
1. Introduction
实例分割是计算机视觉中最基本的任务之一,它要求对整体图像进行像素级预测,并识别每个单独的物体。许多工作[8,13,18,20,27,32,40,43]通过依赖大量可用的像素级注释数据来提高实例分割性能。然而,执行像素级注释(掩码注释)是非常繁重的,这阻碍了大量新类别实例分割的进一步发展。
由于box注释比mask注释[12]更便宜,更容易获得,解决上述问题的常用方法是执行部分监督的实例分割[15,19,23,46]。这个实例分割任务最初是在论文Learning to Segment Every Thing[19]中提出的,其中对象类别分为两个部分:base和novel。它们都有box注释,而只有base类别有额外的掩码注释。然后,该任务的目标是利用带掩码注释的base类数据,将实例分割模型推广到新类别。在部分监督环境下,实现良好的实例分割性能的主要障碍是如何通过对具有有限注释的数据的学习来区分任意类别的每个框内的前景和背景。
之前的方法[2,15,19,23,30,31,46]通过学习一个类别不可知的掩码分割模型来分离前景和背景,通过捕获类别不可知的线索,如形状[23]和外观共性[15]来解决这一任务。然而,这些方法只在base类上学习类不可知的mask分割模型,忽略了大量新类别的训练数据,因此缺乏将mask分割模型在base类上的分割能力转移到新类别上的桥梁。
为了建立这种桥梁,在本文中,我们提出了一种新的部分监督实例分割方法ContrastMask,该方法在统一的像素级对比学习框架下,在base类别和novel类别上学习一种类不相关的mask分割模型。在此框架中,我们设计了一种新的查询共享像素级对比损失,以充分利用来自所有类别的数据。为此,通过类激活映射(Class Activation Map, CAM)[2,45]计算出的base类的带注释掩码或novel类的伪掩码作为区域先验,不仅表示前景和背景分离,还表示共享查询、正键和负键。具体来说,给定一个包含base类别和novel类别的训练图像batch,我们建立两个共享查询:前景query和背景query,通过平均掩码区域内和外部的特征来获得,分别包括注释掩码和伪掩码。然后,我们执行一种特殊的采样策略来选择合适的key。通过引入提议的损失,我们期望将掩码区域内/外的key拉到前景/背景共享查询中,并将其与掩码区域外/内的键进行对比。最后,将像素级对比学习框架学习到的特征融合到类别不相关的掩码头中进行掩码分割。
与之前的方法相比,ContrastMask有几个优点:1)充分利用训练数据,使得新类别的数据也有助于分割模型的优化过程;2)更重要的是,它通过统一的像素级对比学习框架搭建了一个桥梁,将base类别的分割能力转移到novel类别,特别是base类别和novel类别的共享query,不断提高了base类别和novel类别的前景和背景特征区分能力。
ContrastMask超越了所有以前最先进的部分监督实例分割方法在COCO数据集[26],以很大的差距。值得注意的是,我们的方法以ResNeXt-101-FPN[25,41]为骨干,对novel类别的mask分割达到39.8 mAP。
2. Related Work
2.1 Instance Segmentation
实例分割是一种结合对象检测和语义分割的任务,即将每个像素同时分配给特定的类别和单个实例。Mask R-CNN[18]通过扩展Faster R-CNN,为每个检测到的包围框生成一个Mask。PANet[27]通过建立自底向上的路径aug和跨多层特征的横向连接提高了分割性能。HTC[8]实现了交叉执行和掩码信息流,取得了较好的性能。DSC[13]在检测和分割任务之间形成了双向关系,并取得了最先进的性能。BMask[11]建立了一个平行头部来预测物体的边界,可以将其融合到mask头部来细化分割结果。BC-Net[21]分别采用双层GCN和自注意对目标轮廓和实例掩码进行回归。除了这些两阶段方法外,CondInst[32]、BlendMask[7]、SOLO[36]、SOLOv2[37]、YOLACT[5]、FCIS[24]等一阶段方法也获得了相当的性能,推理速度较快。
2.2 Pixel-level contrastive learning
最近,一些工作[1,6,29,38,39,42,44]被提出来执行像素级对比学习,以弥补分类任务和密集预测任务之间的错位。然而,这些方法和我们的方法在目标和设计理念上都不同:它们的目标是学习逐像素多类分类的一般密集表示,因此它们通过从两个不同的增强视图中采样key来执行像素级实例辨别;而我们的目标是改善前景和背景的辨别,所以我们通过在一张图像中从前景和背景区域采样key来进行像素级的实例辨别。
2.3 Partially-supervised instance segmentation
MaskX R-CNN[19]作为部分监督实例分割的先驱方法,在mask R-CNN[18]中设计了边界盒头与掩码头之间的参数化转换函数,基于边界盒头编码所有类别的嵌入假设,实现了对新类别的分割。shapemask[23]利用掩码注释从有限的数据中学习形状先验,并期望这些形状先验可以推广到新对象。ShapeProp[46]利用box监督来学习突出区域,并通过有效的消息传递模块将这些区域传播到整个盒子建议中,可以生成更准确的形状先验。CPMask[15]通过解析不同类别之间的形状共性和外观共性,取得了良好的性能。它声称,共享这些共性可以促进掩码预测的泛化能力,以类不可知的方式。OPMask[2]利用对象掩码先验(OMP)为掩码头学习提供前景的一般概念,使网络能够集中在一个区域内的主要对象上。最近,Deep-MAC[4]研究了mask头架构对新类别细分性能的影响。它采用了更重的架构,如Hourglass-52[28]作为掩模头,并取得了出色的性能。然而,在实践中,轻量化的mask头总是更受欢迎。
这些方法都只在base类上优化掩码分割模型,忽略了大量novel类别的数据,缺乏将base类分割能力转移到新类别的桥梁。我们通过为密集掩码预测引入统一的对比学习框架来解决这个问题,其中base类别和novel类别都有助于掩码分割模型学习。
3. ContrastMask
我们首先描述了所提议的对比度蒙版的整个流程图。然后,我们展示了如何实例化统一的像素级对比学习框架,以增强base类别和novel类别上前景和背景之间的特征区分。最后,我们引入损失函数来学习部分监督实例分割模型。
3.1. Overview
图2。ContrastMask的整个架构,这是建立在mask R-CNN[18]基础上,包含一个额外的对比学习头。Sn表示特征图的大小为
n
×
n
n \times n
n×n, X和Y分别为输入RoI特征图和其增强特征图。
如图2所示,我们的方法是建立在经典的两级mask R-CNN[18]架构上,带有一个额外的对比学习头,称为CL head,它在base和novel类别上执行统一的像素级对比学习。CL Head以RoI特征图和box头生成的CAM作为输入。它由我们提出的像素级对比损失(第3.3节)监督,并为掩码头输出增强的特征图。最后,掩码头以融合的特征图为输入,预测类别不可知的分割图。接下来,我们将描述方法的每个组件的细节。
3.2. Contrastive Learning Head (CL Head)
CL Head的目标是增加base类别和novel类别在前景和背景之间的特征区分,减少每个区域(背景或前景)内的特征差异,从而便于掩模头的学习。我们通过学习新的像素级对比损失来实现这一点。
如图3所示,对比学习头(CL head)的架构灵感来自SimCLR[10],它由用于对比学习的轻量级编码器 f ( ⋅ ) f(·) f(⋅)和映射器 g ( ⋅ ) g(·) g(⋅)组成。编码器 f ( ⋅ ) f(·) f(⋅)包含8个3*3 Conv-ReLU层,映射层 g ( ⋅ ) g(·) g(⋅)是一个三层MLP,其中最后一层后面没有ReLU函数。
图3。我们的对比学习头(CL head)的流程图由一个编码器和一个映射器组成,由一个像素级的对比损失监督。GT掩码(如果是base类)或从CAMs转换而来的伪掩码(如果是novel类)用于计算对比损失。
给定RoIAlign[18]提取的感兴趣区特征图X,形状为C、H、W,CL Head将其输入编码器,得到增强的特征图 Y = f ( X ) Y = f(X) Y=f(X),并将其纳入掩码头进行掩码分割。接下来,Y首先被压平,然后送到映射器,它将表示映射到应用像素级对比损失的空间: Z = g ( Y ) Z = g(Y) Z=g(Y) 。映射后,特征图Z被reshape为与Y相同的大小。
3.3. Query-sharing Pixel-level Contrastive Loss
现在,我们介绍我们新的像素级损失,它可以在统一的对比学习框架下学习base类别和novel类别的掩码分割模型。该损失函数的核心设计思想是base类和novel类别共享两个类不可知query,一个是前景 q + q^+ q+,另一个是背景 q − q^- q−,从而形成一个桥梁,将base类的分割能力转移到novel类别。因此,我们将损失函数命名为查询共享像素级对比损失。
查询共享像素级对比损失分别由前景和背景组成。以前景为例,设 K + K^+ K+和 K − K^- K−分别表示一组前景key和一组背景key。然后将查询共享像素级的前景对比损失定义为:
其中
τ
τ
τ为温度超参数,
φ
(
⋅
,
⋅
)
φ(·,·)
φ(⋅,⋅)表示余弦相似度。同样,我们可以得到背景
L
K
−
,
K
+
q
+
L^{q^+}_{K^-,K^+}
LK−,K+q+的查询共享像素级对比损失。接下来,我们详细描述了如何获取前景和背景 query
q
+
q^+
q+,
q
−
q^-
q−,以及前景和背景key集
K
+
K^+
K+,
K
−
K^-
K−。我们在图4中说明了这些细节。
(1)Foreground and background partition
给定一个投影特征映射Z ,设 M ∈ { 0 , 1 } H × W M \in \{0,1\}^{H \times W} M∈{0,1}H×W和 A ∈ { 0 , 1 } H × W A \in \{0,1\}^{H \times W} A∈{0,1}H×W分别是与Z对齐的ground-truth mask和class-activation map (CAM)。设 I I I表示特征图Z的 H × W H \times W H×W空间位置格,那么给定一个位置 i ∈ I i \in I i∈I,我们可以从特征图Z得到一个位置 i i i的特征向量 z i z_i zi,同样从GT掩码和CAM分别得到位置 i i i的掩码标签 m i m_i mi和CAM值 a i a_i ai。整个空间位置格可以划分为两个不相交的格:前景位置格 I + I^+ I++和背景位置格 I − I^- I−。对于base类,我们可以通过使用ground-truth mask来实现这种划分: I + = { i ∈ I ∣ m i = 1 } a n d I − = { i ∈ I ∣ m i = 0 } ; I^+ = \{i \in I|m_i = 1\} and I^- = \{i \in I|m_i = 0\}; I+={i∈I∣mi=1}andI−={i∈I∣mi=0};而对于novel类别,由于ground-truth mask不可用,我们可以使用CAM来指导前景和背景的划分: I + = { i ∈ I ∣ a i > = 1 − δ } 和 I − = { i ∈ I ∣ a i < = δ } I^+ = \{i \in I|a_i >= 1 -δ\}和I^- = \{i \in I|a_i <= δ\} I+={i∈I∣ai>=1−δ}和I−={i∈I∣ai<=δ},其中 δ = 0.1 δ = 0.1 δ=0.1是一个小的阈值,在我们的方法中是固定的。
(2)Query and key set generation
设 I ( n ) + I^+_{(n)} I(n)+和 I ( n ) − I^-_{(n)} I(n)−分别是第n个RoI提案的前景和背景分区,该批处理由n个RoI提案 { Z ( n ) } n = 1 N \{Z^{(n)}\} ^N _{n=1} {Z(n)}n=1N组成,分别来自基本类别和新类别。前景和背景查询 q + , q − q^+, q^- q+,q−是通过对所有proposal的前景和背景分区中的特征进行平均得到的。以前景query q + q^+ q+为例,通过下式计算:
一个RoI proposal的前景和背景key(这里为了简便起见,我们省略了索引n)分别由
K
+
=
{
z
i
∣
i
∈
ξ
(
I
+
,
σ
)
}
和
K
−
=
{
z
i
∣
i
∈
ξ
(
I
−
,
σ
)
}
K^+ = \{z_i|i \in \xi (I^+, σ)\}和K^- = \{z_i|i \in \xi (I^-, σ)\}
K+={zi∣i∈ξ(I+,σ)}和K−={zi∣i∈ξ(I−,σ)}得到,其中
ξ
(
⋅
,
σ
)
\xi(·,σ)
ξ(⋅,σ)是一个随机抽样算子,它以比例
σ
σ
σ从集合中随机抽样一个子集。
(3)Hard and easy key mining
以往的研究表明,挖掘hard key和easy key有助于通过对比学习来学习判别特征[34,35]。对于base类别,我们将靠近对象边界的key指定为hard key,远离对象边界的key指定为easy key。从GT掩模中可以很容易地得到GT边界。假设 b i 是 b_i是 bi是RoI proposal Z Z Z上距离位置 i i i最近的边界位置。然后,我们有一组hard key和一组easy key:
对于novel类别,由于ground-truth边界不可用,我们简单地通过随机采样来挖掘hard key和easy key,即 K H = { z i ∣ i ∈ ξ ( i , σ ) } K^H = \{z_i | i \in \xi(i, σ)\} KH={zi∣i∈ξ(i,σ)}和 K E = { z i ∣ i ∈ ξ ( i , σ ) } K^E = \{z_i | i \in \xi(i, σ)\} KE={zi∣i∈ξ(i,σ)}。
图4。说明如何获取query和key的示意图。对于base类,我们使用ground-truth mask进行分区和提取边来指导hard key的采样。对于novel类别,我们首先通过阈值
δ
δ
δ对CAM进行二值化,然后进行分区,并根据分区随机采样easy key和hard key。前景query
q
+
q^+
q+和背景query
q
−
q^-
q−是通过对一批对象proposal的对应分区的特征进行平均得到的。
(4)Instantiation of the proposed contrastive loss
现在,给定一个RoI proposal Z Z Z,无论是base类别还是novel类别,我们都描述了如何从中获取前景和背景key集,以及如何从中挖掘hard key集和easy key集。由此,我们可以得到四种类型的key集(如图4)。参考式(1),我们的查询共享像素级对比损失定义为:
3.4. Class-agnostic mask head
如图5所示,掩码头的结构和相应的损失函数与mask R-CNN[18]相同,只是做了三处修改:1)在[2,15,46]中,我们将最后一个卷积层的输出通道从80改为1,得到了一个类不相关的掩码头。2)我们将CL Head的输出特征图与掩码头的输入特征图进行拼接,使得掩码头的输入特征更加鲜明,便于学习。3)我们利用CAM[2]来告诉掩模头应该聚焦在哪个区域。这可以通过将CAM添加到输入特征映射中轻松实现。
3.5. Loss Function
4. Experiments
在本节中,我们首先描述实验的设置和实现细节。然后,我们将ContrastMask与最先进的部分监督实例分割方法进行比较。最后,我们进行了消融研究,以显示在我们的方法中每个成分的贡献。
4.1. Experimental Setup
我们的实验是在具有挑战性的COCO数据集[26]上进行的。为了模拟base类别和novel类别,训练集被分为两个子集。通常,在PASCAL VOC数据集[14]中显示的类别被称为VOC,其余类别为nonVOC。我们主要在这两个子集上进行实验,nonvoc --> voc表明非voc类别被视为base,voc类别被视为novel,反之亦然。我们使用COCO-train2017中的图像进行训练,使用COCO-val2017中的图像进行评估。实例分割的典型指标,即mask AP,包括mAP, AP50, AP75, APS, APM和APL,用于评估。这些指标是根据novel类别计算的。
(1) Implementation details
我们基于MMDetection[9]实现了我们的方法。我们采用ResNet-50- fpn作为大多数消融实验的骨干,ResNet- 101-FPN作为骨干,以便与其他方法进行公平的比较。为了公平比较,均采用1X和3X,所有消融实验均采用1X进行,以提高效率。在训练过程中,我们采用带动量的SGD进行优化,初始学习率为0.02。所有实验都在8个V100 GPU上进行,批大小为16,即每个GPU 2张图像。每个输入图像都调整了大小,以保持图像的长边小于1333,短边小于800的规则。采样比σ设为σ = 0.3,easy key和hard key的温度超参数 τ τ τ (Eq. 1)设为 τ = 0.7 τ = 0.7 τ=0.7, KaTeX parse error: Expected group after '^' at position 2: τ^̲'= 1- τ = 0.3。我们将 L c o n L_{con} Lcon的λ从0.25线性升温到1.0。此外,还采用了常用的增强方法,如随机翻转和多尺度训练。
4.2. Experimental Results
4.3. Ablation Study