论文学习笔记-PointRend

『写在前面』

受计算机图形学中渲染操作的启发,提出PointRend模块用来改善各类分割模型得到目标边缘的精细程度。

文章标题:《PointRend: Image Segmentation as Rendering》

作者机构:Alexander Kirillov等, FAIR.

原文链接:https://arxiv.org/abs/1912.08193v1


目录

摘要

1 介绍

2 相关工作

3 方法

3.1 Inference和Training中的点选择方法

推理阶段

训练阶段

3.2 点级特征表示和Point Head子网络

细粒度特征

粗预测特征

Point Head

4 实验结果


摘要

本文提出PointRend模块,基于像素点进行渲染,以得到更加明确的目标分割边界,该模块基于迭代细分算法自适应选择的位置上执行基于点的分割预测。 

PointRend的有效性使得其可以输出很大的分辨率,这在现有其他现有模型上是很难实现的,因为内存和计算的开销过于庞大。

论文学习笔记-PointRend

1 介绍

  • PointRend使用细分策略在需要计算标签的区域选择一组非均匀的采样点,而后为其预测类别。、
  • PointRend是一个通用模块,可以有多种形式的实现。它接受一个或多个典型的CNN feature map,然后输出高分辨率预测。
  • PointRend不会对输出网格上的所有点进行过多预测,而只会对精心选择的点(不确定性较强的点)进行预测。
  • PointRend通过插值操作来提取选中点的点级特征,并使用一个小的point head子网络根据逐点特征来预测输出feature map。

2 相关工作

在现有的语义分割/实例分割模型中,模型一般会输出一个原图1/8或1/16大小的预测图,而后通过双线性插值来补齐最后的8x/16x分辨率,尽管还有膨胀卷积等来替换上采样层以获得更高的精度, 但其需要的内存和计算量往往较大。

3 方法

主旨思想:将CV中的图像分割问题建模成计算机图形学中的图像渲染问题。

PointRend模块主要由三部分组成:

  1. 点选择策略:选择少量点进行计算,避免对高分辨率输出网格上的所有点进行计算;
  2. 提取每个选中点的点级特征:实值点的特征通过在feature map上使用双线性插值得到,这有助于利用潜藏在通道维度里的子像素信息;
  3. point head子网络:一个经过训练的小神经网络,可以针对每个点独立地从该点状特征预测标签。

PointRend模块适用于实例分割模型和语义分割模型中:在实例分割模型里,可以将PointRend模块用在每一个instance的区域上;在语义分割模型里,可以将整个图像视作一个区域。

3.1 Inference和Training中的点选择方法

核心思想是在图像平面上灵活、自适应地选择点来预测分割标签。直观上来说,这些点应该更密集地位于高频区域(例如对象边界)附近。

推理阶段

受计算机图形学中自适应细分技术的启发,该方法通过仅在极有可能该值与相邻值显著不同的位置进行计算来渲染高分辨率图像。相比之下,其他位置的输出值可以通过从粗网格进行插值得到。

对于每一个区域,PointRend对其进行迭代渲染(如下图所示),每次迭代中,PointRend选择N个最不确定的点,然后为这N个点计算点级特征,并预测相应的标签。重复该过程,直到将分割结果上采样的所需要的分辨率为止。

论文学习笔记-PointRend

考虑从分辨率大小论文学习笔记-PointRend开始,上采样到分辨率论文学习笔记-PointRend,PointRend需进行不超过论文学习笔记-PointRend次点级预测,这是远小于论文学习笔记-PointRend的。而且,在实际情况中,如果论文学习笔记-PointRend较大,论文学习笔记-PointRend较小,在一开始时整个输入图像可能都没有论文学习笔记-PointRend个点可采,所以实际中真正需要进行点级预测的次数还会论文学习笔记-PointRend.

训练阶段

在训练阶段,PointRend需要选择使用哪些点来计算点级特征去构建point head。而计算及图形学中的细分策略对反向传播不友好,最终作者选择在PointRend训练中使用的是随机采样(非迭代策略)。

PointRend通过三个原理将选择偏向不确定区域,同时还保留一定程度的均匀覆盖性:

  1. 过度生成,训练的时候选kN个点,k>1;
  2. 重要性抽样,对所有kN个点进行插值并估计其不确定性,从中选出βN个最不确定的点,论文学习笔记-PointRend
  3. 覆盖抽样,剩余的(1-β)个点从均匀分布中采。

下图展示了集中不同的采样方法,实验结果表明,c)中等程度的偏向采样方法效果最佳,可以使得整个模型训练更加高效。

论文学习笔记-PointRend

在训练阶段,进行预测和计算损失时,仅在N个采样点上计算,这使得反向传播更简单、有效。这种设计思路类似Faster R-CNN 中RPN+Fast R-CNN并行训练的思想,但在推理时是顺序的。

3.2 点级特征表示和Point Head子网络

PointRend通过组合细粒度特征和粗预测特征来在选定点集上构建逐点特征。

细粒度特征

为使PointRend具有渲染分割细节的能力,在CNN得到的feature map上,对每个采样点的特征向量进行抽取。具体而言,细粒度特征从feature map通过双线性插值得到,而feature map可以来源于CNN层输出或FPN的输出等。

粗预测特征

细粒度特征虽然能够解析细节,但在两方面有缺陷:

(1)不包含特定于区域的信息,比如两个重叠的实例中的一点具有相同的细粒度特征,故该点只会被预测到其中一个实例中。

(2)受通过哪张feature map提取细粒度特征的影响,提取到的细粒度特征可能只包含low level的特征,相比之下具有更多上下文和语义信息的feature map会更有价值。

基于上述讨论,第二种特征是从网络中抽取一个粗的分割预测,比如对每个点,预测一个k维的向量用来对应表示k个类别各自的概率。这种粗预测特征,类似现有的语义分割结构,同样使用与现有模型相同的监督方式进行监督。比如对实例分割,粗预测特征可以使用Mask R-CNN输出的轻量级7*7 mask head。再比如对于语义分割,它可以是预测一个原图下采样16倍的feature map.

Point Head

基于提取到的选中点集中各点的点级特征,通过MLP来作预测,类似GCN、PointNet中的做法,该MLP在所有点上共享权值。因为MLP预测的是各点的分割label,所以可以沿用语义分割任务中的loss来训练。

4 实验结果

测试PointRend对实例分割模型效果,试验主要基于Mask R-CNN来进行。

将Mask R-CNN中的mask head改为PointRend,精度提升和参数量变化如下表所示。

论文学习笔记-PointRend

虽然乍一看AP提升并不明显,但因为IoU计算受目标本身大小的影响更大,而PointRend旨在改善目标边界的预测效果。所以,要直观的去看效果。

论文学习笔记-PointRend

从上表可以看出,同样输出224*224大小,使用PointRend比使用4xconv节省超过30倍的计算量。

论文学习笔记-PointRend

PointRend的一个好处就是可以根据实际情况调整迭代次数,从上图可以看到,迭代次数越多,边缘处分割效果越精细。