论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation

这是CVPR2020 oral的一阶段实例分割的文章。
基于点来出框还是基于特征区域来出框是划分一阶段和二阶段最重要的依据。
论文PDF:https://arxiv.org/pdf/1909.13226.pdf
代码:github.com/xieenze/PolarMask.

摘要

本文通过实例中心分类和极坐标中的密集距离回归,将实例分割问题表述为实例轮廓的预测。 另外,本文采用有效的方法来处理采样高质量中心实例和优化密集距离回归,显著提高性能,简化训练过程。

必要知识

1.mAP值的计算
P:precision,即准确率;也就是所有被识别出来的本类物体中,真正的这类物体所占的比例。
R:recall,即召回率。也就是被正确识别出来的本类物体个数与测试集中所有真实本类物体的个数的比值。
Precision-recall 曲线:即以precision和recall作为纵、横轴坐标的二维曲线。改变识别阈值,使得系统依次能够识别前K张图片,阈值的变化同时会导致Precision与Recall值发生变化,从而得到曲线。
AP: Average Precision,就是Precision-recall 曲线下面的面积,通常来说一个越好的分类器,AP值越高。
mAP:Mean Average Precision,是多个类别AP的平均值。这个mean的意思是对每个类的AP再求平均,得到的就是mAP的值,mAP的大小一定在[0,1]区间,越大越好。该指标是目标检测算法中最重要的一个。

COCO中说的AP是AP[.50:.05:.95],也就是IOU_T设置为0.5,0.55,0.60,0.65……0.95,算十个APx,然后再求平均,得到的就是AP(COCO里的AP就是mAP)。官方解释如下:
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第1张图片
2.mask掩码
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第2张图片 第一步建立与原图一样大小的mask图像,并将所有像素初始化为0,因此全图成了一张全黑色图。
第二步将mask图中的r1区域的所有像素值设置为255,也就是整个ROI区域变成了白色。

mask其实就是位图啊,来选择哪个像素允许拷贝,哪个像素不允许拷贝。如果mask像素的值是非0的,我就拷贝它,否则不拷贝。得到的感兴趣的区域是白色的,表明感兴趣区域的像素都是非0,而非感兴趣区域都是黑色。一旦原图与mask图进行与运算后,得到的结果图只留下原始图感兴趣区域的图像了。
3.Smooth L1 Loss

论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第3张图片论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第4张图片
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第5张图片在 x 较小时,对 x 的梯度也会变小,而在 x 很大时,对 x 的梯度的绝对值达到上限 1,也不会太大以至于破坏网络参数。 smooth L1 完美地避开了 L1 和 L2 损失的缺陷。(当 x 增大时 L2 损失对 x 的导数也增大。这就导致训练初期,预测值与 groud truth 差异过于大时,损失函数对预测值的梯度十分大,训练不稳定。L1 对 x 的导数为常数。这就导致训练后期,预测值与 ground truth 差异很小时, L1 损失对预测值的导数的绝对值仍然为 1,而 learning rate 如果不变,损失函数将在稳定值附近波动,难以继续收敛以达到更高度。)
4.全卷积网络
简单来说就是把CNN最后的全连接层换成卷积层,输出的是一张已经Label好的图片,主要好处是支持不同大小的输入。采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。

