MS上的blend和ambiguity有什么区别?
BlendMask是一种一阶段密集实例分割方法,结合了自顶向下和自底向上方法的思想。它在无锚检测模型FCOS的基础上,通过增加底层模块来提取低层细节特征,并预测关注度;在实例级上,作者参考了FCIS和约拉克的融合方法,提出了一个Blender模块来更好地融合这两个特性。最终,COCO上BlendMask的准确率(41.3AP)和速度(1080 Ti上25 fps)都优于Mask R-CNN。
这篇文章虽然准确率高,速度快,但创新并不突出。好在实验充分,优化模型的思路也值得借鉴。最后专门和Mask R-CNN对比了一下,好评~
背景介绍
本文主要讨论密集实例分割,密集实例分割也有自顶向下和自底向上的方法。
自上而下方法
DeepMask是自顶向下的密集实例分割的鼻祖,它通过滑动窗口来预测每个空间区域中的一个掩码提议。这种方法有以下三个缺点:
掩膜和特征之间的联系(局部一致性)丢失,比如在DeepMask中使用全连通网络提取掩膜。
特征提取表示是冗余的,例如,Deepmask将为每个前景特征提取一次遮罩。
下降采样导致的位置信息丢失(步长大于1的卷积)
自下而上的方法
自底向上的密集案例分割方法的一般套路是生成每像素的嵌入特征,然后利用聚类、图论等后处理方法进行分组分类。虽然这种方法保留了较好的低层特征(细节信息和位置信息),但它也有以下缺点:
密集分割的质量很高,会导致非最优分割
泛化能力差,无法应对类别多的复杂场景。
后期处理方法繁琐。
混合方法
本文想将这两种思想结合起来,利用自顶向下方法(如bbox)产生的实例级高维信息融合自底向上方法产生的逐像素预测。为此,提出一种基于FCOS的简洁算法网络BlendMask。基于FCIS (clipping)和约拉克(YOLACT)的思想,提出了一个Blender模块,它可以更好地集成包括实例级的全局信息和提供细节和位置信息的低级特征。
大意
BlendMask的整体架构如下图所示,包括检测器模块和BlendMask模块。本文检测器模块直接使用的FCOS和BlendMask模块由三部分组成:底层模块用于处理底层特征,生成的评分图称为Base;顶层串联在探测器的盒头上,产生顶层关注;对应底座;最后用blender来整合基数和注意力。
混合屏蔽整个帧
请点击输入图片说明。
底部模块
这部分的结构类似于FCIS和约拉克。输入是?的低层特征是由主干网或FPN输出的。通过一系列解码(上采样和卷积),生成得分图,这被称为基本(B)。本文使用的是DEPLABV 3+解码器,其他分网的解码器也适用。
上式中,n是批量大小,k是基数的个数,h和w是输入图像的大小,s是基数的输出步长。
Deeplab V3+网络框架
请点击输入图片说明。
顶层
在检测金字塔的每一层之后,增加一层卷积来预测顶级注意力(A)。类似于YOLACT,但又不一样:
在YOLACT中,输出是什么?,即N×K掩码的权值,称为掩码系数;原文中;
本文中的输出维度是什么?,这里?注意力的分辨率,即对应基的每个像素的权值,包含了更细的粒度。
因为顶级的注意力是三维的,所以可以学习一些实例级的信息,比如大致的形状和姿势。具体实现就是输出通道是?的卷积。
搅拌机
搅拌机模块是文章的创新部分,这部分的搅拌过程解释如下:
首先,定义Blender模块的输入,即:
探测器塔产生的Bbox建议(P),尺寸为(k×h’×w’);另外,训练时直接用GT bbox做P,推理时用检测器的检测结果。
顶层产生的顶层注意力(A),维度为(K×M×M)。
底层模块生成的基(B)是整个图形大小的k mask,维数为(K×H×W)。
对于B,使用掩膜R-CNN中的RoIPooler(即采样比为1的RoIAlign,掩膜R-CNN中为4),在B上裁剪P对应区域的掩膜,调整大小为固定R×R大小的特征图,最终维数为(k×R×R);
请点击输入图片说明。
请点击输入图片说明。
对于A:这一步其实是顶层的后处理操作,这里就说一下。作者根据FCOS的后处理方法,选取前D个检测帧和对应的A,通过RoIAlign(采样率=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,得到一系列的scoresmaps。的维数也是(K×R×R)
请点击输入图片说明。
融合:此时?然后呢。它们的大小都是(K×R×R),可以直接做成元素式的乘积:将K个bbox大小的掩膜乘以相应的关注度,然后按照通道进行叠加,得到最终的掩膜。
熔化过程
请点击输入图片说明。
实验结果
参数设置
BlendMask的超参数* * *具有以下内容:
本文将R,底层RoI的分辨率设置为56。
m,顶级预测(A)的分辨率一般比r小很多,本文的设定是7。
本文将k和基数的个数设为4。
底层模块的输入特征来自骨干网(C3,C5)或FPN(P3,P5),本文采用P3和P5。
底基的抽样方法是最近邻混合法或双线性混合法,本文采用双线性混合法。
顶层注意力插值法、最近邻插值法或双线性插值法,本文采用双线性插值法。
这些超参数稍后将被烧蚀。为了与其他模型进行合理的比较,烧蚀实验中使用的BlendMask设置如下:R_K_M分别为28,4,4;底层模块的输入特征来自骨干网C3和C5;顶层关注采用最近邻插值法,与FCIS一致;底层使用双线性池,与RoIAlign一致。
实验结果
先看整体实验结果。在COCO数据集上,BlendMask的准确率和速度超越其他单级实例模型,基本超越Mask R-CNN(R-50和NOAUG除外)。
请点击输入图片说明。
混合掩码-RT
同时,笔者还搭建了一个快速版的BlendMask-RT进行速度对比。快速版中的变化如下:
预测头的卷积数减少到3。
YOLACT中的Proto-FPN作为底层模块,箱型塔和分类塔合二为一(此处存疑)。