原文链接:https://www.techbeat.net/article-info?id=3828
作者:Xy
本文分享 GAP-Lab 团队在 CVPR 2022 的工作。
论文链接:https://arxiv.org/abs/2203.13312
项目主页:https://xyzhang17.github.io/SharpContour/
一、实例分割边缘细化
目前实例分割任务的挑战在于如何提高物体边缘附近区域的分割质量。实例分割模型按照分割结果表达方式来区分可以分为基于掩膜生成和轮廓变形两类。针对该任务目前存在的挑战,许多基于掩膜生成的边缘细化方法被提出。
尽管这些方法实现了较高的优化效果,但是这些方法存在以下的问题:
- 一些方法在提升物体边缘分割质量的时候忽略了效率并引入很多额外的计算成本,如 Boundary Patch Refinement[5];
- 另一些方法考虑了效率但仅能用来优化基于掩膜生成的实例分割模型因而忽略了通用性,如 RefineMask[6];
理想的边缘细化方法应该同时满足 3 个要求:准确,高效,通用性强。
基于轮廓变形的实例分割方法具有效率高和通用性强的优点(基于掩膜成的实例分割模型得到分割掩膜可以很容易的抽出轮廓并使用基于轮廓变形的方法继续优化)。但是这类方法具有倾向于生成过于光滑的轮廓的缺点,这个现象在存在尖角的区域会非常明显。我们发现 2 个原因导致了这个现象:
- 现有的基于轮廓变形的模型在预测某个顶点变形量的时候会考虑相邻顶点的影响,抑制了拟合尖角区域的能力;
- 现有的基于轮廓变形的模型在训练的时候会添加正则项来在实现最小化变形量预测错误的同时保持一定光滑性,但这种做法会使某一顶点的影响连锁传递到轮廓上所有顶点,因此抑制了拟合尖角区域的能力。
因此为了得到一种精确,高效,通用性强的实例分割边缘细化方法,我们提出了 SharpContour。由于采用了基于轮廓变形的设计并尽量避免了两个上述提到的导致这类方法生成过于光滑轮廓的问题,SharpContour 同时满足了对于实例分割边缘细化方法的三个要求。
SharpContour 通过提出一个离散的基于分类任务计算顶点变形量而非直接回归每个顶点的变形量的轮廓变形方法来解决轮廓变形类方法生成过于光滑的轮廓的问题。具体来说:
- SharpContour 首先提出了一个实例相关的点分类器 IPC(instance-aware point classifier)来预测任意像素与目标实例轮廓的内外相对关系:IPC同时使用与被预测点位置相关的细粒特征和包含目标实例特征信息的动态参数来预测这种内外相对关系因而即使在实现困难场景中(如两个实例互相遮挡的情况)也可以实现高精度预测;同时 IPC 结构简单并只额外引入非常少的参数因而保证了高效率;
- SharpContour 依赖所提出的 IPC提出了一种新的离散的基于分类任务的顶点变形量预测方法并采用了迭代变形的方式:这种变形量预测方法可以独立的预测每个顶点的变形量因而避免了顶点间的相互影响;这种变形量预测方法基于实例尺寸以及顶点当前位置与实例轮廓的相对关系控制变形量大小同时采用迭代变形的方式以保证高精度;
- SharpContour可以用来改善基于掩膜生成和轮廓变形两类实例分割模型的边缘质量因此保证了高通用性。下图展示了使用 SharpContour 优化两类分割模型分割结果的边缘质量:上面行:A 是 Mask R-CNN[1](基于掩膜生成的分割模型)的分割结果,B 是 SharpContour 优化后的结果;下面行 :C 是 DANCE[2]( 基 于 轮 廓 变 形 的 分 割 模 型 ) 的分割 结 果 ,D 是SharpContour 优化后的结果。
SharpContour 使用 AP 和 Boundary AP[4] 两个评估指标在两个 benchmark(COCO 和 CityScapes)验证了有效性,详细结果见后边的实验分析。
二、轮廓变形
上图展示了SharpContour的轮廓变形过程。当SharpContour从现有分个模型的分割结果中获得初始轮廓后,将使用提出的基于分类任务轮廓变形的方式完成边缘细化。该轮廓变形方法主要有以下几个步骤:
- 获取轮廓上各顶点的法线方向(Normal Direction);
- 使用 IPC (记为 φ \varphi φ )判断各顶点相对于目标实例轮廓的内/外状态进而决定沿着正/负法线的变形方向 d i \mathbf{d}_{\mathbf{i}} di (Moving Direction) ;
- 确定变形方向上采样点的步长 s i s_{i} sis (Moving Step);
- 确定变形的步数 m m m (Step Number),步数或者是预先定义的单次变形最 大步数或者是到达 flipping point的步数,flipping point 是指某一顶点 在其变形方向上内/外状态第一次发生变化的点;
- 计算顶点变形长度(Estimating Offsets)并完成变形;
根据上述流程,对于一个顶点 x i \mathbf{x}_{\mathrm{i}} xi ,其变形后的位置 x i ′ \mathbf{x}_{\mathrm{i}}' xi′ 可以表示为:
x i = x i + m s i d i \mathbf{x}_{\mathbf{i}}=\mathbf{x}_{\mathbf{i}}+m s_{i} \mathbf{d}_{\mathbf{i}} xi=xi+ms