图像分割(九)—— Mask Transfiner for High-Quality Instance Segmentation
Mask Transfiner for High-Quality Instance Segmentation
- Abstract
- 1. Intrudouction
- 3. Mask Transfiner
- 3.1. Incoherent Regions
- 3.2. Quadtree for Mask Refinement
- Detection of Incoherent Regions
- 四叉树的定义与构建
- 四叉树的细化
- 四叉树的传播
- 3.3. Mask Transfiner Architecture
- 细化网络的架构
- RoI特征金字塔
- 输入节点序列
- 节点编码器
- 序列编码器和像素解码器
- 训练和推理
- 实现细节
Abstract
两阶段和基于查询的实例分割方法取得了显著的效果。然而,它们的分割掩模仍然非常粗糙。在本文中,我们提出了掩模转换器的高质量和高效的实例分割。我们的掩模变换器不是在规则的密集张量上工作,而是分解并将图像区域表示为四叉树。我们的基于转换器的方法只处理检测到容易出错的树节点,并并行地自纠正它们的错误。虽然这些稀疏像素只占总数的一小部分,但它们对最终的掩模质量至关重要。这使得掩码转换器能够以较低的计算成本预测高度准确的实例掩码。大量的实验表明,掩码转换器在三个流行的基准测试上优于当前的实例分割方法,显著改善了两阶段和基于查询的框架,在COCO和BDD100K上的+3.0掩码AP,以及在城市景观上的+6.6边界AP。
1. Intrudouction
实例分割是计算机视觉中的一个基础任务,需要预测图像中每个像素点的实例标签,并区分不同的物体。然而,实例分割的效果提升很大程度上是由物体检测器的发展推动的,基于 Mask R-CNN 和 DETR 的方法在 COCO Challenge中取得了领先性能。尽管这些方法在物体的检测方面表现出色,分割物体的mask在高频区域仍过度地粗糙和平滑,并有大量的边缘像素点被错分。准确且高质量的实例分割不仅需要考虑图像的高层语义,也需要大分辨率的深度特征图以保留物体细节,与此同时,大尺寸会带来高计算量和内存消耗。因此,高效及非常准确的实例分割是极具挑战的。
为了解决以上问题,本文提出基于Transformer的高质量实例分割算法Mask Transfiner。如图 1 ,不同于常规方法,Transfiner首先识别容易出错并需要优化的像素区域(黄色标识),并把这些像素点按四叉树结构表示。这些像素点是根据下采样物体mask的信息损失而计算得到,主要分布在物体边界或高频区域中,空间上不连续。我们把这些区域称为信息损失区域(Incoherent Regions)。它们位置稀疏,仅占总像素的一小部分。然而,通过实验分析,我们发现这一区域对最终分割性能非常重要。这允许Transfiner在预测物体mask的过程中只处理在高分辨率特征图上的少部分区间。
结合信息损失区域的离散分布特点,Transfiner通过构建四叉树结构来表示多层级上不同的离散点。为了预测每个树节点实例标签,由于点分布在不连续的空间上,Transfiner没有采用卷积网络,而设计了基于Transformer的分割网络。Transfiner将这些离散的节点转为无序的像素序列。它包含三个模块:节点编码器 (Node Encoder)、序列编码器 (Sequence Encoder)和像素解码器 (Pixel Decoder)。节点编码器首先丰富每个点的特征表示,例如补充点的位置编码和临近点局部细节信息。然后,序列编码器将节点序列作为Query输入基于Transformer的序列编码器中。最后,像素解码器预测每个点对应的实例标签。与PointRend中使用的MLP相比,特征点的序列化输入和多头注意力使得Transfiner能够灵活地将多个尺度的稀疏特征点同时建模,并对每个特征点的关系进行长距离比较和跨层级地进行关联。
3. Mask Transfiner
3.1. Incoherent Regions
现有实例分割方法[15, 21]产生的许多分割错误是由于空间分辨率的损失,例如掩码下采样操作、小的RoI池化大小和系数压缩[15, 23],在这些情况下,掩码预测本身是在粗糙的特征尺度上进行的。尽管效率很高,但低空间分辨率使得准确预测对象边界变得具有挑战性,因为高频细节的损失。在本节中,我们首先定义不连贯区域(incoherent regions),即由于空间分辨率降低而导致掩码信息丢失的区域。然后,通过分析它们的属性,我们观察到很大一部分错误确实位于这些区域中。
不连贯区域的定义 为了识别不连贯区域,我们通过对掩码本身进行下采样来模拟网络中由于下采样导致的信息损失。具体而言,在掩码无法通过随后的上采样步骤正确重构的区域内会丢失信息,如图4所示。形式上,设
M
l
M_l
Ml 为某一尺度级别
l
l
l 上物体的二进制真实实例掩码。每个尺度级别的分辨率相差一个因子2,其中
l
=
0
l=0
l=0 为最细的尺度,而
l
=
L
l=L
l=L 为最粗的尺度。我们分别用
S
↓
S↓
S↓ 和
S
↑
S↑
S↑ 表示 2 倍最近邻下采样和上采样。则在尺度
l
l
l 上的不连贯区域是通过以下方式获得的二进制掩码:
D
l
=
O
↓
(
M
l
−
1
⊕
S
↑
(
S
↓
(
M
l
−
1
)
)
)
.
(1)
D_l = \mathcal {O}_\downarrow (M_{l-1} \oplus \mathcal {S}_\uparrow (\mathcal {S}_\downarrow (M_{l-1}))). \tag{1}
Dl=O↓(Ml−1⊕S↑(S↓(Ml−1))).(1)
这里,⊕表示逻辑“异或”操作, O ↓ \mathcal O↓ O↓ 是通过在每个2×2邻域内执行逻辑“或”操作进行2倍下采样。因此,如果原始掩码值 M l − 1 M_{l-1} Ml−1 在较细尺度级别的至少一个像素中与其重构值不同,则像素 ( x , y ) (x, y) (x,y) 为不连贯的,即 D l ( x , y ) = 1 D_l(x, y) = 1 Dl(x,y)=1。直观上,不连贯区域大多散布在对象实例的边界或高频区域,包含由于粗糙掩码而缺失或多余的错误预测标签的点。我们在图6和补充文件中提供了这些区域的可视化,它们在典型图像上稀疏且不连续分布。
Figure 4. Illustration on incoherent regions definition by simulating mask information loss.
通过模拟掩模信息损失来说明非相干区域的定义。
Properties of Incoherent Regions
在表1中,我们提供了对上述不连贯区域的分析。结果显示,大部分预测错误集中在这些不连贯区域,占所有错误预测像素的43%,而对应的边界框区域仅占14%。在不连贯区域中,粗糙掩码预测的准确率为56%。通过固定边界框检测器,我们进行了一项“oracle”研究,为每个对象填充所有不连贯区域的真实标签,同时将其余部分保留为初始掩码预测。与在不连贯区域使用初始掩码预测相比,性能从35.5 AP跃升至51.0 AP,确实证明它们对于提高最终性能至关重要。
3.2. Quadtree for Mask Refinement
在这一部分,我们描述了用于检测和细化图像中不连贯区域的方法。我们的方法基于逐步检测和划分每个特征尺度中不连贯区域的理念。通过仅拆分已识别的不连贯像素进行进一步细化,我们的方法有效地处理高分辨率特征,只关注重要区域。为了形式化我们的方法,我们采用四叉树结构首先识别不同尺度上的不连贯区域。然后,我们使用在第3.3节中详细描述的网络,为四叉树中的所有不连贯节点预测细化的分割标签。最后,我们利用四叉树通过将更正的掩码概率从粗尺度传播到细尺度,融合来自多个尺度的新预测。
Figure 5. The framework of Mask Transfiner. On the point quadtree, yellow point grids denote detected incoherent regions requiring further subdivision to four quadrants. The incoherent query sequence is composed of points across three levels of the quadtree for joint refinement. The encoder of Transfiner consists of node encoder and sequence encoder, while the pixel decoder is on top of each self-attended query pixel and output their final labels. The incoherence detector is detailed in the right part of the figure with detections on multi-level incoherent regions (Yellow). The higher-resolution detection is under the guidance of the predicted incoherent mask up-sampled from lower level.
Detection of Incoherent Regions
图5的右侧部分描绘了我们的轻量级模块的设计,用于高效地在多尺度特征金字塔上检测不连贯区域。遵循级联设计,我们首先将最小特征与粗略的目标掩码预测连接在一起作为输入,然后使用简单的全卷积网络(四个3×3卷积层)以及一个二元分类器来预测最粗糙的不连贯掩码。接着,检测到的低分辨率掩码被上采样并与相邻尺度中的较大分辨率特征融合,以指导更细的非连贯预测,其中只使用单个1×1卷积层。在训练过程中,我们强制在低级生成的真实不连贯点(由公式1 产生)中,覆盖其在较高级特征图中的父点。
四叉树的定义与构建
我们定义了一个点四叉树,用于分解检测到的不连贯区域。我们的结构如图5 所示,其中一个位于高层FPN特征(如特征分辨率28×28)的黄色点在其相邻的低层FPN特征图(如分辨率56×56)中具有四个象限点。这些都是特征点,但粒度不同,因为它们位于不同的金字塔层次。与计算机图形学中使用的传统四叉树“单元”不同,四叉树“单元”可以包含多个点,我们的点四叉树的细分单元始终是单个点,点的划分由检测到的不连贯值和二元分类器的阈值决定。
基于检测到的不连贯点,我们构建了一个多级层次四叉树,从使用最高级特征图中的检测点作为根节点开始。这些根节点被选择用于在低层特征图上细分为四个象限,具有更大的分辨率和更多的局部细节。请注意,在细层次上,只有被检测为不连贯的象限点才能进一步细分,并且不连贯树节点的扩展在与之前粗糙层次的不连贯预测相对应的区域内受到限制。
四叉树的细化
我们使用基于变换器的架构来细化四叉树中不连贯节点的掩码预测。我们的设计在第3.3节中描述。它直接在四叉树的节点上操作,共同提供每个不连贯节点的细化掩码概率。
四叉树的传播
鉴于细化的掩码预测,我们设计了一种利用四叉树结构的分层掩码传播方案。给定低分辨率中的初始粗掩码预测,Mask Transfiner首先修正四叉树根层的点标签,然后通过最近邻插值将这些修正的点标签传播到相应的四个象限的较细层级中。标签修正的过程在不连贯节点上以分层方式高效进行,直到达到最细的四叉树层级。与仅修正四叉树中最细叶节点的标签相比,这种方法通过将修正标签传播到中间树层的叶节点,扩大了细化区域,而成本几乎可以忽略不计。
3.3. Mask Transfiner Architecture
细化网络的架构
在这一部分,我们描述了细化网络的架构,该网络以构建的四叉树上的不连贯点作为输入(第3.2节),进行最终的分割细化。这些点沿高频区域稀疏分布,且在空间上不连续。因此,标准的卷积网络在均匀网格上操作并不合适。相反,我们设计了一个细化变换器,称为Mask Transfiner,能够并行修正所有不连贯四叉树节点的预测。
准确地对模糊点进行分割需要细粒度的深层特征和粗语义信息。因此,网络需要强大的建模能力,以充分关联点及其周围的上下文,包括空间和跨层的邻近点。因此,变换器(transformer)能够处理序列输入,并通过多头注意力层进行强大的局部和非局部推理,是我们Mask Transfiner设计的自然选择。与[28]中的多层感知器(MLP)相比,变换器强大的全局处理能力与我们的四叉树结构非常契合,有助于有效融合具有不同粒度的多层特征点信息,并显式建模点对点关系。
图5展示了我们的Mask Transfiner的整体架构。基于分层特征金字塔网络(FPN)[32],实例分割以多层和粗到细的方式进行。Mask Transfiner不再为每个目标使用单层FPN特征[21],而是将稀疏检测到的不连贯图像区域中的特征点序列作为输入,并输出相应的分割标签。
RoI特征金字塔
给定一张输入图像,配备特征金字塔网络(FPN)的CNN骨干网络首先提取用于下游处理的层次特征图,其中我们利用P2到P5的特征层。基础目标检测器[15, 21]预测边界框作为实例提案。然后,通过在FPN的三个不同层级 P i , P i − 1 , P i − 2 {P_i, P_{i−1}, P_{i−2}} Pi,Pi−1,Pi−2中提取RoI特征,构建RoI特征金字塔,方形尺寸逐渐增大为 28 , 56 , 112 {28, 56, 112} 28,56,112 。起始层级 i i i 计算为 i = ⌊ i 0 + log 2 ( W H / 224 ) ⌋ i = \lfloor i_0 + \log_2(\sqrt{WH}/224)\rfloor i=⌊i0+log2(WH/224)⌋,其中 i 0 = 4 i_0 = 4 i0=4, W W W和 H H H 分别是RoI的宽度和高度。最粗的层级特征包含更多的上下文和语义信息,而更精细的层级则解析更多的局部细节。
输入节点序列
根据第3.2节讨论的四叉树以及每个节点的相关FPN特征,我们为基于变换器的架构构建输入序列。该序列由来自四叉树所有三个层级的不连贯节点组成。因此,结果序列的大小为 C × N C \times N C×N,其中N是节点的总数,C是特征通道维度。值得注意的是,由于高度稀疏性, N ≪ H W N \ll HW N≪HW。此外,由于变换器的置换不变性,序列的顺序并不重要。与标准的变换器编码器相比,Mask Transfiner的编码器有两个部分:节点编码器和序列编码器。
节点编码器
为了丰富不连贯点的特征,Mask Transfiner的节点编码器使用以下四种不同的信息线索对每个四叉树节点进行编码:
- 从FPN金字塔的相应位置和层级提取的细粒度特征。
- 基础检测器的初始粗糙掩膜预测提供区域特定和语义信息。
- 每个RoI中的相对位置编码封装了节点之间的空间距离和关系,捕捉重要的局部依赖和相关性。
- 每个节点的周围上下文捕捉局部细节以丰富信息。对于每个节点,我们使用从 3 × 3 3×3 3×3 邻域提取的特征,并通过全连接层进行压缩。直观地说,这有助于定位边缘和边界,同时捕捉物体的局部形状。如图5所示,细粒度特征、粗糙分割线索和上下文特征首先被连接并通过全连接层融合为原始特征维度。然后,将位置嵌入添加到结果特征向量中。
序列编码器和像素解码器
接下来,Transfiner的序列变换器编码器共同处理来自四叉树所有层级的编码节点。变换器因此执行全局空间和跨尺度推理。每个序列编码器层具有标准的变换器结构,由多头自注意力模块和全连接前馈网络(FFN)构成。为了为不连贯点序列提供足够的正负参考,我们还使用来自最粗FPN层级的小尺寸 14 × 14 14×14 14×14 的所有特征点。不同于具有深度注意力层的标准变换器解码器[4],Mask Transfiner中的像素解码器是一个小型的两层多层感知器(MLP),它解码树中每个节点的输出查询,以预测最终的掩膜标签。
训练和推理
基于构建的四叉树,我们为Mask Transfiner开发灵活和自适应的训练与推理方案,其中所有检测到的不连贯节点跨四叉树层级形成一个序列以进行并行预测。在推理过程中,为了获得最终的物体掩膜,Mask Transfiner在获得不连贯节点的细化标签后,遵循四叉树传播方案(第3.2节)。在训练过程中,整个Mask Transfiner框架可以以端到端的方式进行训练。我们采用了一个多任务损失函数:
L
=
λ
1
L
Detect
+
λ
2
L
Coarse
+
λ
3
L
Refine
+
λ
4
L
Inc
.
(2)
\mathcal {L} = \lambda _1\mathcal {L}_{\text {Detect}} + \lambda _2\mathcal {L}_{\text {Coarse}} + \lambda _3\mathcal {L}_{\text {Refine}} + \lambda _4\mathcal {L}_{\text {Inc}} \tag{2}.
L=λ1LDetect+λ2LCoarse+λ3LRefine+λ4LInc.(2)
其中,
L
Refine
L_{\text{Refine}}
LRefine表示不连贯节点的预测标签与其真实标签之间的L1损失。二元交叉熵损失
L
Inc
L_{\text{Inc}}
LInc用于检测不连贯区域。检测损失
L
Detect
L_{\text{Detect}}
LDetect包括来自基础检测器的定位和分类损失,例如Faster R-CNN [35]或DETR检测器。最后,
L
Coarse
L_{\text{Coarse}}
LCoarse代表基础粗糙分割预测的损失[21]。超参数权重
λ
1
,
2
,
3
,
4
\lambda_{1,2,3,4}
λ1,2,3,4的值为
1.0
,
1.0
,
1.0
,
0.5
{1.0, 1.0, 1.0, 0.5}
1.0,1.0,1.0,0.5。
实现细节
Mask Transfiner在两阶段检测器Faster R-CNN [35]和基于查询的检测器[4]上实现。我们设计了一个3级的四叉树,并使用Detectron2 [43]中实现的Mask R-CNN的超参数和训练计划作为骨干网络和粗糙掩膜头。Mask Transfiner编码器由三个标准变换器层组成。每层有四个注意力头,特征维度为256。在我们的消融研究中,采用了R-50-FPN [22]和Faster R-CNN,学习计划为1×。为了与COCO排行榜进行比较,我们采用了缩放抖动,图像短边随机从[640, 800]中抽取,并遵循[26, 30]中的训练计划。更多细节请参见补充文件。