Mask RCNN 超详细图文入门(含代码+原文)

这篇具有很好参考价值的文章主要介绍了Mask RCNN 超详细图文入门(含代码+原文)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

代码地址:maskrcnn-benchmark(PyTorch)

我在入门学习计算机视觉的适合,看一些经典的论文原文比较吃力。于是通过看各种参考文献及查阅各路资料,入门的角度写了一些博客,希望能够和大家一起进步。
笔者在阅读《Mask R-CNN》原文后,根据自身理解及查阅资料,以入门角度尽可能想要还原论文细节,水平有限,欢迎交流。

一、实例分割

Mask RCNN 超详细图文入门(含代码+原文)

1.1 从分类到实例分割

  • Classification(分类):只对图像中的主要目标进行分类。
  • Classification + Localization(分类+定位):我们也想知道主要目标的边界框。
  • Objection Detection(目标检测):图像中有多个目标,我们想知道在已知类别中,每个目标的类别及边界框位置。
  • Instance Segmentation(实例分割):得到单个目标的分类结果,并得到每个目标的边界框位置。

1.2 实例分割的背景

语义分割通过对输入图像中每个像素的标签进行预测,给出了较好的推理,例如是前景还是背景。每个像素都根据其所在的对象类进行标记。为了进一步发展,实例分割为属于同一类的对象的单独实例提供了不同的标签。

  • 目标检测:可以区分个体但不够准确。
  • 语义分割:可以划分像素但不可以区分个体。

而实例分割则可以结合二者的优点,对个体的分类及定位更加精准。因此,实例分割可以定义为同时解决目标检测问题和语义分割问题的技术。

二、从RCNN、Fast RCNN、Faster RCNN,到Mask RCNN

入门计算机视觉的目标检测,那么RCNN、Fast RCNN,Faster RCNN的文章是无法避而不谈的。要很好地理解 Mask R-CNN 网络架构,最好从R-CNN来理解。
以下仅仅是对RCNN,Fast RCNN,Faster RCNN的简单回顾,如果需要详细了解,可以学习这篇博客。

2.1 RCNN

Mask RCNN 超详细图文入门(含代码+原文)

  • 在网络的底部,基于非深度学习的选择性搜索 (SS) 用于特征提取以生成 2k 区域建议。
  • 每个riigion proposall(区域提案) 都经过扭曲并通过卷积神经网络(CNN)和最后的支持向量机(SVM),输出分类和边界框。(因此效率很低)
  • (如果感兴趣,可以阅读《Faster RCNN超详细入门 01-准备篇-背景 RCNN,SPPnet,Fast RCNN,RoI Pooling》)

2.2 Fast RCNN

Mask RCNN 超详细图文入门(含代码+原文)

  • 在Fast R-CNN中,区域提议部分仍然使用基于非深度学习的 SS 方法,SS 仍然用于生成 2k 个区域建议。
  • 但是,与R-CNN不同的是,输入整张图像(而非每一个区域)经过 CNN 进行特征提取以生成特征图(这样就相当于共享了参数,提高了速度)。之后根据每个区域提议共享这些特征图以用于 RoI 池化。
  • 对于每个区域提案,在提案上执行 RoI 池化,最终通过网络,即全连接(FC)层。并且不再使用 SVM。
  • 最后,在全连接(FC)层的输出端输出分类和边界框

2.3 Faster RCNN

详细可参考《Faster RCNN超详细入门 02网络细节与训练方法 (anchors,RPN,bbox,bounding box,Region proposal layer……)》

Mask RCNN 超详细图文入门(含代码+原文)

  • 在Faster RCNN中,输入图像通过 CNN。这些特征图将用于区域提议网络(RPN)以生成区域提议,并用于生成特征图以用于稍后的 RoI 池化。
  • 不再使用SS。 因此,整个网络是一个端到端的深度学习网络,对于梯度传播提高目标检测精度至关重要。
  • 与Fast RCNN类似,对于每个 region proposal,RoI pooling 都在proposal 上进行,最后通过网络,即全连接层。最后,输出分类和边界框。
    Mask RCNN 超详细图文入门(含代码+原文)
feature_maps = process(image)
ROIs = region_proposal(feature_maps)
for ROI in ROIs
    patch = roi_pooling(feature_maps, ROI)
    results = detector2(patch)

2.4 Mask RCNN

Mask RCNN 超详细图文入门(含代码+原文)

  • Mask RCNN,架构非常接近Faster RCNN。主要区别在于,在网络的末端,还有另一个头,即上图中的掩码分支,用于生成掩码进行实例分割。还有把Faster RCNN中的ROI Pooling换成了ROIAlign。(3.3会提到)

三、Mask RCNN网络概述

3.1 架构

