目前主流的实例分割方法通常基于网格掩码的表示方法,例如Mask R-CNN、TensorMask等等。轮廓是另一种物体分割的表示方法,30年前曾风靡一时的SNAKE就是基于轮廓表示的一种方法,但在深度学习时代,其精度一直比不上基于网格掩码的方法。微软亚洲研究院联合北大,港中文,上海交大和多伦多大学的研究员们提出了一种全新的利用稠密代表点集(Dense RepPoints)的方法来表示物体,这种新的表示方式具有高度灵活的表达能力,网格与物体轮廓均是其特例。Dense RepPoints还可以用来实现一种结合网格掩码和轮廓两者优点的边缘掩码新表示方法,其基于ResNet-50的backbone在COCO实例分割上取得了39.0 mAP的表现,超越了同期的SOLO,PolarMask,Deep Snake和其后的CondInst。该方法还具有以下优点:
1)Dense RepPoints也可以与PolarMask等方法一样直接表达物体轮廓。但是与PolarMask需要显示地基于手工设计的固定规则来定义每个轮廓点不同,Dense RepPoint直接利用点集间的匹配来学习轮廓,方法更简单也更灵活。
2) 和PointRend一样,Dense RepPoint可以将主要计算放在更重要的物体边缘附近,从而在同样的计算复杂度下,取得更好的分割精度。
3)和此前物体检测和分割采用不同表示不同Dense RepPoints可以同时表示物体不同粒度的几何结构,从而同时提升物体检测和分割的效果。
目前,Dense RepPoints已被ECCV2020所接收,并且相关代码已经开源。
Arxiv: https://arxiv.org/abs/1912.11473
Github: https://github.com/justimyhxu/Dense-RepPoints
RepPoints是一种针对物体检测的表示方法,基于这一表示构建的anchor-free检测器在COCO上取得了很好的性能,但是由于RepPoints只有9个点,且只包含点的位置信息,其无法表示物体更精细的结构,从而难以应用于实例分割任务。去年机器之心曾对这一工作进行了介绍:
https://www.jiqizhixin.com/articles/2019-04-30-7
Dense RepPoints是RepPoints的一个重要拓展,相比于RepPoints,其用更多的点(例如225个)来表示物体,并增加了每个点的属性信息:
Dense RepPoints的通用表示能力
前述重要拓展使得Dense RepPoints不仅仅能刻画物体的物体的几何定位并进行更细粒度的的特征提取,同样能表示更精细的物体结构,例如物体轮廓、网格、边缘等等。具体来说,对于轮廓,DenseRepPoints可以通过boundarysampling来采样轮廓的点得到对轮廓的离散表达;而对于传统的网格掩模,可以利用Gridsampling来用DenseRepPoints模拟网格分布。
如下图所示:
边缘掩码表示:结合轮廓和网格掩码的优点
前述基于轮廓的方法对物体的表达更紧凑(需要更少的信息),且由于更关注对物体边缘的分割,有望得到更精确的边缘。而基于网格掩码的方法通过对网格点做前背景分类的方式来实现物体的分割,更易于学习。基于这两种表达的优点,作者提出了结合轮廓和网格掩码两种表示优点的新表示方法:边缘掩码表示,如上图最右所示。和轮廓表示类似,这一种新表示将点集主要放在物体边缘附近,从而可以更精细地表示物体边缘,另一方面,和网格掩码表示类似,这一方法也采用了代表点前背景分类的方法来实现物体分割,从而更利于学习。注意到这和同期的PointRend将主要计算放在边缘部分的思想很类似,在不提升计算复杂度的情况下得到更高分辨率的输出,从而提升分割的精度。
基于Chamfer Loss的点集监督方法
为了实现上述新的物体表示方法,一个关键问题是如何通过学习让预测的点集位于物体边缘附近。作者提出了一种基Chamfer Loss的点集监督方法,对于每个ground truth的实例mask,我们根据与物体轮廓的距离生成一个和预测点集相同数目的ground-truth点集,越靠近物体边缘的点的采样密度越高,而越远离物体边缘的点的采样密度越低。由于很难精确为每个预测点赋予固定的几何意义,作者提出了利用Chamfer Loss来定义ground-truth点集和预测点集之间整体的差异:
这一种监督方法不需要ground-truth点集和预测点集之间的一一对应关系,从而具有更强的普适性。下图显示了利用该监督方法学到的预测点集的分布,可以看到预测点集很好地学到了物体的边缘附近。
从点集到连续域分割:Delaunay三角化插值
尽管通过的Dense Reppoints可以学习到一组表达物体分割的点集,但由于其本身是稀疏并且是非网格化的,因此需要额外的步骤将得到的点集转化为连续的二进制掩码。为此作者们提出了两种后处理方法Concave Hull 和Triangulation得到最终的分割结果:
Concave Hull: 轮廓采样使用这种后处理方法。首先使用一个阈值对预测点的前景分数进行二值化,然后计算其ConcaveHull得到二值掩模。
Triangulation: 在学习到的点集上应用Delaunay三角剖分将空间分割成三角形,然后由于空间中的每个像素将落入一个三角形内,可以通过三角形中质心坐标进行线性插值获得每个点的分数。最后,利用阈值对插值的分数图进行二值化,得到二值掩模。
与点数无关的高效实现
作者们发现,更多数目的点能提升实例分割的精度,但是整个框架的计算复杂度也迅速增加。为此,该文提出了一种高效的实现方法,其复杂度几乎与点的数目无关。具体来说,针对分类分支,作者发现选用固定数目的group(默认group数目=9)特征,能取得和利用所有点相同的准确度,从而使得这一分支的复杂度不随点数增加(下图左)。针对回归分支,作者发现每个点的refine只需要当前点的特征即可,从而使得其复杂度也和点的数目无关(下图右)。
基于Dense RepPoints的anchor-free实例分割框架
基于Dense RepPoints 的检测和分割的框架如下图所示,除了在物体表示上的创新外,也注意到这一框架是anchor-free的。
主要实验结果
1) Dense RepPoints的高效实现
2)物体的不同表示和点的数目的比较
3)COCO实例分割结果
实例分割的结果上Dense RepPoints在ResNet-101的backbone下比其他的方法都要好,进一步更换ResneXt-101的backbone,Dense RepPoints能达到41.8mAP。
4)COCO物体检测结果
以ResNet-101为backbone,Dense RepPoints在1x设置下可达到42.1 mAP,分别比RepPoints 和Mask R-CNN分别高1.1 mAP和3.9 mAP。 通过使用ResNeXt-101-DCN作为更强的backbone,Dense RepPoints达到了48.9 mAP,超过了所有其他anchor-free的SOTA方法。
此外,在RepPoints V2中,实例分割的性能进一步得到提升,在ResNet-50上取得了最高的实例分割性能39.0 mAP,代码见:https://github.com/Scalsol/RepPointsV2