摘要
提出了circular convolution, 相比图卷积,可以更好的学习轮廓的cycle-graph结构。是个二阶实例分割,分为initial contour proposal和contour deformation两步,可以处理检测误差。1080Ti上,512x512输入的速度为32.3fps。
好奇图像中的实例数对速度没影响么?而且这篇文章提出来的圆环卷积,采用特征选取的方式,导致没法用推理引擎进行加速,也就无法部署到端上。
Learning-based snake algorithm
三个部分:backbone + fusion block + prediction head。
backbone部分由8个“CirConv-Bn-ReLU"组成。
Deep snake for instance segmentation
initial contour proposal
取检测框四条边的中心点,得到diamond contour;deep snake用这个“钻石轮廓”做为输入,输出四个偏置,得到extreme points, 分别是物体的最左/右/上/下四个点。以每个extreme point为中心点,外扩1/4边长,遇到框的边缘既停止,然后两两相连,得到Octagon Contour。也就是contour deformation部分的初始输入轮廓。
contour deformation
从最top的extreme point x 1 e x x_1^{ex} x1ex开始,在初始轮廓上,均匀取N(N=128)个点。训练时的真值轮廓也是如此,在轮廓上均匀采样N个点,最接近 x 1 e x x_1^{ex} x1ex的点作为起始点。直接一次性回归初全部点的偏置是极具挑战的,尤其是对远离物体的点。所以deep snake采用迭代deformation的方式,降低问题难度。最大迭代3次。每次迭代输出N个点的offset,不断接近真实轮廓位置。
Multi-component detection
有些物体因为遮挡被分成了多段。但它这里提出来的分别检测再归并mask的解决方案有点扯淡呢。
Training strategy
4个极点用l1损失监督。
L
e
x
=
1
4
∑
i
=
1
4
l
1
(
x
^
i
e
x
−
x
i
e
x
)
L_{ex} = \frac{1}{4}\sum_{i=1}^{4}l_1(\hat{x}_i^{ex} - x_i^{ex})
Lex=41i=1∑4l1(x^iex−xiex)
N个轮廓点也用l1损失监督。
L
i
t
e
r
=
1
N
∑
i
=
1
N
l
1
(
x
^
i
−
x
i
g
t
)
L_{iter} = \frac{1}{N}\sum_{i=1}^{N}l_1(\hat{x}_i - x_i^{gt})
Liter=N1i=1∑Nl1(x^i−xigt)
检测器用的是CenterNet。