笔记:Deep Snake for Real-Time Instance Segmentation

Deep Snake for Real-Time Instance Segmentation(Deep Snake用于实时实例分割)

参考链接:https://blog.csdn.net/racesu/article/details/107068468

与最近一些直接从图像中回归物体边界点坐标的方法不同,deep snake使用神经网络迭代变形初始轮廓来匹配物体边界,这通过基于学习的方法实现了snake算法的经典思想。对于轮廓的结构化特征学习,我们提出在deep snake中使用循环卷积,与一般图卷积相比,它更好地利用了轮廓的循环图结构。基于deep snake,我们开发了一个两阶段的管道来进行实例分割:初始轮廓提出和轮廓变形,可以处理目标定位中的错误。

1、该方法能够处理目标检测模型定位错误的问题所以只需要结合一个轻量级的目标检测模型即可。
2、基于contour的分割比基于pixel-based的分割具有更少的参数,而且没有Decoder过程。
  为了增加算法的鲁棒性,DeepSnake算法把传统的对于contour坐标来手工定义能量的snake算法改为了Data-driven manner的算法即基于学习的方法。
 

 

deep snake的基本思想。给定初始轮廓,在每个顶点(a)处提取图像特征。由于轮廓是一个循环图,所以在轮廓(b)上使用循环卷积进行特征学习。蓝色、黄色和绿色的节点分别表示输入特征、循环卷积的核特征和输出特征。最后,在每个顶点回归偏移量来变形轮廓以匹配物体的边界(c)。

贡献:

1、提出了一种基于学习的蛇算法来实时分割实例,并引入了循环卷积来学习轮廓的特征

2、提出了一个两阶段的管道分割实例:初始轮廓提议和轮廓变形。这两个阶段都可以处理初始目标定位中的错误

3、在城市景观、KINS、SBD和COCO数据集上展示了我们的方法的最新性能。对于512 512张图像,我们的算法以32.3 fps的速度运行,这对于实时应用程序来说是非常高效的。

Pixel-based methods.

大多数方法在区域建议的像素级上执行实例分割,这对于标准的cnn特别有效。一个典型实例是Mask R-CNN。它首先检测对象,然后使用掩码预测器在提议的盒子内分割实例。为了更好地利用盒子内的空间信息,PANet融合了来自完全连接层和卷积层的掩模预测。这种基于建议的方法可以实现最先进的性能。这些方法的一个局限性是,它们不能解决定位中的错误,如太小或移动的盒子。相比之下,我们的方法将检测到的盒子变形到物体的边界,因此物体形状的空间扩展不会受到限制。

有一些基于像素的方法是没有区域建议的。在这些方法中,每个像素产生辅助信息,然后聚类算法根据这些信息将像素分组为对象实例。辅助信息和分组算法是多种多样的。预测每个像素的边界感知能量,并使用分水岭变换算法进行分组。通过学习实例级嵌入来区分实例。将输入图像视为一个图,并回归像素的亲和度,然后通过一个图合并算法进行处理。由于掩模是由密集的像素组成的,后聚类算法往往是耗时的。

Contour-based methods.

在这些方法中,对象形状包括沿对象边界的一系列顶点。传统的snake算法首先引入了基于轮廓的图像分割表示。它们通过优化关于轮廓坐标的手工能量来变形初始轮廓到物体边界。为了提高这些方法的鲁棒性,提出以数据驱动的方式学习能量函数。一些最近的基于学习的方法尝试从RGB图像回归轮廓点坐标,而不是迭代优化轮廓,这要快得多。然而,他们报告的准确性并不等同于最先进的基于像素的方法。

在半自动标注领域,尝试用其他网络代替标准的cnn进行轮廓标注。[4,1]采用循环神经网络对轮廓点进行序列预测。为了避免顺序推理,[25]遵循蛇算法的流水线,并使用一个图卷积网络预测顶点方向的轮廓变形偏移量。该策略显著提高了注释速度,同时具有与基于像素的方法相同的准确性。
但是,[25]缺乏实例分割的管道,也没有充分利用轮廓的特殊拓扑结构。deep snake并没有将轮廓视为一般的图,而是利用了循环图拓扑,并引入了循环卷积来对轮廓进行高效的特征学习。

Learning-based snake algorithm

