CVPR 2020
论文链接: https://arxiv.org/abs/1912.02801.
文章目录
1 Background and Motivation
实例分割方法的目标是识别场景中所有可计数的对象,并为每个对象生成一个mask。通过实例分割,我们可以更好地理解场景,设计能够完成复杂操作任务的机器人系统,改进自动驾驶汽车的感知系统。
然而这项任务非常具有挑战性,与传统的语义分割任务直接推断出图像中每个像素的类别相比,实例分割还要求系统具有单独对象的额外概念,以便将每个像素与其中一个相关联。下面这个图是一个形象的表示:
而且,有时需要处理一些在尺度和外观上发生很大的变化的物体以及被遮挡(如下图汽车被遮挡)和动态模糊模糊(比如下图转动的风车)的物体,这都使得实例分割非常困难。
为了解决上边的问题,大多数现代实例分割方法都是使用的two-stage方法。这些two-stage的方法通过box可以处理一些其它方法常常失败的情况(eg: occlusions)。虽然这些two-stage方法在多个benchmarks(e.g., COCO, Cityscapes)上已经实现了很好的性能,但是它们的输出常常是太过于平滑(over-smoothed),因此无法捕捉到一些更详细的( fine-grained)细节。
另一些工作解决了交互标注的问题,比如《Annotating Object Instances with a Polygon-RNN》和《Efficient interactive annotation of segmentation datasets with
polygon-rnn++.》等。这些方法都是在循环中有一个注释器( annotator)的情况下发展起来的,注释器会提供给一个ground truth bounding box。这些工作的目标是通过为注释器提供一个初始化的多边形来加速注释工作,因为从零开始注释是一个非常昂贵的过程。在这项工作中,这些方法利用多边形来更好地捕捉物体的几何形状,而不是把问题当作 pixel-wise labeling任务。这将产生更精确的mask和可能更快的注释速度,因为注释器可以通过移动顶点来简单地修正多边形。然而,这些方法在存在大的遮挡物或这当物体被分割成多个互不连接的部分时,会受到影响。
本文提出了一个新的模型——PolyTransform,来同时处理实例分割( instance segmentation)和交互标注问题( interactive annotation)。首先**用常用的分割方法生成的分割mask可以作为计算一组多边形的起点,然后对这一组多边形进行细化。这个细化是通过一个变形网络来进行的,变形网络可以预测每个多边形每个顶点的位移,并考虑到所有顶点的位置。**通过变形每个多边形,本文的模型能够更好地捕获物体的局部几何形状。和之前方法不同的是,本文的模型对用于描述每个对象的多边形的数目没有限制,这样的话就能自然地处理由于遮挡而将物体分割成部分的情况。
2 Related Work
- Instance segmentation
- Proposal-based Instance Segmentation:即 two-stage方法,首先生成一些分割候选框( proposals),然后根据投票的方式从这些proposals中选取一些留下来。
- Proposal-free Instance Segmentation:没有明确的proposals情况。
- Interactive Annotation:交互标注的任务也可以是寻找最适合对象边界的多边形或曲线。使曲线变形以适合对象轮廓的概念可以追溯到80年代,当时主动轮廓模型( active contour model)首次被引入。此后,ACM( active contour model)的变体被提出以更好地捕捉形状。最近,利用多边形来表示实例的思想在循环分割中被探索。
3 Advantages/Contributions
- 本文提出了一种新的实例分割算法PolyTransform,该算法结合了当前分割方法和现代基于多边形的方法的优点,可以产生精确的、几何保持的mask。
- 在 Cityscapes数据集上的实验表明,本文的PolyTransform显著提高了主干实例分割网络的性能,并在Cityscapes test-set排行榜上获得第一。
- 在一个新的自动驾驶数据集上进一步评估了本文的模型,它将初始化提高了2.1 AP和 boundary metric提高了5.6 。
- 在交互标注的情况下,PolyTransform在boundary metric中超出了先前最好的方法2.0%。
- 最后进行了一个实验,实验中crowd-sourced labelers使用本文模型输出的多边形对对象实例进行标注,这样可以将标注时间提高35%。
4 Method
上述就是PolyTransform的整体架构,上边的一个分支就是为了给每个单独的物体实现一个好的多边形初始化。下边的分支是为了对得到的多边形进行精细化,来使得这个多变形能更好的捕获物体的集合内部形状。
4.1 Instance Initialization
上图中绿色框框部分为实例初始化模块,它的目的就是为每个单独的物体提供一个好的多边形初始化。具体做法就是,首先使用一个分割模型为每个实例生成一个mask,然后使用边界跟踪算法去提取预测mask的轮廓,最后通过在轮廓线中每10px距离放置一个顶点来获得初始的顶点集。对于分割模型,如果它是基于 proposal,那么就直接用proposal box去裁剪图像,否则的话就给mask分配一个bounding box。图中使用的是proposal来裁剪图像,然后把它resize成一个512*512的正方形。
4.2 Feature Extraction Network
特征提取网络就是为了学习到好的目标边界框的特征。本文中使用的是特征金字塔网络来使用和利用多尺度特征。这个网络以上个过程中得到的512*512正方形来作为输入,来输出不同pyramid levels得到的特征。
上图为特征提取网络的具体架构。作者在两个FPN每一层都使用两个3×3卷积来进行映射,目的就是为了把特征通道数的数量从256减少到64。 P 2 , P 3 , P 4 , P 5 和 P 6 特征图的尺寸分别是原始特征图尺寸的1/4, 1/8, 1/16, 1/32 和1/64,因此作者最后使用双线性插值的方法把各层特征都恢复成原始图像尺寸,然后再把它们连接成一个
H
c
H_{c}
Hc×
H
c
H_{c}
Hc×320的特征张量。
4.3 Deforming Network
可形变网络如上图中。目前已经得到了多边形初始化顶点集合和来自才讲图像的FPN深度特征。下一步是为所有N个顶点建立一个 feature embedding,并学习一个可变模型,该模型可以有效地预测每个顶点的偏移量,从而使多边形更好地捕捉到对象边界。
-
**Vertex embedding:**首先作者将顶点表示建立在从FPN中提取的多尺度特征上。上一步得到了一个 H c H_{c} Hc× H c H_{c} Hc×320的特征张量,为了给之后的deforming Network提供一个位置的概念,作者又在 H c H_{c} Hc× H c H_{c} Hc×320特征张量上增加了一个2通道的 CoordConv层,因此它最后为 H c H_{c} Hc× H c H_{c} Hc×(320+2),这个2 channels表示被裁剪图像的x和y坐标。最后使用 spatial transformer net-
work
的双线性插值运算,从特征张量中提取初始化多边形顶点坐标处的特征,作者N × (320 + 2)的 embedding表示为z。 -
**Deforming network:**当移动多边形中的顶点时,两个相连的边也随之移动。这些边的移动取决于相邻顶点的位置。因此,每个顶点必须知道它的邻居,并需要一种方法来相互通信,以减少不稳定和重叠行为。在这项工作中,作者使用 self-attending Transformer network来对这种复杂的情况进行建模,同时利用注意力机制在顶点之间传播信息,并改进预测偏移量。
Attention mechanism可以表示为:
A t t e n ( Q ( z ) , K ( z ) , V ( z ) ) = s o f t m a x ( Q ( z ) K ( z ) T d k ) V ( z ) Atten(Q(z),K(z),V(z))=softmax(\frac{Q(z)K(z)^{T}}{\sqrt{d_{k}}})V\left ( z \right ) Atten(Q(z),K(z),V(z))=softmax(dkQ(z)K(z)T)V(z)- z为 vertex embeddings
- Q ( z ) , K ( z ) , V ( z ) Q(z),K(z),V(z) Q(z),K(z),V(z)分别为Query, Key 和 Value,作者利用三个 feed-forward neural networks把分别z转换 为 Q ( z ) Q(z) Q(z)、 K ( z ) K(z) K(z)、 V ( z ) V(z) V(z)
- 计算顶点之间的权重通过对点积 Q ( z ) K ( z ) T Q(z)K(z)^{T} Q(z)K(z)T取一个softmax
- 权重与键 V ( z ) V(z) V(z)相乘,从而将这些依赖关系传播到所有的顶点。
-
d
k
d_{k}
dk是 queries a和 keys的维度,作为一个缩放因子来防止非常小的梯度。
本文以固定的次数重复上述的操作,本文的实验中是6次。在最后的转换层之后,被输出送到另一个可以预测每个顶点的N×2的偏移量的feed-forward network中,最后将偏移量添加到多边形初始化中,以此来转换多边形的形状。
4.4 Learning
作者对deforming network及其 feature extraction network进行end-to-end的训练。具体地说,最小化两个损失的加权和。 第一个惩罚模型就是顶点偏离 ground truth的时候,第二个则是调整多边形的边以防止顶点的重叠和不稳定移动。
Polygon Transforming Loss:
(1)利用 Chamfer Distance loss(Chamfer Distance就是找到x中的点,对应与y中最近的点,计算距离,再把所有点的距离相加起来,然后在从y反找x,这就是最终的距离)来移动预测多边形P的顶点来让它更加接近ground truth多边形Q。
Chamfer Distance loss:
L
c
(
P
,
Q
)
=
1
∣
P
∣
∑
i
m
i
n
q
∈
Q
∣
∣
p
i
−
q
∣
∣
2
+
1
∣
Q
∣
∑
j
m
i
n
p
∈
P
∣
∣
p
−
q
j
∣
∣
2
L_{c}(P,Q)=\frac{1}{|P|}\sum_{i}^{}\underset{q\in Q}{min}||p_{i}-q||_{2}+\frac{1}{|Q|}\sum_{j}^{}\underset{p\in P}{min}||p-q_{j}||_{2}
Lc(P,Q)=∣P∣1i∑q∈Qmin∣∣pi−q∣∣2+∣Q∣1j∑p∈Pmin∣∣p−qj∣∣2
- P P P表示预测多边形, Q Q Q为多边形的ground truth
- p p p和 q q q分别是 P P P和 Q Q Q的栅格化边缘像素
当 P P P远离 Q Q Q时,损失的第一项惩罚了模型;当 Q Q Q远离 P P P时,损失的第二项惩罚了模型。
(2)为了防止顶点的不稳定移动,作者在顶点之间的边e的长度上增加了一个 standard deviation loss(标准差损失):
L
s
(
P
)
=
∑
∥
e
−
e
ˉ
∥
2
n
L_{s}(P)=\sqrt{\frac{\sum \left \| e-\bar{e} \right \|_{2}}{n}}
Ls(P)=n∑∥e−eˉ∥2
- e e e表示顶点之间边的长度
- e ˉ \bar{e} eˉ表示边的平均长度
如果没有这一项的话,顶点会突然移动很大的距离,造成很大的损失,并导致梯度爆炸。
5 Experiments
5.1 Experimental Setup
(1)使用8Titan1080Ti gpu的分布式训练框架Horovod
[56]
(2) batch size=1,ADAM, learning rate=1e-4、weight decay=1e-4。
(3)通过水平随机翻转图像来进行数据增强; 使用训练由proposed boxes 和 GT boxes产生的实例来进一步增强数据。
(4)只训练IOU>0.5的实例
(5)实例分割实验中,在训练中增加了- 3%到+3%的boxes大小,并以2%的boxes扩展进行测试;在交互式注释实验中,在每条边扩展5px的盒子上进行box训练和测试;只有当预测顶点距离地面真值多边形至少2px时,才计算 chamfer loss。
(6)对于PolyTransform FPN,使用ResNet50作为主干,并使用UPSNet在Cityscapes上预先训练好的权重;对于可变网络不使用权重。
5.2 Instance Segmentation
-
Datasets: (1)Cityscapes:从27个城市中收集的大小为1024×2048图像,其中train、val和test集分别是2975、500、1525;总共有8个类,分别是bicycle, bus, person, train, truck, motorcycle, car and rider。
(2) new dataset:每个图像大小1200 × 1920, 其中train、val和test集分别是 10235、1139、1186;总共有10个类,分别是 car,truck, bus, train , person, rider, bicycle with rider, bicycle,motorcyclewith rider and motorcycle. -
Metrics: 对于预测的mask结果,使用平均平均精度(AP和AP50)。AP是按照10个IoU重叠阈值计算的,范围从0.5到0.95,以0.05的步长跟随.(意思就是0.5、0.55、0.60、0.65、0.7、0.75、0.8、0.85、0.9、0.95是个阈值)。AP50是重叠率为50%的AP。作者还引入了专注于边界的新指标。特别是,我们使用类似于 A benchmark dataset and evaluation methodology
for video object segmentation 和 Upsnet: A unified panoptic segmentation network.的度量标准,其中为每个mask计算精度,召回率和F1分数,如果预测在距ground truth的某个距离阈值内,则预测是正确的。作者使用1px的阈值,仅计算 true positives(TP)的指标。然后使用相同的10个IoU重叠阈值(范围从0.5到0.95,步长为0.05)来确定TP。计算完所有类别和阈值的F1分数后,最后将所有示例的平均值作为AF。 -
**Instance Initialization:**作者想要使用很好的实例初始化来表明本文仍然可以改善结果。采用公开可用的UPSNet ,并用WideResNet38替换其主干,并添加PANet 的所有元素,但同步批处理归一化(我们使用组归一化)。然后,对COCO进行预训练,并在主干中使用可变形卷积(DCN)。
-
Comparison to SOTA:
效果很好,与PANet相比,在AP上提高了3.7个点,在AP50上提高了2.8个点。
在新数据集上的效果,分别比PANet和UPSNet在AP上提高了6.2和3.8个点。 -
Robustness to Initialization:
AP和AF分别表示不同的实例分割网络用作初始化的结果,AP gain和AF gain分别为当运行本文的PolyTransform模型时,从初始化实例中获得AP, AF。
-
Qualitative Results:
在本文的实例分割输出中,我们看到在很多情况下我们的模型能够处理遮挡的情况。比如第三行蓝色和紫色行人的脚被身体遮挡住了仍然可以很好的分割出来。
在新的数据集上的定性结果,我们看到,本文的模型能够捕捉精确的边界,允许它捕捉复杂的形状,如汽车后视镜和行人。 -
Failure Modes:
一些情况下会分割失败,比如初始化比较差的情况下(左边)和遮挡物体是比较复杂的情况下(右边)。
5.3 Instance Segmentation
目标是用给定的ground truth bounding box的多边形来标注一个物体。注释器提供了一个ground truth box,我们的模型在上面工作,以输出对象实例的多边形表示。
- **Dataset:**分割 Cityscapes dataset,使原来的验证集validation set是现在的测试集,来自Weimar and Zurich两个城市的训练集形成验证集。接下来,作者直接 把Cityscapes dataset分成两部分,第一部分是 Cityscapes Hard,这部分将ground truth bounding box放大成一个正方形,然后对图像进行裁剪;第二部分是 Cityscapes Stretch,这部分将ground truth bounding box与图像一起被拉伸成一个正方形,然后被裁剪。
- Comparison to SOTA:
- Robustness to Initalization:
- Timing: 本文的模型在每个对象的平均运行21ms。比Polygon-RNN++快14倍,比 Curve GCN快1.4倍,这两个都是当前最先进的标注方法。
6 Conclusions
- 在本文中,作者提出了PolyTransform,一种新的深度结构,它结合了当前分割方法和现代基于多边形方法的优点。它首先利用分割网络为每个单独的对象生成一个mask。然后实例mask被转换为一组多边形,作为我们的初始化。最后,利用变形网络对多边形进行变形,以更好地拟合目标边界。
- 本文在Cityscapes数据集和作者收集的新数据集上评估本文的模型的有效性。实验表明,本文的方法能够产生精确的、保持几何形状的实例分割,显著优于主干模型。
- 与实例分割初始化相比,本文将验证AP和边界度量增加了3.0和10.3点,这使得它在Cityscapes排行榜上排名第一。
- 本文的模型将注释速度提高了35%。与之前在循环中标注上的工作相比,PolyTransform在 boundary metricti高出2.0%。
- PolyTransform可以推广到各种实例分割网络上。