YOLACT
- YOLACT: Real-time Instance Segmentation
这篇文章的目标是解决实例分割的实时性问题。通过在现有one-stage目标检测模型的基础上添加mask分支来解决这一问题。与Mask R-CNN等明显使用特征定位步骤(特征repooling)的方法不同,在YOLACT中并不存在这一步。
为了达到这一目的,作者将实例分割任务划分为两个更简单的平行任务,通过对这两个任务的结果进行融合来得到最终的实例分割结果。具体如下:
- 第一分支:使用全卷积网络(FCN)作为分支来产生一些具有整个图像大小的“prototype masks”,这些prototype masks不与任何实例相关;
- 第二分支:在目标检测分支的基础上添加额外的head,该head针对每一个anchor都预测一个掩膜系数(mask coefficients)。这些系数的作用是在prototype空间对某个实例的表示进行编码。
最后,在使用NMS得到所有的实例后,对其中的每一个实例都通过对上述两个分支的结果进行线性组合来得到所对应的掩膜。结构如下图所示:
作者这么做的依据在于掩膜之间是空间相关的:例如相邻的两个像素更有可能属于同一个实例。卷积层很自然地利用了这一相关性,但全连接层没有。这会导致一个问题,对于one-stage目标检测器来说,其使用全连接层来针对每一个anchor输出类别预测和box系数,无法利用到掩膜的空间相关性;而类似于Mask R-CNN的two stages方法则使用额外的定位步骤(RoI-Align)来解决这一问题,定位步骤既保留了特征图中的空间相关性,也可以使用卷积运算得到掩膜输出。但是这一做法的代价是,定位层会引入额外的计算,降低算法的运行效率。
因而,将这一问题分为了两个平行的步骤:使用善于产生语义向量的全连接层来产生掩膜系数,而使用善于产生空间相关掩膜的卷积层来产生”prototype masks”。
Protonet由FCN构成,其最后一层输出k个通道,每一个通道对应一个类别的prototype mask。结构如下所示。
接着,将上述两个步骤得到的prototype mask和掩膜系数做矩阵乘法,并使用Sigmoid进行激活,便可以得到最终的实例掩膜。
YOLACT++
- YOLOACT++ Better Real-time Instance Segmentation
在YOLACT的基础上,作者进一步进行了如下修改,来得到一个准确度更高的实例分割模型。
- 在backbonde网络中加入可变形卷积(deformable convolutions);
- 使用更好的anchor尺度和比例对prediction head进行优化;
- 加入新的mask re-scoring支路。
最终,在MS COCO上,YOLACT++可以获得34.1mAP和33.5fps的成绩,其精度已经非常接近SOTA模型。
Fast Mask Re-Scoring分支
对于模型来说,其分类置信度和预测的掩膜的质量之间是存在差异的。为此,作者引入了一个fast mask re-scoring分支,该分支依据所预测的掩膜与ground-truth的IoU对掩膜进行评分。具体来说,Fast Mask Re-Scoring网络由6层FCN组成,每一层卷积层之后跟一层ReLU,最后一层为全局池化层。该网络以YOLACT所输出的裁剪过的mask(未经过阈值)为输入,输出mask对于每一个目标种类的IoU。接着,将分类分支预测的类别所对应的mask IoU与相对应的类别置信度的乘积作为该mask最终的分数。
与Mask Scoring R-CNN相比,作者提出的方法有以下不同:
- 输入为全尺寸的图像的mask(预测框之外的区域值为0),而Mask Scoring R-CNN输入的是RoI repooled的掩膜与来自于掩膜预测分支的特征图所拼接得到的;
- 没有全连接层,因而本方法更快,加入Fast Mask Re-Scoring分支后时间仅增加了1.2ms。
可变形卷积
通过加入可变形卷积,mAP提高了1.8,速度慢了8ms。作者认为性能提升的原因有以下几点:
- 通过和目标实例进行对准,使得网络可以处理不同尺度、旋转角度和比例的实例;
- YOLACT本身没有再采样策略,因而一个更好、更灵活的采样策略更重要。
- 同时作者发现,在引入可变形卷积时需要选择合适的插入位置才能取得性能的提升。
评论
沙发等你来抢