论文名称:《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两类方法。
自上而下的密集实例分割的开山鼻祖是DeepMask,它通过滑动窗口的方法,在每个空间区域上都预测一个mask proposal。这个方法存在以下三个缺点:
mask与特征的联系(局部一致性)丢失了,如DeepMask中使用全连接网络去提取mask
特征的提取表示是冗余的, 如DeepMask对每个前景特征都会去提取一次mask
下采样(使用步长大于1的卷积)导致的位置信息丢失
自下而上的密集实例分割方法的一般套路是,通过生成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称为Base;top layer串接在检测器的box head上,生成Base对应的top level attention;最后是blender来对Base和attention进行融合。
这部分的结构类似FCIS和YOLACT,输入为 的低层特征,由骨干网络或FPN输出。通过一系列的decode(上采样和卷积),生成score maps,称为Base(B)。文中使用的是DeeplabV3+的decoder,其他分割网络的decoder同样适用。
上式中的N为batch size,K为Base的数量,H和W是输入图像的大小,s则是Base的输出步长。
在检测金字塔的每一层后面都加了一层卷积,用来预测 top-level attentions (A)。这里与YOLACT相似,但有所区别:
在YOLACT中,输出是,即N×K大小的mask系数,原文中称为mask cofficient;
本文输出的A的维度是 ,这里为attention 的分辨率,即对应的base的每个像素点的权重值,包含的粒度更细。
由于top-level attention是三维的,因此可以学习到一些instance-level的信息,例如大致的形状和姿态。具体的实现为output channel为的卷积。
Blender模块是文章的创新部分,该部分的混合过程具体解释如下:
首先明确Blender模块的输入,分别为:
detector tower 生成的bbox proposal(P),维度为(K×H'×W');此外,在训练的时候,直接使用GT bbox作为P,而在推理时,则使用检测器的检测结果。
top layer 生成的top-level attention(A),维度为(K×M×M)
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大小的特征图 ,最后得到的 的维度为(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 大小,得到的 维度为(K×R×R)
再在K维度上做softmax,得到一系列的scores map, 的维度同样为(K×R×R)
融合:这时的 和 都是 (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情况下除外)。
作者同时也设置了一个快速版的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结构的优越性。
作者将blender改造成YOLACT和FCIS算法的融合方法进行实验,从实验结果可以看出,Blender的融合方法要更好。
此外,通过可视化中间过程,作者发现 BlendMask 可以编码两种局部信息,一是semantic masks,判断像素是否属于一个物体;二是position-sensitive feaures,判断像素是否在物体的某个部位。
如下图,四个base分别提取出了对不同的位置敏感的特征,这些特征可以帮助更好地分开相邻的实例,这也是比YOLACT更有效率的地方;而semantic masks可以让预测结果更加精细与顺滑。因此,BlendMask可以用更少的base学到更丰富的特征表示的原因。
熟悉Mask R-CNN的读者会发现,BlendMask其实与Mask R-CNN的结构思路很类似。如果将BlendMask的检测器部分从FCOS换成Faster R-CNN后,相似点就更明显了:
这也是本文创新点不突出的原因,BlendMask的整体结构其实就是在Mask R-CNN的box head后面加了一层卷积预测attention,再对mask head 生成的mask用attention进行blend。blend这块其实就是FCIS和YOLACT的创新点。
因此,作者也在文末详细分析了一下两者的区别和BlendMask 的优势:
论文速递 | 实例分割算法BlendMask,实时又state-of-the-art
BlendMask:Top-Down Meets Bottom-Up for InstanceSeg