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

目录

写在前面

背景介绍

Top-down 方法

Bottom-up 方法 

混合方法

总体思路

Bottom Module

Top Layer

Blender

实验结果

参数设置

精度

速度

可视化效果

消融实验

1. 融合方法

2. 特征分辨率(R)

3. base数目(K)

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

5. 插值方法

参考


论文名称:《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。这篇文章的创新点不能算突出,但是实验做的很充足,优化模型的思路也很值得借鉴,好评~

背景介绍

本文主要讨论的是密集实例分割( 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 网络结构

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的输出步长。

Deeplab v3+ 网络结构
 

Top Layer

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

  • 在YOLACT中,输出是N \times K \times H_{l} \times W,即base的每个channel的权重值,原文中称为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的超参数共有以下几个:

  • 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情况下除外)。

COCO-test 实验结果

速度

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

  • prediction head的卷积数量减为3

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

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

可视化效果

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

消融实验

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

1. 融合方法

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

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

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

标题

2. 特征分辨率(R)

3. base数目(K)

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

5. 插值方法

参考

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

BlendMask:Top-Down Meets Bottom-Up for InstanceSeg

发布了11 篇原创文章 · 获赞 4 · 访问量 543

猜你喜欢

转载自blog.csdn.net/sanshibayuan/article/details/104011910
今日推荐