【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation

【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第1张图片

浙江大学 CVPR 2020 oral

paper

code

文章目录

      • overview
      • Related work
      • Detail
      • Result


从论文题目就可以看出论文要做的事情:实时的实例分割。方法,就是利用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 models、Fast ineractive object annotation with curve-gcn的上层工作啦。大致步骤如下:

【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第2张图片

Detail


  • Learning-based snake algorithm

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

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

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

  • Implementation details
    • loss
      L e x L_{ex} Lex是极值点的offset预测loss,使用L1 loss
      L i t e r L_{iter} Liter是N个采样点的loss
      【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第7张图片
    • 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_第8张图片
Sbd数据集上,对比graph conv 和 circular conv
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第9张图片【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第10张图片
Cityscapes数据集上跟其他方法的对比
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第11张图片
Kins数据集上的测试
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第12张图片
sbd val
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第13张图片
速度
【Deep Snake】DeepSnakeforReal-TimeInstanceSegmentation_第14张图片

你可能感兴趣的:(论文阅读)