本文提出了一种基于轮廓的deep snake方法用于实例的实时分割。与最近一些直接从图像中回归对象边界点坐标的方法不同,deep snake使用神经网络迭代变形初始轮廓以匹配对象边界,这实现了snake算法的经典思想和基于学习的方法。对于轮廓的结构化特征学习,我们提出在deep snake中使用循环卷积,与一般的图卷积相比,它更好地利用了轮廓的循环图结构。在deep snake的基础上,提出了一种两阶段的管道分割算法:初始轮廓提议和轮廓变形,可以有效地处理目标定位中的误差。实验表明,该方法在城市景观、KINS、SBD和COCO数据集上都取得了很好的性能,在1080tigpu上对512×512幅图像的实时处理速度达到32.3fps。
1.提出了一种基于学习的snake实时实例分割算法,并引入了基于循环卷积的轮廓特征学习算法。
2.提出了一个两阶段的框架实例分割:初始轮廓建议和轮廓变形。这两个阶段都可以处理初始目标定位的误差。
3.在Cityscapes、KINS、SBD和COCO数据集上验证了我们的方法的最新性能。对于512×512的图像,我们的算法运行速度为32.3 fps,对于实时应用非常有效。
图1 deep snake 的基本思想。给定初始轮廓,在每个顶点(a)处提取图像特征。由于轮廓是一个循环图,因此在轮廓(b)上应用循环卷积进行特征学习。蓝色、黄色和绿色节点分别表示输入特征、循环卷积核和输出特征。最后,在每个顶点处回归偏移以使轮廓变形以匹配对象边界(c)。
本文提出了一种基于学习的snake算法——deep snake,用于实时实例分割。deep snake以初始轮廓为输入,通过逐点偏移对其进行回归变形。我们的创新之处在于引入了循环卷积来有效地学习轮廓上的特征,如图1所示轮廓是一个循环图,它由一个闭合循环中连接的顶点序列组成。由于每个顶点的度数都等于2,我们可以对顶点特征应用标准的一维卷积。考虑到轮廓是周期性的,deep snake引入了循环卷积,这意味着一个非周期函数(一维核)与一个周期函数(轮廓上定义的特征)以标准方式进行卷积。循环卷积的核心不仅编码每个顶点的特征,而且编码相邻顶点之间的关系。相反,通用的GCN执行池操作来聚合来自相邻顶点的信息。我们的循环卷积中的核函数相当于一个可学习的聚合函数,它比使用通用的GCN更有表现力,并获得更好的性能。
在给定初始轮廓的情况下,传统的snake算法将顶点的坐标视为一组变量,并根据这些变量对能量泛函进行优化。通过在轮廓坐标处设计合适的力,算法可以将轮廓驱动到物体边界。然而,由于能量泛函通常是非凸的,并且是基于底层图像特征手工构造的,因此优化往往会找到局部最优解。而deep snake则直接学习端对端地演化轮廓。给定N个顶点{xi|i = 1,…,我们首先为每个顶点构造特征向量。vertexxi的Theinputfeaturefifor是基于学习的特征和顶点坐标的连接:[F(xi);xi],其中F表示特征映射。特征图F是通过在输入图像上应用CNN主干得到的。在我们的实例分割管道中,CNN主干与检测器共享,稍后将对此进行讨论。图像特征F(xi)的计算采用顶点坐标xi处的双线性插值。附加顶点坐标用于编码等高线顶点之间的空间关系。由于变形不应受图像中轮廓平移的影响,我们将xiby的每个维数减去所有顶点上的最小值。
由于遮挡,一些对象被分成几个组件,如图4所示。然而,一个轮廓只能勾勒出一个组件。为了克服这个问题,我们建议使用另一个检测器来查找对象框中的对象组件。图4显示了基本思想。具体来说,使用检测到的框,我们的方法执行RoIAlign[18]来提取一个特征映射,并在特征映射上添加一个检测器分支来生成组件框。对于检测到的分量,使用deep snake对每个分量进行分割,然后合并分割结果。