目标检测系列—Mask R-CNN 详解

目标检测系列—Mask R-CNN 详解

1. 引言

Mask R-CNN 是由 Kaiming He 等人于 2017 年提出的,它在 Faster R-CNN 的基础上进行了扩展,除了执行 目标检测(即物体的分类和定位)之外,还增加了 实例分割 的功能,能够精确地预测每个目标的 像素级分割掩膜

与其他目标检测方法相比,Mask R-CNN 在精度上具有显著优势,尤其是在实例分割任务上。它在 COCO 数据集上取得了出色的表现,因此在计算机视觉领域中得到了广泛应用。

本文将详细介绍 Mask R-CNN网络结构、核心创新,并提供 PyTorch 代码示例,帮助读者深入理解 Mask R-CNN 的工作原理。


2. Mask R-CNN 的关键创新

创新点 描述
Faster R-CNN 基础 Mask R-CNN 基于 Faster R-CNN,利用 Region Proposal Network (RPN) 生成候选区域。
RoIAlign 引入 RoIAlign,替代了 Faster R-CNN 中的 RoIPooling,解决了量化误差问题,提升了精度。
像素级分割掩膜 在每个候选区域上,为每个目标生成精确的 二进制分割掩膜,实现实例分割。
多任务学习 Mask R-CNN 使用多任务学习同时进行目标检测和实例分割。

Mask R-CNN 将目标检测与实例分割结合在一起,通过端到端的训练,提升了目标检测和分割的精度,特别适用于那些需要精确分割目标边界的场景。


3. Mask R-CNN 的工作原理

Mask R-CNN 的工作原理与 Faster R-CNN 类似,但其额外增加了一个分支用于生成 目标的掩膜。具体流程包括以下几个步骤:

3.1 Region Proposal Network (RPN)

与 Faster R-CNN 一样,Mask R-CNN 也使用 Region Proposal Network (RPN) 来生成候选区域。RPN 在卷积特征图上进行滑动,生成一组锚框,并为每个锚框生成目标性分数(objectness score)和边界框回归的偏移量。

3.2 RoIAlign

与 Faster R-CNN 中的 RoIPooling 不同,Mask R-CNN 引入了 RoIAlign,它能够避免量化误差,保证了从特征图中精确提取候选区域的特征。RoIAlign 对候选区域进行无量化的对齐操作,显著提升了分割任务的性能。

3.3 分割掩膜生成

Mask R-CNN 在每个候选区域上增加了一个 掩膜分支,用于生成目标的 二进制掩膜。与分类和边界框回归任务一样,掩膜任务也是通过一个全卷积网络(FCN)来实现的,每个候选区域生成一个固定大小的掩膜。

3.4 多任务学习

Mask R-CNN 在训练过程中同时优化目标检测和实例分割任务。具体来说,网络的总损失包括三部分:

  • 分类损失:用于目标分类。
  • 边界框回归损失:用于预测目标位置的边界框。
  • 掩膜损失:用于生成目标的二进制掩膜。

通过多任务学习,Mask R-CNN 实现了目标检测和实例分割的联合优化。


4. Mask R-CNN 的网络结构

Mask R-CNN 的网络结构包括以下几个部分:

  1. 卷积神经网络(CNN):通常使用 ResNetFPN(特征金字塔网络)作为特征提取网络。
  2. Region Proposal Network (RPN):生成候选区域。
  3. RoIAlign:精准提取候选区域的特征。
  4. 分类分支:为每个候选区域进行目标分类。
  5. 边界框回归分支:为每个候选区域回归出精确的边界框位置。
  6. 掩膜分支:生成每个候选区域的二进制掩膜,执行实例分割。

5. Mask R-CNN 的代码实现

Mask RCNN 是基于Kaiming 之前的工作 FPN (Feature Pyramid Network) 很形象地说就是用FPN产生的检测结果, 后面加了一个分割的网络. 文章中用到了 Top-Down + Bottom-Up 最近很流行的多层网络, 因为最开始Faster-RCNN只是在最后一层上面检测, 很容易丢掉小目标物体, 并且对细节遮挡也很不敏感. 最近的趋势就是结合多层 特征, 答主孔涛就很早发现了这个insight, 做出了HyperNet 并中了CVPR roal!!!作者:Oh233 链接:https://www.zhihu.com/question/57403701/answer/153060743 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Mask R-CNN 这个结果确实很强,但要同时注意它主要是加上了许多(都是很有用的)engineering techniques 。 比如说 anchor 从 12 增加到了15个,图像 size 从600变成了800,还有ROI batch size变到了512,从FPN那篇paper来看,这些 better practice 会有对性能十分明显的提升 (table 3 baseline: AP=26.3 -> 31.6)。而我们组16年的coco分割竞赛冠军 ,Fully Convolutional Instance-aware Semantic Segmentation (FCIS)的代码昨晚终于开源了。限于计算资源,我们并没有加上这些改进。这些改进应该是比较 general 的,也会适用于 FCIS。欢迎大家试用一波。FCIS 提供了一种简单高效的框架去解决 instance segmentation 的问题。跟之前 COCO 2015 的冠军 MNC 相比,它的主要不同在于 mask estimation 和 detection 是共同做的,而不是先估计 mask 再做 detection。在 FCIS 中 detection/mask estimation 之间通过 inside/outside score map 互相影响,利用了这两个紧密相连 task 之间的共性。现在 release 版本基于支持多卡训练的MXNet,msracver/FCIS。实际上大概今年一月份我们就已经写出了外面可以使用的Caffe版本,但是当时官方 Caffe 只支持单卡做复杂任务的训练,对于COCO这种大规模数据集来说用单卡训练的话一下子几周的时间就过去了。考虑到大家用起来会非常蛋疼,最后还是决定没有release这个版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值