【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation

论文名称:《BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation》

论文链接:https://arxiv.org/abs/2001.00309

参考代码:暂无

写在前面

BlendMask是一阶段的密集实例分割方法,结合了Top-down和Bottom-up的方法的思路。它通过在anchor-free检测模型FCOS的基础上增加了Bottom Module提取low-level的细节特征,并在instance-level上预测一个attention;借鉴FCIS和YOLACT的融合方法,作者提出了Blender模块来更好地融合这两种特征。最终,BlendMask在COCO上的精度(41.3AP)与速度(BlendMask-RT 34.2mAP, 25FPS on 1080ti)都超越了Mask R-CNN。

这篇文章的创新点不能算突出,但是实验做的很充足,优化模型的思路也很值得借鉴,最后还专门对比了下Mask R-CNN,好评~

目录

写在前面

背景介绍

Top-down 方法

Bottom-up 方法 

混合方法

总体思路

Bottom Module

Top Layer

Blender

实验结果

参数设置

精度

速度

可视化效果

消融实验

1. 融合方法

2. 特征分辨率(R)

3. base数目(K)

4. 输入特征来源(P3+P5 or C3+C5)

5. 插值方法

对比 Mask R-CNN

参考

背景介绍

本文主要讨论的是密集实例分割( Dense instance segmentation),密集实例分割也同样有top-down和bottom-up两类方法。

Top-down 方法

自上而下的密集实例分割的开山鼻祖是DeepMask,它通过滑动窗口的方法,在每个空间区域上都预测一个mask proposal。这个方法存在以下三个缺点:

  • mask与特征的联系(局部一致性)丢失了,如DeepMask中使用全连接网络去提取mask

  • 特征的提取表示是冗余的, 如DeepMask对每个前景特征都会去提取一次mask

  • 下采样(使用步长大于1的卷积)导致的位置信息丢失

Bottom-up 方法 

自下而上的密集实例分割方法的一般套路是,通过生成per-pixel的embedding特征,再使用聚类和图论等后处理方法对其进行分组归类。这种方法虽然保持了更好的低层特征(细节信息和位置信息),但也存在以下缺点:

  • 对密集分割的质量要求很高,会导致非最优的分割

  • 泛化能力较差,无法应对类别多的复杂场景

  • 后处理方法繁琐

混合方法

本文想要结合 top-down和bottom-up两种思路,利用top-down方法生成的instance-level的高维信息(如bbox),对bottom-up方法生成的 per-pixel prediction进行融合。因此,本文基于FCOS提出简洁的算法网络BlendMask。融合的方法借鉴FCIS(裁剪)和YOLACT(权重加法)的思想,提出一种Blender模块,能够更好地融合包含instance-level的全局性信息和提供细节和位置信息的低层特征。

总体思路

BlendMask的整体架构如下图所示,包含一个detector module和BlendMask module。文中的detector module直接用的FCOS,BlendMask模块则由三部分组成:bottom module用来对底层特征进行处理,生成的score map称为Basetop layer串接在检测器的box head上,生成Base对应的top level attention;最后是blender来对Base和attention进行融合。

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第1张图片 BlendMask 网络结构

Bottom Module

这部分的结构类似FCIS和YOLACT,输入为 N \times K \times \frac{H}{s} \times \frac{W}{s} 的低层特征,由骨干网络或FPN输出。通过一系列的decode(上采样和卷积),生成score maps,称为Base(B)。文中使用的是DeeplabV3+的decoder,其他分割网络的decoder同样适用。

上式中的N为batch size,K为Base的数量,H和W是输入图像的大小,s则是Base的输出步长。

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第2张图片 Deeplab v3+ 网络结构
 

Top Layer

在检测金字塔的每一层后面都加了一层卷积,用来预测 top-level attentions (A)。这里与YOLACT相似,但有所区别:

  • 在YOLACT中,输出是N \times K \times H_{l} \times W,即N×K大小的mask系数,原文中称为mask cofficient;

  • 本文输出的A的维度是 N \times(K \cdot M \cdot M) \times H_{l} \times W_{l},这里M \times M为attention 的分辨率,即对应的base的每个像素点的权重值,包含的粒度更细。

由于top-level attention是三维的,因此可以学习到一些instance-level的信息,例如大致的形状和姿态。具体的实现为output channel为K \cdot M \cdot M的卷积。

Blender

