【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation

浙江大学 CVPR 2020 oral

paper

code


从论文题目就可以看出论文要做的事情:实时的实例分割。方法,就是利用snake algorithm,但是这里结合深度学习,进而表述为Deep snake

overview


本文使用基于轮廓(contour-based)的deep snake方法,其中,论文提出自己的做法(Innovationcirclular convolution来更好取捕捉contour信息。将整个方法步骤分为2个阶段: initial contour proposalcontour deformation

最终论文的结果:可以在Cityscapes, Kins and Sbdatasets上获得了最好的成绩,且real-time(32.3fps, 512x512 images on 1080Ti GPU)。

Related work


现在有许多的pixel-wise分割方法,同样也有另一种形状表达:object contour

  • 轮廓表达:这个方法用在实例分割上也有很长一段历史了,可追溯到1988年Kass的论文Snakes整体思想:给定一个初始的轮廓,之后利用snakes algorithm来迭代的调整轮廓到物体的边界,这个迭代优化的过程就是不断优化一个energy functional,能量函数指的是轮廓能量图能量的总和(一般只能达到局部最优)
  • 近来也有利用contour去表达目标的实时分割方法,但是效果同pixel-wise仍有和的那差距。
  • CVPR2019的一篇论文Fast interactive object annotation with curve-gcn,论文也使用了Snake algorithm向object boundary调整初始contour(将contour视为graph,并且使用graph convolutional network去预测offset)。做到的结果就已经很好了,且很快。所以本文算是对Snakes: Active contour modelsFast ineractive object annotation with curve-gcn的上层工作啦。大致步骤如下:

【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation

Detail


  • Learning-based snake algorithm

    • 对于Deep snake,给定contour作为输入,contour的表达则用N个顶点(vertices){Xii=0,1,2,...N}{\{X_i|i=0,1,2,...N\}},对每个顶点,构建一个feature vectors{fii=0,1,2,...N}{\{f_i|i=0,1,2,...N\}}fif_i是CNN产生的feature maps(需要通过插值来精确vertex coordinate处的feature map值)和vertex coordinate的concat。
      【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
    • 对于circular conv,是可以直接使用一维标准卷积实现的。但是,这样的话需要将contour作为一个一维序列信号,当作一位序列信号的话会打破原来contour的拓扑结构,故将contour视作一个周期信号,定义如下(略懵。。。)
      【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
    • network architecture
      就是在detector的基础上后续加上deep snake的处理
      【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
  • Deep snake for instance segmentation
    整个流程:

    • Detector去做检测,得到box
    • 然后通过box取每个边的中点然后连线得到Diamond contour
    • Deformation:Deep snake来对四个点进行offset预测,目标是物体四周的极值点(object extreme point)
    • 以极值点为中心,向极值点所在的边线的两个方向均匀延申,最后为原边长的14\frac{1}{4}, 然后连线,作为deep snake的输入contour
    • deep snake迭代调整contour
      【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation

Contour Deformation:N=128,在Contour上均匀采样N个,序列开始于顶点极值点,GT也是均匀在物体边界采样N个,

  • Implementation details
    • loss
      LexL_{ex}是极值点的offset预测loss,使用L1 loss
      LiterL_{iter}是N个采样点的loss
      【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
    • Detector
      使用CenterNet作为Detector
    • Datasets
      • Kins :该数据集用于无模式实例分割,这是实例分割的一种变体,旨在即使在遮挡下也能恢复完整的实例形状。 Kins由7,474个训练图像和7,517个测试图像组成。
      • Sbd:使用实例级边界重新注释Pascal Voc数据集中的11355个图像,并具有相同的20个对象类别。 论文说之所以不直接在Pascal Voc上进行实验,是因为其批注包含漏洞,这不适用于基于轮廓的方法。 Sbd数据集可分裂为5,623个训练图像和5,732个测试图像。

Result


Sbd数据集上,以下是对比网络的不同配置

  • Baseline:Curve-gcn和CenterNet结合
  • Architecture;graph convolution
  • Circular convolution:使用circular conv代替graph conv

【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
Sbd数据集上,对比graph conv 和 circular conv
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
Cityscapes数据集上跟其他方法的对比
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
Kins数据集上的测试
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
sbd val
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation
速度
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation

相关文章: