Mask RCNN 论文阅读

本文详细介绍了Mask R-CNN的工作原理及其相对于Faster R-CNN的改进之处。Mask R-CNN不仅能够检测图像中的对象,还能精准地分割出每个对象的轮廓。文中还探讨了Mask R-CNN的损失函数定义、RoIAlign层的设计目的以及最佳网络结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mask rcnn 是对Faster R-CNN的功能上的提升,速度上仍然在200ms(5fps)。

f1

Faster R-CNN回顾

Faster R-CNN由两个阶段组成。 第一阶段为RPN网络,提出候选对象bounding boxes。第二阶段,本质上是Fast R-CNN,从每个候选框中提取使用RoIPool的特征,并执行分类和边界框回归。

Mask R-CNN特点

Mask R-CNN在概念上很简单,与Faster R-CNN前相同只是又多加了一个输出:Faster R-CNN每个候选对象有两个输出,类标签(label)和边框偏移(bounding-box offset); 为提高精度,又添加了输出对象mask(二进制掩码)的第三个分支。但附加的Mask输出与类和框输出不同,需要提取对象的更精细的空间布局。同时,分类也取决于掩模预测。

损失上,在训练期间,将每个抽样RoI的多任务丢失定义为L=Lcls+Lbox+Lmask。 分类损失Lcls和bounding-box损失Lbox与Fast R-CNN中定义的相同。mask分支对于每个RoI具有Km2维输出,即K个分辨率m×m的二进制掩模编码,每个对应K中某个类别。 为此,对每个每像素使用sigmoid,并将Lmask定义为平均二进制交叉熵损失(the average binary cross-entropy loss)。对于与ground-truth类k相关联的RoI,Lmask仅在第k个掩码上定义(其他掩码输出不会造成损失)。

与FCN

我们对Lmask的定义允许网络为每个类生成掩码,而不会在类之间有竞争;我们依靠专用分类分支预测用于选择输出掩码的类标签。这将隔离mask和类预测输出。 这与将FCN应用于通常使用每像素softmax和多项交叉熵损失的语义分割的常见做法不同。 在这种情况下,类上的mask存在竞争;在我们这种情况下,使用每像素的sigmoid和二进制损失,不会存在mask间的竞争。 通过实验显示,这种方案是良好的实例分割结果的关键。

Mask的表示

一个mask对输入对象的空间布局进行编码,如图1。 因此,无需像全链接一样reshape,可以通过卷基层进行运算输出。具体来说,我们使用FCN预测每个RoI的m×m掩码。 这允许掩模分支中的每个层保持显式的m×m对象空间布局,而不会将其折叠成缺少空间维度的向量(fc)表示。完全卷积表示需要更少的参数,并且如实验所证明的更准确。 这种像素到像素的行为需要我们的RoI特征,它们本身是小的特征图,以便良好地对齐以保留显式的每像素空间对应(应该是得到的mask与物体的像素对其)。 这促使我们开发出在掩模预测中发挥关键作用的以下RoIAlign层。

RoIAlign

RoIAlign层是对RoIPool的改进,用于可以消除RoIPool的严格量化。其实提出的改变很简单:为了避免了RoI边界或块的任何量化(即我们使用x / 16而不是[x / 16])。我们使用双线性插值来计算每个RoI中四个定期采样位置的输入特征的精确值,并将结果聚合(使用最大值或平均值)。如展示的那样,RoIAlign带来了很大的改进。
其实这一部分就是对feature map的插值计算。

网络结构

效果最好的结构是ResNeXt + FPN。这两部分也有其各自的作用:

  1. 用于整个图像上的特征提取的卷积网络结构
  2. 分别应用于每个RoI的边界盒识别(分类和回归)和掩模预测的网络头。

是下图右边的结构:
Head Architecture

总结

这是把图像分割运用到了检测里来,算是检测功能的进一步增强。之前我就觉得这两者之间其实还是比较类似的,更进一步从检测做到分割也是理所当然。
其实最大的创新应该是分割中使用了非竞争的sigmoid代替了softmax,但具体各部分哪一点是最关键的,最提升性能的,只凭想也不能确认。以上是初步的阅读,可能有一些错误,希望与大家多交流。

S. Xie, R. Girshick, P. Doll´ar, Z. Tu, and K. He. Aggregated residual transformations for deep neural networks. arXiv:1611.05431, 2016.
T.-Y. Lin, P. Doll´ar, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. arXiv:1612.03144, 2016.

### 关于 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>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值