实时实例分割的Deep Snake:CVPR2020论文点评
Deep Snake for Real-Time Instance Segmentation
论文链接:https://arxiv.org/pdf/2001.01629.pdf
摘要
本文提出了一种基于轮廓的深度snake方法用于实例的实时分割。与最近一些直接从图像中回归物体边界点坐标的方法不同,deep snake使用神经网络迭代地将初始轮廓变形到物体边界,这一方法用基于学习的方法实现了snake算法的经典思想。对于轮廓的结构化特征学习,我们提出在deep snake中使用循环卷积,与一般的图卷积相比,它更好地利用了轮廓的循环图结构。在deep snake的基础上,我们开发了一个两阶段的分割流水线:初始轮廓提议和轮廓变形,可以处理初始目标定位中的错误。实验表明,该方法在实时实例分割效率高的同时,在城市景观、Kins和Sbd数据集上取得了最新的性能,在1080tigpu上对512×512幅图像的分割效率为32.3fps。这些代码可以在https://github.com/zju3dv/snake/上找到。
本文提出了一种基于学习的snake算法deepsnake,用于实例的实时分割。受前面方法的启发[20,23],deep snake将初始轮廓作为输入,并通过回归顶点偏移使其变形。我们的创新之处在于在轮廓上引入循环卷积以实现高效的特征学习,如图1所示。我们观察到轮廓是一个循环图,由一个封闭循环中连接的顶点序列组成。由于每个顶点的相同阶数都等于2,因此我们可以对顶点特征应用标准的一维卷积。考虑到轮廓是周期性的,deep snake引入了循环卷积,这意味着非周期函数(1D核)以标准方式卷积为周期函数(轮廓上定义的特征)。圆卷积的核心不仅对每个顶点的特征进行编码,而且对相邻顶点之间的关系进行编码。相反,通用GCN执行池来聚合来自相邻顶点的信息。循环卷积中的核函数相当于一个可学习的聚合函数,它比一般的GCN更具表现力,性能也更好,我们在第5.2节的实验结果证明了这一点。
基于deep snake,我们开发了一个管道实例分割。给定初始轮廓,deep snake可以迭代地将其变形到对象边界并获得对象形状。剩下的问题是如何初始化轮廓,经典snake算法已经证明了轮廓的重要性。受[30,27,42]的启发,我们建议生成一个由物体极值点形成的八角形作为初始轮廓,它通常将物体紧紧地包围起来。
具体来说,我们在检测模型中加入了deep snake。检测到的方块第一个通过连接四个以其边界为中心的点来提供菱形轮廓。然后,deep snake将菱形作为输入,并将该点从四个顶点偏移到四个端点,这些端点用于构造后面的八边形[42]。最后,deep snake将八角形轮廓变形到对象边界。我们的方法在城市景观[7]、Kins[33]和Sbd[15]数据集上展示了最先进的性能,同时在GTX 1080ti GPU上对512×512个图像的实时实例分割效率为32.3 fps。基于学习的snake之所以快速而准确,有两个原因。
首先,我们的方法可以处理目标定位中的错误,从而允许光检测器。
其次,与基于像素的表示相比,对象轮廓具有更少的参数,并且不需要昂贵的后处理,例如掩模上采样。
总之,这项工作有以下贡献:
•我们提出了一种基于学习的snake算法用于实时实例分割,该算法将初始轮廓变形到对象边界,并引入循环卷积来进行轮廓特征学习。
•我们提出了一个两阶段的管道,例如分割:初始轮廓建议和轮廓变形。这两个阶段都可以处理初始对象定位中的错误。
•我们在城市景观、KIN和Sbd数据集上展示了我们方法的最新表现。对于512×512幅图像,我们的算法运行速度为32.3fps,这对于实时实例分割是非常有效的。
Pixel-based methods
大多数方法[8、22、17、25]在区域建议内的像素级上执行实例分割,这对于标准cnn尤其有效。
Contour-based methods
在半自动标注领域,[3,1,23]尝试用其他网络代替标准cnn进行轮廓标注。[3,1]使用递归神经网络依次预测轮廓点。为了避免顺序推理,[23]遵循snake算法的流程,使用图卷积网络来预测轮廓变形的顶点偏移。此策略显著提高了注释速度,同时与基于像素的方法一样精确。然而,[23]缺少例如分段的管道,并且没有充分利用轮廓的特殊拓扑。deep snake利用循环图的拓扑结构,引入了循环卷积,使轮廓的特征学习更为有效,而不是将轮廓看作一般的图形。
受[20,23]启发,我们通过将初始轮廓变形到对象边界来执行对象分割。具体地说,deep snake根据CNN主干的图像特征输入轮廓,并预测指向对象边界的每个顶点偏移量。为了充分利用轮廓拓扑结构,我们引入了圆卷积来有效地进行轮廓特征学习,这有助于deep snake学习变形。在deep snake的基础上,开发了一个管道分割实例。
3.1. Learning-based snake algorithm
给定轮廓上定义的输入特征,deep snake引入了用于特征学习的循环卷积,如图2所示。一般来说,轮廓顶点的特征可以看作是一个Ddiscrete信号f:Z→RD,并通过标准卷积进行处理。但这会破坏轮廓的拓扑结构。因此,我们将轮廓上的特征视为周期信号,定义为:
类似于标准卷积,我们可以构造一个基于循环卷积的网络层用于特征学习,这很容易集成到现代网络结构中。特征学习后,deep snake对每个顶点的输出特征应用三个1×1卷积层,并预测轮廓点与目标点之间的逐顶点偏移量,用于轮廓变形。在所有的实验中,圆卷积的核大小被确定为9。正如在引言中所讨论的,与一般的图卷积相比,所提出的循环卷积更好地利用了轮廓的循环结构。我们将在第5.2节中展示实验比较。另一种方法是使用标准CNN从输入图像中回归像素向量,以指导初始轮廓的演变[35、31、38]。我们认为,与标准CNNs相比,deep snake的一个重要优点是对象级的结构化预测,即一个顶点的偏移预测依赖于同一轮廓的其他顶点。因此,对于位于背景中且远离目标的顶点,deep snake更合理地预测其偏移量,这在初始轮廓中非常常见。在这种情况下,标准CNN很难输出有意义的偏移量,因为决定背景像素属于哪个对象是不明确的。
Network architecture
图3(a)显示了详细的示意图。根据[32,37,21]的观点,deep snake由三部分组成:主干、融合块和预测头。主干网由8个“CirConvBn ReLU”层组成,并对所有层使用残留跳转连接,其中“CirConv”表示循环卷积。融合块的目的是在多个尺度上融合所有轮廓点的信息。它将骨干网中所有层的特征连接起来,然后通过1×1卷积层和max池转发它们。然后将融合特征与每个顶点的特征连接起来。预测头将三个1×1卷积层应用于顶点特征并输出顶点偏移量。
3.2. Deep snake for instance segmentation
图3(b)概述了提议的管道,例如分段。在目标检测模型中加入了deepsnake。探测器首先生成用于构建菱形轮廓的对象框。然后deep snake将菱形顶点变形为对象极值点,用于构造八边形轮廓。最后,以八边形为初始轮廓,进行迭代轮廓变形,得到目标形状。
Initial contour proposal
大多数活动的contou rmodel需要精确的初始轮廓。由于[42]中提出的八边形通常紧紧地包围着物体,我们选择它作为初始轮廓,如图3(b)所示。 我们通过基于极值点生成四条直线并连接它们的端点来构造八边形。具体来说,这四个极端点形成了一个新的对象框。对于每个极端点,一条线从它沿着相应的框边界在两个方向延伸到边界长度的1/4。如果这条线与方框角相交,它将被截断。然后四条线的端点连接起来形成八边形。
Contour deformation
请注意,轮廓是对象空间延伸的另一种表示。该方法通过将初始轮廓变形到目标边界,解决了探测器的定位误差。
Handling multi-component objects
由于遮挡,许多实例包含多个连接组件。但是,一个轮廓只能为每个边界框勾勒一个连接的组件。为了克服这一问题,我们提出在对象盒中检测对象组件。具体来说,我们的方法使用检测到的盒子,执行RoI Align[17]来提取特征映射,并在特征映射上添加一个检测器分支来生成组件盒子。图4显示了基本思想。以下分段管道保持不变。我们的方法通过合并来自同一对象盒的组件轮廓来获得最终的对象形状。
训练策略
对于Deep snake的训练,我们利用文[13]中提出的平滑损失来学习这两种变形过程。极值点预测的损失函数定义为:
对于检测部分,我们采用与原始检测模型相同的损失函数。训练细节随数据集的变化而变化。
用循环卷积代替图卷积,使APvol提高了0.8apvol。为了充分验证循环卷积的重要性,我们进一步比较了具有不同卷积算子和不同推理迭代的模型,如表2所示。循环卷积在所有推理迭代中都优于图卷积。两次迭代的循环卷积比三次迭代的图卷积性能好0.6apvol。图5显示了Sbd上图形和循环卷积的定性结果,其中循环卷积给出了更清晰的边界。定量和定性分析结果表明,具有圆卷积的模型具有较强的轮廓变形能力。
表3将我们的结果与城市景观验证和测试集的其他最新方法进行了比较。所有的方法都经过测试,没有技巧。我们的方法只使用了有限的注释,在验证和测试集上都达到了最先进的性能。在验证集上,我们的性能优于PANet,分别为0.9ap和1.3ap50。根据[29]中的近似定时结果,PANet以小于1.0fps的速度运行。相比之下,我们的模型在1080ti GPU上以4.6fps的速度运行,生成1216×2432幅图像,速度大约快5倍。当不采用处理多分量对象的策略时,我们的方法在测试集上达到28.2ap。视觉效果如图6所示。
表4显示了与Kins数据集上的[8,22,10,17,25]在AP度量方面的比较。Kins[33]指出,同时处理模态分割和模态分割可以提高性能,如表4的第四行和第五行所示。我们的方法只学习一个模态分割任务,并在所有方法中获得最佳性能。我们发现蛇分支可以提高检测性能。当CenterNet单独训练时,检测到30.5ap。当使用蛇枝训练时,它的性能提高了2.3ap。对于Kins数据集上的768×2496幅图像,我们的方法在1080ti GPU上以7.6fps的速度运行。图7显示了Kins的一些定性结果。
在表5中,我们根据Voc AP指标与Sbd数据集上其他基于轮廓的方法[19,39]进行了比较。[19,39]通过回归形状向量来预测物体轮廓。STS[19]将物体轮廓定义为物体中心的径向矢量,ESE[39]用20和50个切比雪夫多项式系数近似物体轮廓。相反,我们的方法将初始轮廓变形到对象边界。我们的性能比这些方法至少高出19.1apvol。注意,我们的方法得到了21.4ap50和36.2ap70的改进,这表明改进随着IoU阈值的增加而增加。这表明我们的算法能更好地勾勒出物体的边界。对于Sbd数据集上的512×512图像,我们的方法在a1080Ti上以32.3fps的速度运行。一些定性结果如图7所示。
Running time
表6将我们的方法与其他方法[8、22、17、19、39]在Pascal Voc数据集上的运行时间进行了比较。由于Sbd数据集与Pascal Voc共享图像并且具有相同的语义类别,因此Sbd数据集上的运行时间在技术上与Pascal Voc上的运行时间相同。我们从[39]中得到了其他方法在Pascal Voc上的运行时间。
对于Sbd数据集上的512×512图像,我们的算法在桌面上以32.3fps的速度运行,采用Intel i7 3.7GHz和GTX1080TiGPU,这对于实时实例分割非常有效。具体来说,CenterNet需要18.4 ms,初始轮廓建议需要3.1 ms,轮廓变形的每次迭代需要3.3 ms。由于我们的方法输出对象边界,因此不需要像上采样这样的后处理。如果采用处理碎片实例的策略,则检测器额外需要3.6ms。
提出了一种新的基于轮廓的实例实时分割模型。受传统snake算法的启发,我们的方法将初始轮廓变形到目标边界,得到目标形状。为此,我们提出了一种基于学习的snake算法deep snake,该算法引入了循环卷积来有效地学习轮廓特征,并对轮廓变形的顶点偏移进行了回归。基于deep snake,我们开发了一个两阶段的管道分割实例:初始轮廓提议和轮廓变形。结果表明,与直接回归目标边界点坐标相比,该流水线具有更好的性能。我们还证明了圆卷积比图卷积更有效地学习轮廓的结构信息。为了克服轮廓线只能勾勒出一个连通分量的局限性,提出了在目标盒内检测目标分量的方法,并在城市景观中验证了该方法的有效性。该模型在城市景观、Kins和Sbd数据集上取得了最新的结果,具有实时性。