5.COCO数据集
起源于微软于2014年出资标注的Microsoft COCO数据集,COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的分割进行位置的标定。图像包括91类目标,328,000个影像和2,500,000个label。虽然比ImageNet和SUN类别少,但是每一类的图像多,这有利于获得更多的每类中位于某种特定场景的能力,对比PASCAL VOC,其有更多类和图像。
6.随机剪裁(random crop)
在深度学习的训练时将图片的随机剪裁已经成为很普遍的数据扩充(data augmentation)方法,随机剪裁(缩写为:IRC)不但提高了模型精度,也增强了模型稳定性。
7.边际成本(marginal cost)
每增加一次数据量(batch_size大小、图片大小、Region Proposal个数等等),所造成的计算总成本(time cost 或 memory cost)的增量。
8.多尺度训练
多尺度训练对全卷积网络有效,一般设置几种不同尺度的图片,训练时每隔一定iterations随机选取一种尺度训练。这样训练出来的模型鲁棒性强,其可以接受任意大小的图片作为输入,使用尺度小的图片测试速度会快些,但准确度低,用尺度大的图片测试速度慢,但是准确度高。
9.Mask R-CNN(看看里面添加mask分支的思想)
10.Mask Scoring R-CNN(添加mask-IoU分支的具体内容和作用)
11.flops分析
Flops:floatingpointoperationspersecond的缩写,指的是每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。用来衡量算法/模型的复杂度。其实也就是模型进行参数运算的次数。
GFLOPS (gigaFLOPS) 等于每秒10亿 (=10^9) 次的浮点运算

1.介绍

本文设计了一种基于极坐标表示的实例分割方法,通过寻找物体的轮廓来建模,优点如下:
(1)极坐标的原点可以看作是物体的中心。
(2)从原点开始,轮廓点由距离和角度决定。
(3)角度是自然定向的,连接起来很方便 指向一个完整的轮廓。
换句话说,基于极坐标系的方式已经将固定角度设为先验,网络只需回归固定角度的长度即可,简化了问题的难度。笛卡尔表示可能表现类似于前两个的属性。 然而,它缺乏第三条属性的优势。如图,本文采用的是图d,Mask RCNN采用的是图b.
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第6张图片
PolarMask可以看作是FCOS的推广。 换句话说,FCOS是PolarMask的一个特例,因为bounding box可以看作是最简单的只有4个方向的mask.
本文主要贡献:
(1)将实例分割转换为两个并行任务:实例中心点分类和密集距离回归。
(2) 提出了极坐标IoU损失和极坐标中心,用来优化high-quality正样本采样和dense distance regression的损失函数优化。 结果表明,相比于标准的损失, 比如光滑的L1损失,本文提出的极坐标IoU损失可以大大地简化优化过程,大大提高准确率。 同时,极坐标中心改善了FCOS中最初的“中心”思想,从而进一步提高了性能。
(3) 第一次证明了实例分割在网络设计和计算复杂度上可以与anchor free的物体检测一样简单。没有使用任何trick(多尺度训练,延长训练时间等),PolarMask 在ResNext 101的配置下 在coco test-dev上取得了32.9的mAP。

2.相关工作

1.二阶段实例分割
二阶段实例分割通常先检测边界框,再在每个边界框的区域内执行分割。
Mask R-CNN建立在Faster R-CNN上,只需添加一个额外的掩码分支,并使用RoI-Align代替RoI-Pooling就提高了精度。
Mask Scoring R-CNN通过添加mask-IoU分支,从分类分数中重新计算掩码的置信度,从而使网络预测掩码的和groundtruth的IoU。
上述方法通常由两个步骤组成,首先检测边界框,然后在每个边界框中分类。 他们可以达到最先进的性能,但往往是缓慢的
2.一阶段实例分割
TensorMask研究了密集滑动窗口实例分割的范式,使用结构化的4D张量在空间域上表示掩码。
我们的PolarMask直接用简单灵活的两个平行分支的方法来模拟实例分割:对实例中心每个像素进行分类,并回归质量中心和等高线之间的密集分布的射线。 与上述方法相比, PolarMask最显著的优点是简单有效。

3.本文方法

3.1 架构

PolarMask是一个简单、统一的网络,由骨干网络、特征金字塔网络和两三个 task-specific heads(这句怎么翻译?) 组成,取决于是否预测边界框。骨干网络和特征金字塔网络的设置与FCOS相同。 虽然有许多更强的候选组件,但我们将这些设置与FCOS保持一致,以显示我们的实例建模方法的有效性和简便性。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第7张图片