对于Deep snake,给定contour作为输入,contour的表达则用N个顶点(vertices),我们首先构造每个顶点的特征向量。顶点xi的输入特征fi是基于学习的特征和顶点坐标的拼接:其中F为特征映射。在输入图像上应用CNN主干,得到feature maps F。图像特征F(xi)是利用顶点坐标xi的双线性插值来计算的。附加的顶点坐标用于编码轮廓顶点之间的空间关系。由于变形不应受图像中轮廓平移的影响,我们将xi的每个维度减去所有顶点上的最小值。

 在给定轮廓上定义的输入特征后,deep snake引入了循环卷积来进行特征学习,如图2所示。
一般情况下,等高线顶点的特征可视为一维离散信号,并进行标准卷积处理。
但这打破了轮廓线的拓扑结构。因此,我们将f扩展为定义为的周期信号:

 

 并提出利用循环卷积对周期特征进行编码的方法:

 

 Network architecture

 图3 展示了网络结构原理图的细节,DeepSnake网络由三部分组成:一个主干网络、一个融合模块、和一个预测头。其中主干网络由8个CirConv-Bn-ReLU组成,所有层直接都使用了残差跳跃连接的方式,CirConv就是循环卷积。融合模块的功能是融合contour上所有点的多尺度的信息。它合并了主干网络中所有层的特征,然后传入到1x1的卷积层中,再进行一次最大池化操作,这样融合的特征就和每个顶点的特征合并在了一起。预测头对于顶点特征采用了3个1x1的卷积层,然后映射到每个顶点的偏移量上输出。
 

 第一阶段:建议contour的产生

给定一个目标检测框,从中提取四个点分别是上下左右四条边的中点,记为,连接这四个点得到一个菱形轮廓,之后把这个菱形轮廓输入到DeepSnake中。

  DeepSnake通过对菱形轮廓进行推理输出对应菱形轮廓4个顶点的4个偏移量,把通过菱形轮廓和偏移量计算得到的四个极端点记为,这四个偏移量也就是

  实际上,为了提取更多的上下文信息,菱形轮廓是均匀上采样得到的40个点,然后DeepSnake相应的输出40个offset。损失函数只考虑的偏移量。

  通过得到的四个极端点得到4个线段,连接线段的端点,得到一个八边形。具体来说,4个极端点对应一个水平框,对于每个极端点沿着相应水平框边的方向,向两边延伸为一个线段,线段的长度为相应边长的1/4,线段延伸如果遇到水平框端点就截断。然后连接四条线段的端点,就得到了八边形。
 

第二阶段:contour变形


  先对八边形采样N个点,从极端点的顶点作为第一个点开始沿着边均匀采样,gt也是同样的采样方式。然利用图3所示的网络结构,通过循环卷积进行特征提取,然后通过1x1卷积映射到偏移量上。实验中论文设置N=128,能够均匀的覆盖绝大多数的物体形状了。

  一次就能准确的回归偏移量是一件很有挑战的事,尤其是那种顶点距离对象较远的情况,为了解决这个问题 ,论文使用了可迭代的方法,具体来说,先基于当前的contour预测N个偏移量,然后通过该偏移量对contour进行第一轮变形作为新的contour,重复这个过程,论文实验中迭代的次数为三次。

  contour也是目标空间扩展性的另外一种表示方法。通过对其进行变形是能够解决检测器的定位问题的。
 

Multi-component detection

一些物体由于遮挡被分解成几个组件,如图4所示。然而,一个轮廓只能勾勒出一个组件。
为了克服这个问题,我们建议使用另一个检测器来找到对象框中的对象组件。
图4显示了基本思想。具体来说,使用检测到的盒子,我们的方法执行RoIAlign[18]来提取一个特征映射,并在特征映射上添加一个检测器分支来生成组件盒。对于检测到的分量,我们使用deep snake对每个分量进行分割,然后合并分割结果。 

 

总结
该方法需要结合目标检测方法使用。

该方法能够在一定程度解决目标检测定位错误的问题。

和之前的深度学习的分割相比,该方法输入参数更少,且不需要Decoder过程。

和直接对边界点进行回归相比,效果好很多。

同过对snake算法进行改进,使其变为可学习的数据驱动的方法,鲁棒性更强。

论文对比了图卷积和循环卷积,在该任务上循环卷积的效果要优于图卷积
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值