Mask R-CNN翻译(主要技术点解析)

今年何凯明大神再放大招,运用不多的策略就打败了去年实例分割的冠军,并且在去除mask分支的基础上达到了目标检测(class、box)的最好成绩。废话不多说,马上进入正题~
note:以下仅为个人理解,如有错误还请各位留言纠正

策略一:采用并行训练策略

Mask R-CNN仅仅是在Faster R-CNN的基础上添加了一个预测mask分支(FCN)掩码的,达到像素级别的分类目标,并且与以往的训练方法不同,Mask R-CNN采用并行训练的方式,mask分支不受class与box分支的影响,即他们之间没有信息交互。消除class与box信息影响是由L_mask来实现的。先来看一下总损失:L=Lcls+Lbox+Lmask,其中Lcls与Lbox是Faster R-CNN定义的,文中没有改变其定义。而Lmask是由FCN输出的K*m*m个掩码来定义的,这是本文的主要贡献:

RPN预先生成的每个ROI由FCN生成K*m*m大小的feature-map。其中K为类别总数,m是超参数。可以将m*m看做为ROI压缩后的固定大小,因为m*m的就是表示掩码信息,将其重新resize成ROI大小即为各个类别在该ROI上的分割像素信息。单层m*m的feature-map信息如下图所示:
Mask R-CNN翻译(主要技术点解析)_第1张图片
都是浮点数类型,表示每个像素(压缩过后的)为该实例的得分。之后将这些得分通过sigmoid函数压缩至[0,1]范围内。此时的数值可以看作为对应像素为该类实例的概率。之后以0.5为阈值将m*m二值化为positive(正样本)与negative(负样本),Lmask就是计算二值化后的K*m*m大小的feature-map中的正样本的均值交叉熵损失(注意,此时只计算正样本)。即对每一个m*m层求算数平均交叉熵损失的输入。可以看出,此时的Lmask与类别无关,去除了mask与class的相关性。

策略二:ROIAlign

对于ROIPOOL层,在cls与box任务中表现出色,而对于mask任务,是pixel-to-pixel,要求严格像素之间的对齐,此时ROIPOOL只能被看作为粗略的空间量化,损失大量的空间信息。为了保留精确的空间位置信息,且保证只添加少部分计算开销的前提下,文中提出ROIAlign层,利用双线性插值的方法来解决对齐问题。
双线性插值,可参考:http://blog.csdn.net/xjz18298268521/article/details/51220576

你可能感兴趣的:(深度学习,HUMAN+)