3.2 Polar Mask分割

极坐标表示
因为射线条数给定后,射线的夹角固定,只需要预测射线的长度。 因此,我们将实例分割转化为实例中心分类和极坐标中的密集距离回归。
Mass Center重心
实例的中心有许多选择,例如box中心或重心。重心下降的速度更快,但是对于目标是圆环的情况,重心在实例外。我们暂时不考虑。
Center Samples中心采样
定义采样正像素的区域为从重心到左侧、顶部、右侧和底部的特征映射的1.5×步长。 因此,每个实例在重心附近有大约9∼16个像素作为中心示例。这有两个优点:
(1)将正样本的数量从1增加到9∼16,可以在很大程度上避免正负样本的不平衡。然而,在训练分类分支时仍然需要focal loss。
(2)重心可能不是实例的最佳中心样本。 更多的候选点使得能够自动找到一个实例的最佳中心。
Distance Regression
给定一个中心样本(XC,YC)和实例的轮廓点,可以很容易地计算n条射线的长度{d1,d2,…,dn}。对于一些特殊的情况:
(1) 如果一条射线与实例轮廓有多个交点,则直接选择长度最大的一条。
(2) 如果一条射线从掩模的中心开始,在某些角度上与实例的轮廓没有交点,我们将其回归目标设定为最小值ε (例如,ε=10-6)。
(3)如果射线和轮廓之间的交点像素坐标不是整数,则我们可以使用插值方法(例如线性插值)来估计其回归目标。

在回归分支的训练中。首先,PolarMask中的mask分支实际上是一个密集的距离回归任务,因为每个训练示例都有n条射线(例如n = 36)。 这可能会导致回归损失和分类损失之间的不平衡。 第二,例如,它的n射线是相关的,应该整体上进行训练,而不是被视为一组独立的回归示例。 因此,我们提出了Polar IoU损耗。在3.4中介绍。

Mask Assembling:
在推断过程中,网络输出分类和中心,我们将中心与分类相乘得到最终的置信度得分。将置信度分数设为0.05后,我们最多只能根据每个FPN级别的前一千最高得分预测来组装mask。 合并来自所有级别的最高预测,并应用阈值为0.5的非极大值抑制(NMS)产生最终结果。 接下来介绍mask的组装过程和简单的非极大值抑制过程。
给定一个中心样本(xc,yc)和n条射线的长度{d1,d2,…,dn),我们可以使用以下公式计算每个相应轮廓点的坐标:
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第8张图片从0度开始,轮廓点如图3所示,它们被一个接一个地连接,最后组装出一个完整的轮廓以及mask。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第9张图片
我们应用非极大值抑制删除多余的mask。 为了加快这一过程,我们计算了mask的最小边界框,然后根据框的IoU应用NMS。 我们验证了这种简化的后处理不会对最终的蒙版性能产生负面影响。

3.3 Polar Centerness

引入中心可以抑制低质量的检测对象,而无需引入任何超参数,并且已证明在目标边界框检测中有效。 但是,直接将其传输到我们的系统可能不是最优的,因为它是为边界框设计的,我们关心的是mask的预测。

给定集合{d1,d2,… ,dn}表示一个实例的n条射线的长度,其中dmax和dmin是集合的最大值和最小值。 则Polar Centerness为:
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第10张图片具体来说,我们添加了一个与分类分支平行的单层分支,以预测某个位置的极心,如图2所示。这是一种简单但有效的策略,可以对点进行重新加权,从而使dmin和dmax越近 ,权重较高的点被分配。 实验表明,极心可以提高精度,尤其是在更严格的定位指标(例如AP75)下。

3.4 Polar IoU Loss:

极坐标分割方法将实例分割的任务转换为一组回归问题。 在目标检测和分割领域中,大多数采用smooth-l1 loss和IoU loss监督回归问题。 但是,smooth-l1 loss忽略了相同对象的样本之间的相关性,因此导致定位精度较低。 然而,IoU loss会从整体上考虑优化,并直接优化关注指标。 然而,计算预测mask的IoU及其基本情况很难实现并行计算。 在这项工作中,我们推导了一种简单有效的算法,可基于极坐标表示来计算mask IoU,并实现有竞争性的性能,如图5所示。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第11张图片在极坐标系中,mask IoU的计算如下(即计算出了mask和GT的IOU):
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第12张图片其中回归目标d和预测d∗是射线的长度,角度为θ。 然后将其转换为离散形式。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第13张图片当N接近无穷大时,离散形式等于连续形式。 我们假设线是均匀发射的,所以∆θ =2π/N,这进一步简化了表达式。 凭实验观察到,如果将平方形式丢弃并简化为以下形式,对性能几乎没有影响(±0.1 mAP的差别):
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第14张图片Polar IoU Loss是Polar IoU的二进制交叉熵(BCE)Loss。 由于最佳IoU始终为1,Loss实际上是Polar IoU的负对数:
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第15张图片
Polar IoU Loss具有两个有利的特性:(1)可微分,能够实现反向传播; 并且很容易实现并行计算,从而促进了快速的训练过程。 (2)整体预测回归目标。 与我们的实验中显示的“ smooth-1”Loss相比,它大大提高了整体性能。 (3)另外,Polar IoU Loss能够自动保持分类损失与密集距离预测的回归损失之间的平衡。这条将在后面实验中对其进行详细讨论。

4.实验部分

我们在COCO基准上提供实例分割的结果。 按照常规做法,我们使用8万训练图像集和验证图像集的35K子集(trainval35k)的联合进行训练,并报告在剩余5K 验证图片集(minival)的消融情况。
我们还将在test-dev上比较结果。 除非另有说明,否则我们采用1x训练策略(1x代表12epoch的COCO训练),单尺度训练和测试图像短边为800。
Training Details:
在消融研究中(思想是控制变量法),将ResNet-50-FPN 用作我们的骨干网络,并使用与FCOS 相同的超参数。 具体来说,我们的网络使用随机梯度下降(SGD)进行了90K次迭代训练,初始学习率为0.01,并且有16个图像的小批量。 在迭代60K和80K时,学习率分别降低了10倍。
权重衰减和动量分别设置为0.0001和0.9。 我们使用ImageNet 上预先训练的权重来初始化骨干网络。 调整输入图像的大小,使其短边为800,长边小于或等于1333。

4.1. 消融研究

上限验证(是否能够精准的描述mask):
关于PolarMask的第一个问题是它可能无法精确地描绘mask。 在本节中,我们证明此担心是没有必需的。 在这里,当所有射线回归到等于ground truth的距离时,我们将PolarMask的上限验证为预测的mask和ground truth的IoU。 图7显示了对不同射线数量的验证结果。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第16张图片
可以看到,当线的数量增加时,IoU接近完美(90%以上),这表明Polar Segmentation能够很好地建模mask 。 因此,不必关注PolarMask的上限。 同样,使用重心比以边界框中心为实例的中心更为合理。
射线数量:
它在PolarMask的整个系统中起着根本性的作用。 从表a和图7中可以看出,更多的射线呈现出更高的上限和更好的AP。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第17张图片
例如,与18射线相比,36射线使AP改善1.5%。另外,太多的射线(72射线)会使性能饱和,因为它已经很好地描绘了mask的轮廓,射线数量不再是限制性能的主要因素。

Polar IoU Loss vs. Smooth-l1 Loss
​ 我们在架构中测试了Polar IoU Loss和Smooth-l1 Loss。 我们注意到,Smooth-l1 Loss的回归损失明显大于分类损失,因为我们的体系结构是密集距离预测的任务。 为了解决不平衡问题,我们在Smooth-l1损失中选择不同的因子α来回归损失。 实验结果示于表b。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第18张图片
我们的Polar IoU Loss达到了27.7%的AP,而没有平衡回归损失和分类损失。 相比之下,Smooth-l1损失的最佳设置达到25.1%AP,差距为2.6%AP,表明Polar IoU损失比Smooth-l1损失更有效地训练心和轮廓之间的距离回归任务。