Blender模块是文章的创新部分,该部分的混合过程具体解释如下:

  • 首先明确Blender模块的输入,分别为:

  1. detector tower 生成的bbox proposal(P),维度为(K×H'×W');此外,在训练的时候,直接使用GT bbox作为P,而在推理时,则使用检测器的检测结果。

  2. top layer 生成的top-level attention(A),维度为(K×M×M)

  3. bottom module 生成的base(B),是整图大小的k个mask,维度为(K×H×W)

  • 对B:使用Mask R-CNN中的RoIPooler(即sampling ratio 为1 的 RoIAlign,Mask R-CNN中为4),在 B 上crop出 P 对应的区域的mask,并resize到固定R×R大小的特征图 ,最后得到的 r_d 的维度为(K×R×R);

  • 对A:这一步其实是top layer中的后处理操作,放在这里来讲。作者根据FCOS中的后处理方法,选出前D个检测框和对应的A,并通过RoIAlign (sampling ratio=1) 和 reshape,将A的维度由(K*M*M, H‘, W')调整为(K×M×M),记为a

  • 对a:由于M一般小于R,做一个插值,将 A 从 M×M 插成 R×R 大小,得到的 a_d^{} 维度为(K×R×R)

  • 再在K维度上做softmax,得到一系列的scores map,s_d^{} 的维度同样为(K×R×R)

  • 融合:这时的 s_d^{} 和 r_d 都是 (K×R×R) 的大小,可以直接做element-wise product:把k个bbox大小的mask和对应的attention乘起来,再按通道叠加起来,得到最终的mask

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第3张图片 融合过程示例

 

实验结果

参数设置

BlendMask的超参数共有以下几个:

  • R,bottom-level RoI的分辨率,论文中的设置为56

  • M,top-level prediction(A)的分辨率,一般比R小得多,论文中的设置为7

  • K,base的数量,论文中的设置为4

  • bottom module的输入特征,来自骨干网络 (C3,C5)or FPN(P3, P5),论文中使用P3,P5

  • bottom bases的采样方法,最近邻池化 or 双线性池化,论文中采用 双线性池化

  • top-level attention的插值方法,最近邻插值法 or 双线性插值,论文中采用双线性插值

这些超参数在后面都会做消融实验,为了与其他模型做合理对比,在消融实验中使用的BlendMask设置如下:R_K_M分别为28, 4, 4;bottom module的输入特征采用来自骨干网络C3和C5;top-level attention使用的是最近邻插值法,与FCIS一致;Bottom level使用双线性池化,与RoIAlign一致。

精度

先来看总体的实验结果。在COCO数据集上,BlendMask的精度和速度超越了其他单阶段实例模型,并且也基本超越了Mask R-CNN(R-50, no aug情况下除外)。

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第4张图片 COCO-test 实验结果

速度

作者同时也设置了一个快速版的BlendMask-RT,用以对比速度。快速版的改动如下:

  • prediction head的卷积数量减为3

  • 使用YOLACT中的Proto-FPN作为bottom module,将box tower和classification tower合并为一个(这里存疑)

从结果来看,BlendMask-RT比YOLACT在单张1080Ti上快了7ms,高出3.3AP

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第5张图片

可视化效果

从可视化效果来看,BlendMask的效果明显好于Mask R-CNN,原因是BlendMask采用了更高的分辨率(56 vs 28);相比YOLACT,BlendMask使用到了多次的信息融合,因此对相邻的实例分割效果更好。具体原文中有很详细的分析

消融实验

从前面的分析可以看出,BlendMask其实是多个模型的优点的融合,因此作者也做了大量的消融实验,来证明所选取的BlendMask结构的优越性。

1. 融合方法

作者将blender改造成YOLACT和FCIS算法的融合方法进行实验,从实验结果可以看出,Blender的融合方法要更好。

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第6张图片

此外,通过可视化中间过程,作者发现 BlendMask 可以编码两种局部信息,一是semantic masks,判断像素是否属于一个物体;二是position-sensitive feaures,判断像素是否在物体的某个部位。

如下图,四个base分别提取出了对不同的位置敏感的特征,这些特征可以帮助更好地分开相邻的实例,这也是比YOLACT更有效率的地方;而semantic masks可以让预测结果更加精细与顺滑。因此,BlendMask可以用更少的base学到更丰富的特征表示的原因。

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第7张图片 标题

 

2. 特征分辨率(R)

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第8张图片

3. base数目(K)

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第9张图片

4. 输入特征来源(P3+P5 or C3+C5)

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第10张图片

5. 插值方法

【实例分割论文】BlendMask: Top-Down Meets Bottom-Up for Instance Segmentation_第11张图片

对比 Mask R-CNN

熟悉Mask R-CNN的读者会发现,BlendMask其实与Mask R-CNN的结构思路很类似。如果将BlendMask的检测器部分从FCOS换成Faster R-CNN后,相似点就更明显了:

  • 都使用了bbox形状的RoI提取实例,即用RoIPooler来定位实例并提取实例的特征
  • 都有一个语义分割分支(FCN),对FPN或backbone提取的特征预测mask

这也是本文创新点不突出的原因,BlendMask的整体结构其实就是在Mask R-CNN的box head后面加了一层卷积预测attention,再对mask head 生成的mask用attention进行blend。blend这块其实就是FCIS和YOLACT的创新点。

因此,作者也在文末详细分析了一下两者的区别和BlendMask 的优势:

  • 计算量小:使用一阶段检测器FCOS,相比Mask R-CNN使用的RPN,省下了对positon-sensitive feature map及mask feature的计算,
  • 还是计算量小:提出attention guided blender模块来计算全局特征(global map representation),相比FCN和FCIS中使用的较复杂的hard  alignment在相同分辨率的条件下,减少了十倍的计算量;
  • mask质量更高:BlendMask属于密集像素预测的方法,输出的分辨率不会受到 top-level 采样的限制。在Mask R-CNN中,如果要得到更准确的mask特征,就必须增加RoIPooler的分辨率,这样变回成倍增加head的计算时间和head的网络深度;
  • 推理时间稳定:Mask R-CNN的推理时间随着检测的bbox数量增多而增多,BlendMask的推理速度更快且增加的时间可以忽略不计
  • Flexible:可以加到其他检测算法里面

参考

论文速递 | 实例分割算法BlendMask,实时又state-of-the-art

BlendMask:Top-Down Meets Bottom-Up for InstanceSeg

你可能感兴趣的:(计算机视觉,论文阅读,实例分割)