论文阅读-8:用于实时实例分割的Deep Snake

2020/02/10

[论文阅读-8] Deep Snake for Real-Time Instance Segmentation

会议:无 (2020)

简介:

本文介绍了一种新的基于边缘的实时实例分割方法,这种方法通过利用神经网络逐渐的重塑初始边界至原始物体边界大小。该方法用基于学习的方法实现snake算法的经典思想(… which implements the classic idea of snake algorithms with a learning-based approach …)。对于边界的结构特征学习,本文采用了圆弧卷积(circular convolution)的方法。基于deep snake方法,文中设计了两个阶段来进行实例分割,初始轮廓的提出以及轮廓重塑。

补充阅读

Ling采用传统的snake算法,训练一个神经网络来把初始轮廓转变为物体的边界。给定一个具有图像特征的轮廓,将输入轮廓视为一个图,利用图卷积网络(GCN)预测轮廓点与目标边界点之间的顶点偏移量。(论文:Fast interactive object annotation with curve-gcn)

存在的问题

  • 基于像素的方法:
    • 很难解决物体定位带来的误差,太小的或者被平移的bounding box
    • 由于遮罩是由密集像素组成的,因此后聚类算法往往很耗时

贡献

  • 提出了一种基于学习的方法实现snake算法的实时实例分割,用来重塑初始轮廓至原始物体轮廓;同时介绍了用于轮廓特征学习的圆弧卷积
  • 提出了用于实例分割的两阶段方法:初始化轮廓和轮廓重塑。这两个步骤都可以处理物体初始定位带来的误差

网络结构

基于学习的snake算法

传统的snake算法将轮廓的顶点坐标视为一系列变量,并优化这些变量的能量函数来迭代顶点坐标。通过有效的能量函数设计,理论上可以将轮廓优化到目标边界上。但由于基于手工设计的能量函数一般都是非凸的,轮廓的优化过程易于陷入居于最优解。与之不同的是,DeepSnake则直接从数据中学习出目标的边界轮廓。对于包含N个顶点的轮廓 {xi | i=1,…,N},首先为每个顶点建立特征矢量。这一特征矢量为 fi = [F(xi); x’i ],其中前半部为基于CNN从输入图像上学习到的特征图,而后一个则是通过变换后得到的旋转不变坐标。

在得到每个点的特征矢量后,DeepSnake便利用圆卷积进行特征学习。轮廓上的特征可以被视为一维离散信号并可利用标准卷积进行处理。为了避免破坏轮廓的拓扑结构,研究人员将轮廓上的特征视为周期性信号。

与常见的卷积算法类似,圆弧卷积方法可以方便地提取顶点特征并集成到相应的网络结构中。在圆卷积进行特征学习后,DeepSnake利用1x1卷积层对每个顶点的输出特征进行处理,为每个顶点预测出与目标轮廓间的偏移量,这一偏移量将用于调整轮廓形状不断逼近目标。

这种算法比一般的图卷积方法可以更好的探索轮廓的圆形结构特征,更重要的是他具有目标级别的结构预测能力,特别是对于那些初始化时远离目标位于背景上的顶点来说,这种方法可以更为有效的预测出需要调整的偏移量。而标准的CNN则由于初始化顶点归属物体的不确定性,难以预测出较为准确的偏移量。

实例分割过程

首先基于目标检测(CenterNet)得到的bounding box,将每个边的中点提取出来构建出一个方块形的轮廓。而后第一次利用DeepSnake来计算这四个顶点需要的偏移量以获取图像中目标的极值点(最左,最上,最下,最右边点)。在实际计算中,研究人员将四个中点构成的方块型轮廓上采样为40个点,以便涵盖更为丰富的上下文信息。

在获得了四个极值点后也就得到了新的bounding box,随后在每个点依照bounding box的方向向两边生成1/4边长的线段,如果在生成过程中遇到bounding box的顶点就停止。依次连接这四个线段的八个端点就可以获得一个八边形轮廓。

此时通过在八边形轮廓上进行采样就可以得到包含N个点的目标初始轮廓(N=128),DeepSnake将这N个点构成的轮廓作为输入预测出需要调整的偏移量。然而一次性预测出准确的偏移量还存在一定的困难,研究人员将迭代地进行三次预测以不断提高预测精度。通过这种方式可以不断地提高目标边缘的预测精度并解决目标检测器带来的初始定位误差。

与SOTA结果比较

Post Directory