​ 我们假设差距可能来自两个方面。首先,Smooth-l1损耗可能需要更多的超参数搜索才能获得更好的性能,与Polar IoU loss相比,这很耗时。 其次,Polar IoU损失可以预测一个实例作为一个整体的所有射线,这要优于Smooth-l1损失。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第19张图片
在图6中,我们分别比较了使用Smooth l1损耗和Polar IoU loss的一些结果。 Smooth-l1 Loss的结果表明它缺乏对整个对象水平的监督。 PolarMask展示了更平滑,更精确的轮廓。
Polar Centerness vs. Cartesian Centerness:
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第20张图片
比较实验如表c。 极坐标中心总体提高AP 1.4%。 特别是,AP75和APL分别大幅提高了2.3%和2.6%。我们解释如下。 一方面,低质量的mask会对IoU产生更多负面影响。 另一方面,大实例在最大和最小射线长度之间存在较大差异的可能性更大,这正是极坐标中心致力于解决的问题。

Box Branch:
大多数以前的实例分割方法都需要边界框来定位目标区域,然后对对象内部的像素进行分割。 相比之下,PolarMask可以直接输出mask而无需边界框。在本节中,我们测试附加边界框是否可以帮助改善mask的AP,如下所示。 如果射线到达边界框之外,则射线在边界处被切断。 从表d中,我们可以看到边界框对模板预测的性能影响不大。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第21张图片
因此,为了简化和提高速度,在PolarMask中没有使用边界框预测。

Backbone Architecture:
​ 表e显示了PolarMask在不同网络主干上的结果。 可以看出,由更深层次的高级设计网络提取的更好的功能可以按预期提高性能。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第22张图片Speed vs. Accuracy :

较大的图像尺寸会以较低的推理速度产生较高的精度。 表f显示了由较短图像侧定义的不同输入图像比例的速度/精度的权衡。 在V100上得到了FPS。 它表明PolarMask具有很强的潜力,只需简单修改即可开发为实时实例分割应用程序。( 注意,这里考虑整个模型推断的时间,包括所有后处理过程)
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第23张图片

4.2 Comparison to state-of-the-art :

我们在COCO数据集上评估PolarMask,并将测试开发结果与包括一阶段和两阶段模型在内的最新方法进行比较,如表2所示。PolarMask输出如图8所示。
论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第24张图片论文笔记:PolarMask: Single Shot Instance Segmentation with Polar Representation_第25张图片PolarMask无需任何花哨的技巧,就可以通过更复杂的一步法获得竞争性性能。 由于我们的目的是设计概念上简单灵活的mask预测模块,因此许多改进方法例如多尺度训练和更长的训练时间,不在本工作范围之内。 我们认为,YOLACT和PolarMask的差距来自更多的训练迭代和数据扩充。 如果将这些方法应用于PolarMask,则可以轻松提高性能。 此外,TensorMask和PolarMask的差距是由张量双锥体和对齐表示引起的。 考虑到这些方法既耗时又耗费内存,因此我们不将其插入PolarMask。

5.Conclusion :

PolarMask是一种具有两个平行分支的一阶段无锚实例分割方法:对实例的质心进行分类,并对质心和轮廓周围的采样位置之间的密集射线进行回归。 与以前通常将mask预测解决为空间布局中的二进制分类的先前工作不同,PolarMask提出了极坐标表示并将mask预测转换为密集距离回归。
PolarMask的设计几乎与一阶段物体检测一样简单,干净,从而可忽略不计的计算开销。 我们希望所提出的PolarMask框架可以作为一阶段实例分割任务的基础和强大的基准。

你可能感兴趣的:(论文解读)