CVPR 2020
论文链接:
https://arxiv.org/abs/2004.04446.
文章目录
1 Background and Motivation
图像的实例分割是计算机视觉中重要且基础的问题之一,其在众多领域具有十分重要的应用,比如:地图要素提取、自动驾驶车辆感知等。不同于目标检测和语义分割,实例分割需要对图像中的每个实例(物体)同时进行定位、分类和分割。从这个角度看,实例分割兼具目标检测和语义分割的特性,因此更具挑战。
当前两阶段(two-stage)目标检测网络(Faster RCNN系列)被广泛用于主流的实例分割算法(如Mask R-CNN)。2019年,一阶段(one-stage)无锚点(anchor-free)的目标检测方法迎来了新一轮的爆发,很多优秀的one-stage目标检测网络被提出,如CenterNet, FCOS等。这一类方法相较于two-stage的算法,不依赖预设定的anchor,直接预测bounding box所需的全部信息,如位置、框的大小、类别等,因此具有框架简单灵活,速度快等优点。于是很自然的便会想到,实例分割任务是否也能够采用这种one-stage anchor-free的思路来实现更优的速度和精度的平衡?
相较于one-stage目标检测,one-stage的实例分割更为困难。不同于目标检测用四个角的坐标即可表示物体的bounding box,实例分割的mask的形状和大小都更为灵活,很难用固定大小的向量来表示。从问题本身出发,one-stage的实例分割主要面临两个难点:
- object instances differentiation(对象实例区分)
- pixel-wise feature alignment(逐像素特征对齐)
第一个问题:如何区分不同的物体实例,尤其是同一类别下的物体实例。two-stage的方法利用感兴趣区域(Region of Interest,简称ROI)限制了单个物体的范围,只需要对ROI内部的区域进行分割,大大减轻了其他物体的干扰。而one-stage的方法需要直接对图像中的所有物体进行分割。作者提出了可以预测每个局部区域的粗略mask的Local Shape representation(局部形状表示),实现了自动分离不同的实例。
第二个问题·:如何保留像素级的位置信息,这是two-stage和one-stage的实例分割面临的普遍问题。分割本质上是像素级的任务,物体边缘像素的分割精细程度对最终的效果有较大影响。而现有的实例分割方法大多将固定大小的特征转换到原始物体的大小,或者利用固定个数的点对轮廓进行描述,这些方式都无法较好的保留原始图像的空间信息。作者提出了可以分割整个图像的Global Saliency Map ,可以提供显着性细节,并实现像素级对齐。 为了实现这一点,需要从对象中心的point representation 中提取 local shape information 。
作者提出的CenterMask网络,同时包含一个Local Shape
(全局显著图生成分支)和一个Global Seliency(局部形状预测分支),能够在实现像素级特征对齐的情况下实现不同物体实例的区分。
CenterMask在COCO测试集图像上的结果如下图所示。
2 Advantages/Contributions
- 作者提出了一种简单、快速、准确的无 anchor-box的one-stage实例分割方法。该方法在COCO上以12.3 fps的速度实现了34.5mask AP,显示出良好的速度精度折中。同时·,该方法可以很容易地嵌入到例如FCOS 等其他one-stage目标检测器中,并且表现良好,显示了CenterMask的泛化性能。
- 提出了object mask的Local Shape representation,以区分 anchor-box free下的实例。使用对象中心点的表示,即使在重叠情况下也可以预测coarse masks 并有效地分离对象。
- 提出了 Global Saliency Map 以自然实现像素特征对齐。 与以前的实例分割对齐操作不同,此模块更简单,更快,更精确。
3 Method
CenterMask整体网络结构图如图所示,给定一张输入图像,经过backbone网络提取特征之后,网络输出五个平行的分支。其中Heatmap和Offset分支用于预测所有中心点的位置坐标,坐标的获得遵循关键点预测的一般流程。Shape和Size分支用于预测中心点处的Local Shape,Saliency分支用于预测Global Saliency Map。可以看到,预测的Local Shape含有粗糙但是instance-aware的形状信息,而Global Saliency含有精细但是instance-aware的显著性信息。最终,每个位置点处得到的Local Shape和对应位置处的Global Saliency进行乘积,以得到最终每个实例的分割结果。
3.1 Local Shape Prediction
为了区分不同位置的实例,作者选择从它们中心点(bounding box的中心)对mask进行建模。 一个自然的想法是通过在中心点位置处提取的图像特征来表示mask,但是固定大小的图像特征不能表示各种大小的mask。 为了解决这个问题,作者提出了一个 two heads 结构,将目标mask分解为两个部分:mask大小和mask形状。 每个mask的大小由相应的目标的高度和宽度表示,形状可以由固定大小的2D二进制数组表示。
下面是two heads结构的具体操作:
- P P P表示图像的feature map
- F s h a p e ∈ R H × W × S 2 F_{shape}\in R^{H\times W\times S^{2}} Fshape∈RH×W×S2是 Shape head的输出,H和W表示 height and width of the whole map, channels 为 S 2 S^{2} S2
- F s i z e ∈ R H × W × 2 F_{size}\in R^{H\times W\times 2} Fsize∈RH×W×2是 Size head的输出,channels 为2
总结就是,对于P的中心点 ( x , y ) (x,y) (x,y),通过 F s h a p e ( x , y ) F_{shape}(x,y) Fshape(x,y)提取出来shape feature,它是一个大小为 1 × 1 × S 2 1×1×S^{2} 1×1×S2的形状向量,然后被reshape成大小为 S × S S×S S×S的2D shape array。Size预测是 F s i z e ( x , y ) F_{size}(x,y) Fsize(x,y), **height and width 分别是 h h h、 w w w。最后把2D shape array resize成和 F s i z e ( x , y ) F_{size}(x,y) Fsize(x,y)一样的大小,即 h × w h×w h×w。
3.2 Global Saliency Generation
Local Shape 分支会产生一个coarse mask,这对于精确的分割来说是远远不够的,但是如果resize and warp它到目标大小又会损失空间细节,这一直是实例分割共有的问题。 受语义分割的启发,作者不再依赖复杂的像素校准机制,而是创新的设计了一种简单,快速的方法,即启发于语义分割领域直接对全图进行精细分割的思路, 预测一个Global Saliency Map 去实现像素级特征对齐。平行于Local Shape分支,Global Saliency分支在backbone网络之后预测一张全局的特征图,该特征图用于表示图像中的每个像素是属于前景(物体区域)还是背景区域。
与语义分割使用softmax不同,本文的方法是使用sigmoid function to perform binary classification。 Global Saliency Map 有两种情况:
- class-agnostic(类未知):只生成一个二进制map去指出像素属于前景或者背景。
- class-specific(类可知):对每个目标类产生一个二进制 mask 。
3.3 Mask Assembly
最后,将“ Local Shapes ”和“ Global Saliency Map ”组合在一起以形成最终的 instance masks 。
为了计算最后的mask,作者首先使用sigmoid激活函数把
L
k
L_{k}
Lk、
G
k
G_{k}
Gk的值转变到(0,1)范围内。然后计算它们的 Hadamard 矩阵分别为
σ
(
L
k
)
\sigma\left ( L_{k} \right )
σ(Lk)、
σ
(
G
k
)
\sigma\left (G_{k} \right )
σ(Gk)。最后的mask为:
H
k
=
σ
(
L
k
)
⊙
σ
(
G
k
)
H_{k}=\sigma\left ( L_{k} \right )\odot \sigma\left ( G_{k} \right )
Hk=σ(Lk)⊙σ(Gk)
- L k ∈ R h × w L_{k}\in R^{h\times w} Lk∈Rh×w represent the Local Shape for one object
- G k ∈ R h × w G_{k}\in R^{h\times w} Gk∈Rh×wbe the corresponding cropped Saliency Map
- σ ( L k ) \sigma\left ( L_{k} \right ) σ(Lk)和 σ ( G k ) \sigma\left (G_{k} \right ) σ(Gk)分别表示对 L k L_{k} Lk和 G k G_{k} Gk的sigmoid激活
- ⊙ \odot ⊙为Hadamard (哈达玛积),表示 σ ( L k ) \sigma\left ( L_{k} \right ) σ(Lk)和 σ ( G k ) \sigma\left (G_{k} \right ) σ(Gk)对应位置相乘
最后的mask损失函数为:
L
k
=
1
N
∑
k
=
1
N
B
c
e
(
M
k
,
T
k
)
L_{k}=\frac{1}{N}\sum_{k=1}^{N}Bce\left ( M_{k} ,T_{k}\right )
Lk=N1k=1∑NBce(Mk,Tk)
- $ T_{k}$表示 ground truth mask
- B c e Bce Bce表示逐像素二进制交叉熵损失,即
- N为目标数量
3.4 Overall architecture of CenterMask
Heatmap head和Offset head预测出中心点位置和类别。
- Heatmap head 用于预测中心点的位置和类别。 输出的每个通道都是对应类别的热图。 获取中心点需要搜索每个热图的峰,这些峰定义为窗口内的局部最大值。
- Offset head用于恢复由输出步幅引起的离散化误差。
知道中心点位置后,利用Shape head 和 Size head生成Local Shape, Saliency head 生成 Global Saliency Map。当是class-agnostic 时, channel 是1,通过裁剪预测的每个实例的位置和大小获得它们的Saliency Map;当 class-specific 时,相应预测的类别的 channel被裁剪。 final masks通过 Local Shapes和 Saliency Map.相乘得到。
Loss function: the center point loss, the offset loss, the size loss, and the mask loss
(1) center point loss:定义方式与 Hourglass network.一样,The loss function is a pixel-wise logistic regression modified by the focal loss
L
p
=
−
1
N
∑
i
j
c
{
(
1
−
Y
^
i
j
c
)
α
l
o
g
(
Y
^
i
j
c
)
if
Y
i
j
c
=
1
(
1
−
Y
i
j
c
)
β
(
Y
^
i
j
c
)
α
l
o
g
(
1
−
Y
^
i
j
c
)
otherwise
L_{p}=\frac{-1}{N}\sum_{ijc}\begin{cases} \left ( 1-\hat{Y}_{ijc} \right )^{\alpha }log\left ( \hat{Y}_{ijc} \right )& \text{ if } Y_{ijc}= 1\\ \left ( 1-Y_{ijc}\right )^{\beta } \left ( \hat{Y}_{ijc} \right )^{\alpha }log\left ( 1-\hat{Y}_{ijc} \right )& \text{otherwise} \end{cases}
Lp=N−1ijc∑⎩⎨⎧(1−Y^ijc)αlog(Y^ijc)(1−Yijc)β(Y^ijc)αlog(1−Y^ijc) if Yijc=1otherwise
- Y ^ i j c \hat{Y}_{ijc} Y^ijc为预测热力图中 c c c类位置 ( i , j ) (i,j) (i,j)的分数;
- Y Y Y是 ground-truth heatmap
- N N N是图像中心点数
- α \alpha α和 β \beta β focal loss的超参数。
总结就是,公式是由focal loss的logistic regression modified得来的,即把Binary cross entropy中的Cross entropy换成Focal Loss。我们知道logistic regression的损失函数为 Binary cross entropy:
Focal Loss(FL)和Cross entropy(CE)的形式可以看下图:
(2) offset loss:遵循CenterNet.的相同设置,利用 L 1 L o s s L_{1} Loss L1Loss
L o f f = 1 N ∑ p ∣ O ^ p ~ − ( p R − p ~ ) ∣ L_{off}=\frac{1}{N}\sum_{p}^{}\left | \hat{O}_{\tilde{p}}-\left ( \frac{p}{R}-\tilde{p} \right ) \right | Loff=N1p∑∣∣∣O^p~−(Rp−p~)∣∣∣
- O ^ \hat{O} O^表示预测offset;
- p p p表示中心点的 ground truth ;
- R R R表示output stride,也就是heatmap的大小与原图大小的比例关系;
- 在特征图上的偏置与在原图上的偏置的映射关系是
p
~
=
⌊
p
R
⌋
\tilde{p}=\left \lfloor \frac{p}{R} \right \rfloor
p~=⌊Rp⌋
比如中心点在原图(15,15)处,相当于公式中的 p p p, R R R=4,那么精确地映射到特征图上对应着应该是 (3.75,3.75)处,即 p R \frac{p}{R} Rp=3.75,但特征图最小的分辨率是 1 像素,所以预测的中心点最准的地方只能为(3,3),即 p ~ \tilde{p} p~=3!(3,3)还原到原始图处为(12,12),与(15,15)有了 3 个像素的偏差嘛,为了弥补这个偏差,我们需要在特征图(3,3)的基础上,学出一个(0.75,0.75)的偏置,这样的话恢复到原始图片大小,就能逼近(15,15)。
(3) size loss: L s i z e = 1 N ∑ k = 1 N ∣ S ^ k − S k ∣ L_{size}=\frac{1}{N}\sum_{k=1}^{N}\left | \hat{S}_{k}-S_{k} \right | Lsize=N1k=1∑N∣∣∣S^k−Sk∣∣∣遵循CenterNet.的相同设置,利用 L 1 L o s s L_{1} Loss L1Loss
- S k = ( h , w ) S_{k}=\left ( h,w \right ) Sk=(h,w)表示真实目标大小;
- S ^ k = ( h ^ , w ^ ) \hat{S}_{k}=\left ( \hat{h},\hat{w} \right ) S^k=(h^,w^)表示预测目标大小。
整个训练目标的损失是四个损失之和: L s e g = λ p L p + λ o f f L o f f + λ s i z e L s i z e + λ m a s k L m a s k L_{seg}=\lambda _{p}L_{p}+\lambda _{off}L_{off}+\lambda _{size}L_{size}+\lambda _{mask}L_{mask} Lseg=λpLp+λoffLoff+λsizeLsize+λmaskLmask
λ p \lambda _{p} λp、 λ o f f \lambda _{off} λoff、 λ s i z e \lambda _{size} λsize和 λ m a s k \lambda _{mask} λmask分别是四个损失的系数。
4 Experiments
4.1 Datasets
- COCO
4.2 Ablation Study
Shape size Selection:
更大的 shape size 带来的效果会好一点,但是区别不大,这表明 Local Shape representation对 feature size具有鲁棒性(
S
S
S: shape size)。默认值
S
=
32
S=32
S=32时效果最好。
Backbone Architecture:
Hourglass-104 比DLA-34 效果要好一点,但DLA-34 速度要快一些。
Local Shape branch:
有Local Shape分支效果要好。
上图可以看出Shape branch 可以对多个重叠的目标产生 coarse masks。
Global Saliency branch:
有Global Saliency分支比仅仅有Shape branch提升了五个点。
对于无重叠目标,Saliency branch 可以很精确的预测每个实例的 mask 。
class-specific 比 class-agnostic 高出2.4个点,说明class-specific可以更好的分割实例。
对于 class-specific ,除了mask损失
L
m
a
s
k
L_{mask}
Lmask外,还添加了二进制交叉熵损失到direct Saliency supervision。 可以看出有direct Saliency supervision提升了0.5个点。
Combination of Local Shape and Global Saliency:
两个分支组合起来,区分许多重叠的实例的同时也能精确的分割目标。
4.3 Comparison with state-of-the-art
没有Mask-RCNN和TensorMask好,但是速度要比它们快。
MaskR-CNN的mask仍需人工;YOLACT在目标重叠时表现不好;PolarMask不精确。
4.4 CenterMask on FCOS Detector
在同样都是 ResNeXt101-FPN的情况下,CenterMask-FCOS 比PolarMask提高了3.8个点,展示了CenterMask的泛化性。
CenterMask比Mask-RCNN效果好。
5 Conclusion
- 作者提出了一个single shot 和 anchor-box free实例分割方法,实现了简单、快速、精确的实力分割。
- Mask预测创新性的的分成了 Local Shape branch 和 Global Saliency branch ,在有效区分不同实例的的同时,也能实现pixel-wisely精确的分割。
- 在one-stage实例分割任务中是一个很大的发展,未来也可以推动one-stage全景分割的发展。