作者:Alexander Kirillov Yuxin Wu Kaiming He Ross Girshick
机构:Facebook AI Research (FAIR)
1.Introduction
用于图像分割的CNN通常是在规则的网格上进行操作:输入是像素的网格,隐藏特征的特征向量的网格,输出是标签的网格。CNN其实是对图像上的所有点进行了均匀采样,然后完成pixel2pixel的分类。但是,图像在某些区域是平滑的,平滑区域的像素和其邻近区域的像素的标签经常是相同的,从这个角度来看,均匀采样其实是对平滑区域进行了过度采样,而对于图像的边界区域则属于欠采样。结果就会导致分割的结果会在边界区域较为模糊。如下图:
如果,我们希望预测分割图的边界区域更加准确,我们就不应该使用均匀采样,而应该更加倾向于图像边界区域。这种类似的采样问题在计算机图形学中已经被研究了几十年了,图像渲染,将一个模型(比如,3D网格)映射为一个rasterized image(即一个像素的规则网格),虽然输出是规则的,但是计算的时候却不是根据网格上均匀采样来计算。常见的策略就是在图像平面内自适应地采样一些点产生不规则的子集,再来进行计算。
这篇文章的中心思想就是将图像分割问题视作图像渲染问题,使用来自于计算机图像学中的经典思想设计到神经网络中,渲染出更高质量的分割图。这个设计的module就叫做PointRend。
2.Related Work
Non-uniform grid representations:
Efficient Segmentation: Learning Downsampling Near Semantic Boundaries(iccv2019),通过神经网络学习自适应的下采样采样点,作用在原图上进行采样。
3.Method
PointRend Module
输入:1个或多个CNN输出的特征图,typically 4* to 16* coarser than the image grid
输出:K个标签的预测图
3.1 point selection strategy
选择少量的点进行预测,避免对高分辨率的输出网格上所有像素计算,产生较大计算量
Point Selection for Inference
以coarse-to-fine的方式不断迭代渲染point-head预测的mask,每轮迭代,PointRend通过双线性插值将上一轮输出的预测分割图上采样,然后选择N个不确定性最高的点(那些二分类预测概率值最接近0.5的点),PointRend会计算这N个点的feature representation,在输入Point head预测标签,该过程一直重复直到预测分割图达到期望的分辨率。
假设期望得到的输出分辨率为M*M,开始输入的分辨率为M0*M0,PointRend要求取不超过个点进行预测。
Point Selection for Training
在训练时无法进行迭代式的渲染,使用基于随机采样的非迭代式策略:
目标:从feature map上选取N个点,这N个点要倾向于不确定性高的区域(边界区域),同时又要一定程度的均匀覆盖。
遵循3个原则:
- Over generation:从均匀分布中随机选取kN个候选点(K>1)
- Importance sampling:然后通过插值计算出kN个点对任务的不确定性估计,从中选取不确定性最高的个点
- Coverage:剩下的个就从剩下的候选点中采样
3.2 point-wise feature representation
PointRend的输入:两种feature map
Fine-grained features:
包含更多细节信息
Coarse prediction features:
提供全局上下文信息
对每一个选择的点,提取point-wise feature representation,通过对f上该点4个最近领域点进行差值(双线性插值)计算该点的point-wise feature representation
3.3 point head
将point-wise feature representation输入到一个小型神经网络中训练预测标签。
PointRend makes point-wise segmentation predictions using a simple multi-layer perceptron (MLP). This MLP shares weights across all points
4.Experiments
Sematic Segmentation
数据集:CityScapes
baseline:Deeplab v3
定量:
定性:
baseline:sematicFPN