【Mask RCNN】论文学习笔记

【Mask RCNN】论文学习笔记

本文记录的是本人学习何凯明大神的2017 ICCV Best Paper 【Mask R-CNN】的笔记。

1 Mask RCNN Architecture

简而言之,Mask R-CNN就是在Faster R-CNN的基础上,增加了一个mask prediction的branch。
请添加图片描述
请添加图片描述

总结
Backbone: 1.卷积层:Resnet+FPN(Feature Pyramid Network)2. RPN层 3. ROIAlign层
Network Head: 4.类别边框预测层 5. mask预测层

2 RPN网络(Region Proposal Network)

请添加图片描述
RPN网络主要输出项:

  1. ROI:对应在特征层每个特征点产生4k个变量,其中4表示[dy, dx, dh, dw]四个边框平移缩放量。其中k表示4个边框,k=4。
  2. scores:对应在特征层每个特征点产生2k个变量,其中2表示前景和北京概率。其中k表示3个边框,k=3。

3 ROI Align

FCN中使用的ROI Level校准:
k = [ k 0 + log ⁡ 2 ( w h 224 ) ] k=[k_0+\log_2{(\frac{\sqrt{wh}}{224})}] k=[k0+log2(224wh )]
Mask-RCNN中使用的ROI Level校准:
k = [ k 0 + log ⁡ 2 ( w h 224 / i m a g e    a r e a ) ] k=[k_0+\log_2{(\frac{\sqrt{wh}}{224/\sqrt{image\; area}})}] k=[k0+log2(224/imagearea wh )]

解释

  1. 由于Mask R-CNN训练数据的box和anchor都做了调整,所以ROI Level的计算部分也需要 224 / i m a g e    a r e a 224/\sqrt{image\; area} 224/imagearea 。其中,224应为输入图像尺寸的一半。
  2. 计算得到的k即为ROI对应的level,level一共4个:
    1. l e v e l = 2 level=2 level=2表示映射回特征 P 2 P_2 P2,大小为原输入图像的 1 / 4 1/4 1/4
    2. l e v e l = 3 level=3 level=3表示映射回特征 P 3 P_3 P3,大小为原输入图像的 1 / 8 1/8 1/8
    3. l e v e l = 4 level=4 level=4表示映射回特征 P 4 P_4 P4,大小为原输入图像的 1 / 16 1/16 1/16
    4. l e v e l = 5 level=5 level=5表示映射回特征 P 5 P_5 P5,大小为原输入图像的 1 / 32 1/32 1/32

在这里插入图片描述

虚线网格表示特征图,实线表示RoI(在本例中为2×2个bin),点表示每个容器中的4个采样点。RoIAlign通过双线性插值从特征图上附近的网格点(最近的4个)计算每个采样点的值。在ROI、4个bin或采样点中涉及的任何坐标上都不进行量化。

4 Class/Bounding Box预测和Mask预测

请添加图片描述

5 Loss Function的计算

请添加图片描述

参考

薛定谔的AI 《mask-rcnn》解读、训练、复现
arxiv: Mask R-CNN
PaperWithCode: Mask R-CNN

### 关于 Mask R-CNN 的学术论文 Mask R-CNN 是一种用于实例分割的任务框架,在计算机视觉领域具有重要影响。该模型由何恺明等人提出,基于 Faster R-CNN 进行改进,增加了分支来预测目标的像素级掩码[^1]。 #### 论文介绍 - **原始论文** 题目为《Mask R-CNN》,发表于 ICCV 2017 年会议。这篇论文介绍了如何通过引入额外的分支来进行逐像素分类,从而实现精确的目标检测和分割任务。此方法不仅保持了高精度的位置定位能力,还能够高效处理多类别对象的同时存在情况。 ```python import torch.nn as nn class MaskRCNN(nn.Module): def __init__(self, backbone, rpn, roi_heads, mask_head): super(MaskRCNN, self).__init__() self.backbone = backbone self.rpn = rpn self.roi_heads = roi_heads self.mask_head = mask_head def forward(self, images, targets=None): features = self.backbone(images.tensors) proposals, proposal_losses = self.rpn(images, features, targets) detections, detector_losses = self.roi_heads(features, proposals, targets) if self.training: losses = {} losses.update(detector_losses) losses.update(proposal_losses) return losses masks = self.mask_head(detections['boxes'], features) detections['masks'] = masks return detections ``` - **后续发展** 自 Mask R-CNN 发布以来,许多研究者在此基础上进行了扩展与优化工作。例如,《Contextual Priming and Feedback for Faster R-CNN》探讨了上下文引导机制对于提升区域提议网络性能的影响;而另一篇有关激光雷达三维物体探测器的研究则展示了深度主动学习策略可以有效提高训练效率[^2]。 #### 学术资源链接 为了更深入理解 Mask R-CNN 及其变体的发展历程和技术细节,建议查阅以下资料: - 原始论文:<https://arxiv.org/abs/1703.06870> - GitHub 实现项目:<https://github.com/facebookresearch/Detectron>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值