实时实例分割力作! Deep Snake-CVPR2020

DeepSnake—浙大提出实例分割新方法, 准确高速获取物体边缘轮廓

DeepSnake 的基本思想

DeepSnake的主要功能是通过深度学习给出输入初始轮廓顶点需要调整的偏移量,以得到更为准确的实例分割结果。在对基于轮廓的实例分割方法研究过程中,发现物体的轮廓其实是一个圆形的图结构,其中每个顶点都有两条边连接相邻的顶点,这意味着可以利用一维卷积来对顶点特征进行学习。由于闭合的轮廓可以视为周期性结构,于是研究人员引入了圆卷积来处理。与通常的图卷积方法不同,圆卷积核不仅可以编码每个顶点的特征还能编码临近顶点间的关系,具有更强的表达能力。

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

在得到每个点的特征矢量后,DeepSnake便利用圆卷积进行特征学习,下图显示了圆卷积的基本过程。

                                                              

在给定初始轮廓的前提下算法抽取每个顶点的图像特征,由于轮廓可视为一个圆形图结构,可以使用圆卷积来获取轮廓特征。上图中的蓝色、黄色和绿色节点分别表示了输入特征、卷积核以及输出特征。最终回归出每个顶点处的偏移量从而调整轮廓逼近目标的边界。

 

蓝色顶点通过黄色卷积核的作用得到了绿色的特征输出,输出特征与输入顶点特征的长度相同。在实验中圆卷积的核大小被设置为9.

轮廓上的特征可以被视为一维离散信号并可利用标准卷积进行处理。为了避免破坏轮廓的拓扑结构,研究人员将轮廓上的特征视为周期性信号:

                                                

 

并提出了下面的圆卷积方法来学习特征,其中的k为圆核函数:

                                                      

 

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

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

                                    

上图显示了DeepSnake的基本网络架构,其中包含了三个重要的部分。第一部分为主干部分,包含了8个圆卷积层和相应的残差连接;第二部分为融合部分,融合了多尺度的轮廓信息,随后与主干信息叠加送入到最后的预测部分;第三部分预测模块由1x1卷积构成,用于预测逐顶点需要调整的偏移量。

完整的实例分割流程

在拥有了可以调整顶点位置,预测偏移量的DeepSnake算法后就可以构建出完整的实例分割框架了。下图展示了从输入图像、轮廓初始化到最终预测偏移量和计算轮廓结果的过程。

                           

 

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

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

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

实验结果

研究人员最终在Cityscape、Kins和Sdb上进行了实验,并对初始网络结果、初始化轮廓方法和圆卷积进行了消融性分析。下表显示了三个部分对于最终结果的贡献情况。网络架构中的全局融合模块带来了1.4AP的提升;其中通过极值点的方法初始化轮廓不仅解决了目标检测误差,同时也有效处理了过于靠近的物体,带来了1.3的AP提升;

而后圆卷积的引入相比于图卷积提升了0.8AP,并且在迭代中两个迭代就超过了图卷积三个迭代0.6AP,显示了圆卷积强大的形变适应能力。下图中也显示了圆卷积对于物体边界的变形适应能力。

 

 

与各种先进的算法相比,基于DeepSnake的分割算法显示出了良好的性能优势:

                                 

在复杂的Cityscape、Kins和Sdb数据集上都得到了十分优秀的实例分割结果:

总结

论文借鉴了snake算法,将snake算法做成了轮廓结构化特征学习的方法。DeepSnake是基于轮廓的两阶段实例分割的方法,是接在目标检测后面的方法。通过目标检测的定位来初始化建议轮廓,然后对建议轮廓进行变形,是其对目标更加贴合。论文使用了循环卷积取得了比通用的图卷积能更好的挖掘轮廓的周期图结构。

DeepSnake可以加在目标检测后面来完成实例分割的,论文中加在了CenterNet的后面构成了新的实例分割模型。该模型可以实时的进行实例分割, 能达到32.3 fps对于512 × 512的图像在 GTX 1080ti GPU上,而且在Cityscapes、Kins和Sbd数据集上表现SOTA。

该模型能够达到上述效果的两个原因是:

1.该方法能够处理目标检测模型定位错误的问题所以只需要结合一个轻量级的目标检测模型即可。

2.基于contour的分割比基于pixel-based的分割具有更少的参数,而且没有Decoder过程。

为了增加算法的鲁棒性,DeepSnake算法把传统的对于contour坐标来手工定义能量的snake算法改为了Data-driven manner的算法即基于学习的方法。

DeepSnake根据来自主干网络的图像特征获取轮廓作为输入,并预测对象边界的每个顶点的偏移量。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值