简介

mask-rcnn,主要用于目标检测,但是结合了语义分割的思想,是何恺明在 faster R-CNN后又一论文,而且是ICCV 2017的最佳论文。(没有了解CV之前就听到何恺明的大名了,最近看语义分割资料,真的太佩服这位大神了,竞赛保上清华,高考状元, Facebook AI Research等)
原论文
tensorflow mask rcnnFacebook开源代码 GitHubPytorch mask RCNN;

1 Mask RCNN

Faster R-CNN,包含两个阶段,一个阶段是 区域提取网络(Region Proposal Network,RPN),用于提取候选物体边界框。另外一个阶段是,从候选框用 RoIPool提取特征,用于分类和边界框回归任务。

Mask R-CNN,采取 Faster R-CNN相同的阶段流程,在第二个阶段是,并行输出一个二值掩模(Mask)。多任务分类损失函数 L = L c l a s s + L b o x + L m a s k L = L_{class} + L_{box}+ L_{mask} L=Lclass+Lbox+Lmask. L m a s k L_{mask} Lmask采用二值交叉函数,对感兴趣区域的每个像素进行计算Loss。这里可以认为是输入图像与目标图像的像素对齐,对输入图像每个像素分类。(不知理解是否正确。)

Formally, during training, we define a multi-task loss on each sampled RoI as L = Lcls + Lbox + Lmask. The clas-sification loss Lcls and bounding-box loss Lbox are identi-cal as those defined in [12]. The mask branch has a Km 2 -dimensional output for each RoI, which encodes K binary masks of resolution m m, one for each of the K classes. To this we apply a per-pixel sigmoid, and define Lmask as the average binary cross-entropy loss. For an RoI associated with ground-truth classk, Lmask is only defined on thek-th mask (other mask outputs do not contribute to the loss).

架构:
在这里插入图片描述

2.细节

比如论文使用RoIAlign,这个是插值的方法来表示边界,而不是像RoIPool那样使用坐标取整方式。
在这里插入图片描述

3 ROI 产生方法

region of insterst产生
在这里插入图片描述
非常简单的过程,先使用77的卷积,先划分块,块进行maxpooling,然后输出。
我的理解是,输入一张图片,先进行特征提取 ,在特征提取后,使用多个矩形框(anchors)对特征图进行切分,这麽多框再卷积到相同的通道大小,然后再输出到卷积层中,这是通道个数是框的个数
类比个数(如果是目标检测,一般就2,有无目标);对输出的这麽多个通道进行Softmax,选出分数高的proposal,注意,每个proposal是一个点(因为proposal的窗大小是设定好了。),feature map一个多少个点就多少个proposal(当然,可以隔很多点选一个)。
此外,一般保留可能性概率大于0.7的框。


参考:

  1. csdn Mask-RCNN技术解析;
  2. RoI Align源码学习
  3. ROI 详细解读
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