论文笔记:Mask R-CNN

一、基本信息

标题:Mask R-CNN
时间:2018
引用格式:Mask R-CNN He, Kaiming, et al. “Mask r-cnn.” Proceedings of the IEEE international conference

二、研究背景

Faster R-CNN最终得到是bbox和类别,而且对小物体检测不太准确,所以本文提出一种除了可以检测box和类别外,还可以检测mask的网络。就是Mask R-CNN。

而Mask R-CN是基于Faster R-CNN改进的,和Faster R-CNN不同的是可以额外检测物体的Mask。
在这里插入图片描述
图中可以看到,bbox,mask,类别。

三、创新点

主要在2点:

  1. 应用了FPN,对小物体检测更准
  2. 应用了ROI Align,从而实现检测mask分支

Feature Pyramid Networks for Object Detection(FPN)

通用FPN框架可以查看FPN论文笔记
Mask R-CNN中的FPN:
在这里插入图片描述
更详细的图:
在这里插入图片描述
自底而上网络实际上为ResNet。
实际上,上图少绘制了一个分支:M5经过步长为2的max pooling下采样得到 P6,作者指出使用P6是想得到更大的anchor尺度512×512()下采样之后feature map上每个元素的receptive field会变大。但P6是只用在 RPN中用来得到region proposal的,并不会作为后续Faster RCNN的输入。
下图显示了完整的框架(下图还是Faster R-CNN)
在这里插入图片描述
上图来自网络,漏了部分没画:p4 p3 p2后面要接3 * 3卷积再接2支路(cls + reg)的1 * 1卷积

看上面图有个P6,目的是?

FPN针对RPN的改进是将网络头部应用到每一个P层。由于每个P层相对于原始图片具有不同的尺度信息,因此作者将原始RPN中的尺度信息分离,让每个P层只处理单一的尺度信息。具体的,对{32、64、128、256、512}这五种尺度的anchor,分别对应到{P2、P3、P4、P5、P6}这五个特征层上。每个特征层都处理1:1、1:2、2:1三种长宽比例的候选框。P6是专门为了RPN网络而设计的,用来处理512大小的候选框。它由P5经过下采样得到。下采样之后feature map上每个元素的receptive field会变大


FPN产生了特征金字塔 [P2、P3、P4、P5、P6] ,而并非只是一个feature map。金字塔经过RPN之后会产生很多region proposal。这些region proposal是分别由 [P2、P3、P4、P5、P6] 经过RPN产生的,但用于输入到Fast RCNN中的是 [P2、P3、P4、P5] ,也就是说要在 [P2、P3、P4、P5] 中根据region proposal切出ROI进行后续的分类和回归预测。问题来了,我们要选择哪个feature map来切出这些ROI区域呢?实际上,我们会选择最合适的尺度的feature map来切ROI。具体来说,我们通过一个公式来决定宽w和高h的ROI到底要从哪个 P k P_k Pk 来切:
k = ⌊ k 0 + log ⁡ 2 ( w h / 224 ) ⌋ k=\left\lfloor k_{0}+\log _{2}(\sqrt{w h} / 224)\right\rfloor k=k0+log2(wh /224)
这里224表示用于预训练的ImageNet图片的大小。 k 0 k_{0} k0 表示面积为 w × h = 224 × 224 w \times h=224 \times 224 w×h=224×224 的ROI所应 该在的层级。作者将 k 0 k_{0} k0 设置为4,也就是说 w × h = 224 × 224 w \times h=224 \times 224 w×h=224×224 的ROI应该从 P 4 P_4 P4 中切出来。假设ROI的scale小于224(比如说是112 ∗ ^{*} 112) , k = k 0 − 1 = 4 − 1 = 3 \quad k=k_{0}-1=4-1=3 k=k01=41=3 ,就意味着要从更高分辨 率的 P 3 P_{3} P3 中产生。另外, k k k 值会做取整处理,防止结果不是整数。
这种做法很合理,大尺度的ROI要从低分辨率的feature map上切,有利于检测大目标,小尺度的 ROI要从高分辨率的feature map上切,有利于检测小目标。

转自 https://zhuanlan.zhihu.com/p/37998710

ROI Align 和 Mask分支

ROI Align

RoI Pooling与RoI Align对比

比如ROI(proposal)是黑框,蓝色虚线交点处是Featur Map的点,下面把ROI分成2 * 2网格,这一步和RoI Polling一样

接下来对每个网格取4个采样点(RoI Polling是根据网格划分的结果中去对应的Featur Map,由于进行了整数化,就不存在小数),4个采样点灭有进行取整,所以进行双线性插值,双线性插值核心思想就是那个点举例采样点近,那个点发挥的作用就更大。

最后的步骤也和RoI Polling一样,网格内的采样点取一个最大值代表这个网格。所以最后输出的结果是固定大小。
在这里插入图片描述

需要说明的是,在相关实验中,作者发现将采样点设为4会获得最佳性能,甚至直接设为1在性能上也相差无几。事实上,ROI Align 在遍历取样点的数量上没有ROIPooling那么多,但却可以获得更好的性能,这主要归功于解决了misalignment的问题。

Mask分支

在这里插入图片描述
如上图所示,为了产生对应的Mask,文中提出了两种架构,即左边的Faster R-CNN/ResNet和右边的Faster R-CNN/FPN。对于左边的架构,我们的backbone使用的是预训练好的ResNet,使用了ResNet倒数第4层的网络。输入的ROI首先获得7x7x1024的ROI feature,然后将其升维到2048个通道(这里修改了原始的ResNet网络架构),然后有两个分支,上面的分支负责分类和回归,下面的分支负责生成对应的mask。由于前面进行了多次卷积和池化,减小了对应的分辨率,mask分支开始利用反卷积进行分辨率的提升,同时减少通道的个数,变为14x14x256,最后输出了14x14x80的mask模板。

而右边使用到的backbone是FPN网络,这是一个新的网络,通过输入单一尺度的图片,最后可以对应的特征金字塔,如果想要了解它的细节,请参考该链接。得到证实的是,该网络可以在一定程度上面提高检测的精度,当前很多的方法都用到了它。由于FPN网络已经包含了res5,可以更加高效的使用特征,因此这里使用了较少的filters。该架构也分为两个分支,作用于前者相同,但是分类分支和mask分支和前者相比有很大的区别。可能是因为FPN网络可以在不同尺度的特征上面获得许多有用信息,因此分类时使用了更少的滤波器。而mask分支中进行了多次卷积操作,首先将ROI变化为14x14x256的feature,然后进行了5次相同的操作(不清楚这里的原理,期待着你的解释),然后进行反卷积操作,最后输出28x28x80的mask。即输出了更大的mask,与前者相比可以获得更细致的mask。

转自 https://blog.csdn.net/Fire_to_cheat_/article/details/88943024

四、实验结果

五、结论与思考

作者结论

总结

思考

参考

令人拍案称奇的Mask RCNN
(目标检测) Mask R-CNN详解+论文复现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值