两阶段

  • 第一阶段:区域提案网络(RPN),提议候选对象边界框。每个区域提案都将经过第二阶段。
  • 第二阶段:对于每个区域提议,第一阶段提出的特征图根据区域进行RoI池化,并通过剩余的网络,输出类别、边界框以及二进制掩码。(在 ROI 池化之后,作者又添加 2 个卷积层来构建掩码。
    Mask RCNN 超详细图文入门(含代码+原文)
    Mask RCNN 超详细图文入门(含代码+原文)

细节

Mask RCNN 超详细图文入门(含代码+原文)

  • RoI Align 网络输出多个边界框,而不是一个确定的边界框,并将它们扭曲成一个固定的维度(利用SSP net)。
  • 然后将扭曲的特征输入全连接层,使用 softmax 进行分类,并使用回归模型进一步细化边界框预测。
  • 扭曲的特征也被输入到 Mask 分类器中,该分类器由两个 CNN 组成,为每个 RoI 输出一个二进制掩码。掩码分类器允许网络为每个类生成掩码,而不会在类之间进行竞争。
    Mask RCNN 超详细图文入门(含代码+原文)

3.2 Loss Function(损失函数)

多任务损失函数:
Mask RCNN 超详细图文入门(含代码+原文)

  • L c l s Lcls Lcls:分类损失,与Faster R-CNN相同。
  • L b o x Lbox Lbox:边界框损失,与Faster R-CNN相同。
  • L m a s k Lmask Lmask:二进制掩码损失。这个掩码分支为每个 RoI 输出 K m 2 Km² Km2,它们是 m × m m × m m×m 分辨率的 K K K 个二进制掩码,代表 K K K 个类。

3.3 ROI Align

原理

Mask RCNN 超详细图文入门(含代码+原文)

Mask R-CNN 的另一个主要贡献是对 ROI pooling的改进。在 ROI 中,卷积图被数字化(上图左上图):目标特征图的单元边界被迫与输入特征图的边界重新对齐。因此,每个目标单元格的大小可能不同(左下图),而这使得物体的预测边框与真实边框存在一个差距,这个差距在大物体检测时,误差可以接受,但在小物体检测时,误差就显得尤为难以接受。Mask R-CNN 使用ROI Align,它不会取整单元格的边界(右上)并使每个目标单元具有相同的大小(右下)。它还应用插值来更好地计算单元格内的特征图值。例如,通过应用插值,现在左上角的最大特征值从 0.8 变为 0.88。

Roi Pooling vs Roi Align

Mask RCNN 超详细图文入门(含代码+原文)

Faster RCNN中的Roi Pooling
  • 首先,我们经过一些卷积层得到了如图左侧的输入特征图。
  • 然后根据region proposal(区域提议),我们使用一个 7×5 的区域作为 RoI Pooling 的输入,以输出 2×2 的特征图。
  • 每个黑色矩形都经过四舍五入以具有整数长度以供以后进行池化。
  • 对于输出特征图的每个值,它们只选取每个黑色矩形的最大值,称为最大池化(Max Pooling)。
    Mask RCNN 超详细图文入门(含代码+原文)
Mask R-CNN 中的 RoIAlign
  • 不是将黑色矩形四舍五入以获得整数长度,而是使用相同大小的黑色矩形。
  • 基于特征图值重叠的区域,取各单元格中心位置,使用双线性插值得到中间池化特征图,如图右下角所示。
  • 然后在这个中间池化特征图上执行最大池化(Max pooling)。

效果

Mask RCNN 超详细图文入门(含代码+原文)

四、Mask RCNN的可视化

参考Image segmentation with Mask R-CNN

可视化 Mask R-CNN/Faster R-CNN 中的一些主要步骤。使用Region proposal network(区域提议网络),我们提出 ROI proposals。下面的虚线矩形是那些提案,但为了演示目的,我们决定只显示那些最终得分高的proposal。
Mask RCNN 超详细图文入门(含代码+原文)

Roi Align(refine前)

这是我们进行最终分类和定位预测时边界框细化后的框。边界框更好地包围了ground truth内的物体。
Mask RCNN 超详细图文入门(含代码+原文)

refine后的边界框

就像 Faster R-CNN 一样,它是基于 RPN (region proposal network)的 ROI(虚线)执行目标分类。实线是最终预测中的边界框细化后的结果。
Mask RCNN 超详细图文入门(含代码+原文)

使用ROI分类(虚线),refine后(实线)

然后,采用非极大值抑制(non-maximum suppression),它对同一类高度重叠的框进行分组,并仅选择置信度最高的预测。这避免了同一目标的重复框选。
Mask RCNN 超详细图文入门(含代码+原文)

使用nms后,实线是细化的边界框

Mask RCNN 超详细图文入门(含代码+原文)

top边界框预测结果

以下是 RPN 使用的输入图片和一些特征图。第一个特征图显示了汽车排队位置的高激活率,也就是说,特征图学到了汽车的部分特征。
Mask RCNN 超详细图文入门(含代码+原文)
边界框的一些边角位置:
Mask RCNN 超详细图文入门(含代码+原文)
以及锚点偏移量的分布:
Mask RCNN 超详细图文入门(含代码+原文)
由上图看出,此次训练主要以x,y方向上的偏移量为主。
以下是根据top类别的,Mask R-CNN的最终预测:
Mask RCNN 超详细图文入门(含代码+原文)文章来源地址https://www.toymoban.com/news/detail-469462.html

Mask R-NNN的最终预测

到了这里,关于Mask RCNN 超详细图文入门(含代码+原文)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MASK-RCNN tensorflow环境搭建

    此教程默认你已经安装了Anaconda,且tensorflow 为cpu版本。为什么不用gpu版本,原因下面解释。 因为tensorflow2.1后的gpu版·,不支持windows。并且·只有高版本的tensorflow才对应我的CUDA12.2; 而且,我之前安装了pytorch跑tolov8,cuda都很高。安装tensorflow-gpu的话,需要重新安装我的cuda,

    2024年02月06日
    浏览(85)
  • 深度学习实例分割篇——Mask RCNN原理详解篇

    🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊专栏推荐:深度学习网络原理与实战 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、收藏⭐、留言📩   Hello,大家好,我是小苏👦🏽👦🏽👦🏽 在前面的文章中,我已经为大家介绍过深度学习

    2024年02月10日
    浏览(30)
  • 【纯小白】动手实现MASK RCNN 实例分割(带全部源码)

    本模型的算法代表为R-CNN,首先生成候选区域(提议区域),然后针对候选区域进行筛选与预测 R-CNN 中文名:区域提议卷积网络 R-CNN大致步骤: 1、通过选择性搜索得到大量的提议区域 2、对每一个提议区域使用卷积网络提取特征,计算特征图。 3、针对每一个特征图训练SVM实现

    2024年02月05日
    浏览(32)
  • 使用Mask-RCNN训练自己的数据集看这一篇就够了,从制作数据集开始一步步教你如何玩转Mask-RCNN(保姆级教程)

    一、安装labelme  深度学习算法等基于神经网络的算法都是基于数据驱动的,数据的好坏会影响你最后生成的模型的好坏,在使用Mask-RCNN时,第一件事就是标注数据集,这里我们默认你已经配置好了anaconda的环境,如果你没有配置好可以参考一下其他人的博客,在已经配置好的

    2024年02月16日
    浏览(45)
  • Pytorch版Mask-RCNN图像分割实战(自定义数据集)

    目录 Mask-RCNN概述 训练自己数据步骤 工具Labelme 标注数据 源码需要改动地方 训练之后的测试结果 Mask R-CNN是一种广泛应用于目标检测和图像分割任务的深度学习模型,它是由Faster R-CNN(一种快速目标检测模型)和Mask R-CNN(一种实例分割模型)组成的。Mask R-CNN将Faster R-CNN中的

    2024年02月10日
    浏览(35)
  • mmdetection 中 Mask Rcnn检测结果可视化(DICE计算、PR曲线绘制等)

    mmdetection中的Mask Rcnn是一个很不错的检测网络,既可以实现目标检测,也可以实现语义分割。官方也有很详细的doc指导,但是对新手来说并不友好,刚好之前笔者写的mmlab系列里面关于可视化都还没有一个详细的文档,也在此一并介绍。 具体怎么制作自己的数据集和训练自己

    2024年02月12日
    浏览(33)
  • 【详细图文教程】VMware 安装 CentOS7及配置静态ip地址

    文章目录 前言 一、安装的前置准备 二、安装与配置静态ip 1.安装CentOS 7 2.配置静态ip 总结 大家好,本篇是我在学习Linux中对安装过程与网络配置的记录,写的不是很好,还请大家多多批评指教! 一、安装的前置准备 虚拟机软件:VMware 下载地址:  个人版:VMware Workstation Pla

    2024年02月06日
    浏览(37)
  • RabbitMQ入门篇【图文并茂,超级详细】

    接下来看看由辉辉所写的关于RabbitMQ的相关操作吧 目录 🥳🥳Welcome 的Huihui\\\'s Code World ! !🥳🥳 前言 1.什么是MQ 2.理解MQ 3.生活案例分析与理解 4.MQ的使用场景 (1)解耦 传统模式 中间件模式 (2)削峰 传统模式 中间件模式 (3)异步  传统模式 中间件模式 5.常见的MQ 一. Rab

    2024年01月20日
    浏览(31)
  • 【算法】顺时针打印矩阵(图文详解,代码详细注释

    目录 题目 代码如下: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则打印出数字:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 这一道题乍一看,没有包含任何复杂的数据结构和高级算法,似乎蛮简单的。但

    2024年04月26日
    浏览(24)
  • Git入门图文教程(深入浅出,详细了解Git,以及操作)

    Git是当前最先进、最主流的 分布式 版本控制系统,免费、开源!核心能力就是版本控制。再具体一点,就是面向代码文件的版本控制,代码的任何修改历史都会被记录管理起来,意味着可以恢复到到以前的任意时刻状态。支持跨区域多人协作编辑,是团队项目开发的必备基

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包