Mask RCNN详解

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

1.Mask RCNN网络结构

        Mask R-CNN是对Faster R-CNN的直观扩展,网络的主干有RPN转换为主干网络为ResNet的特征金字塔网络(FPN),同时添加了一个分支用于预测每个感兴趣区域(RoI)上的分割掩模,与现有的用于分类和边界盒回归的分支并行(图1)。掩模分支是一个应用于每个RoI的小FCN,以像素-顶像素的方式预测分割掩模。但是,Faster RCNN并不是为网络输入和输出之间的像素对像素对齐而设计的。这一点最明显的是RoIPool[18,12],事实上的处理实例的核心操作,如何执行特征提取的粗空间量化。为了解决这种错位,网络使用了一个简单的、无量化的层,称为RoI Align,它忠实地保留了精确的空间位置。

Mask RCNN详解

1.backbone

Backbone采用的是主干网络为ResNet-50或者ResNet-101的RPN,作为特征提取器提取特征,  特征金字塔(Feature Pyramid Networks, FPN)的基本思想是通过构造一系列不同尺度的图像或特征图进行模型训练和测试,目的是提升检测算法对于不同尺寸检测目标的鲁棒性。FPN构造特征包括自下而上(bottom-up)、自上而下(top-down)以及同层连接3个过程,自下而上的过程实质上是卷积网络前向传播的过程。         自上而下的过程实质上是通过把上层的特征图进行尺度变换,来构造新的特征图,新的特征图需要和下层的特征图保持一致的尺度,从而保证特征图可以融合在一起。在长、宽方向上,采用向上采样(upsample)的方法,和下层特征图的宽、高拉成一样大小;在深度方向上,通过一个1×1的卷积,把上层特征图的深度压缩到和下层特征图的深度相同。 经过自上而下的过程,基于上层特征图构建的新特征图和原始的下层特征图具有了同样的尺度。如图2所示,先把新的特征图和原始的下层特征图中每个对应元素相加(element-wise add),就实现了上层特征和下层特征的融合,再把融合后的每层特征图都输出为一个深度为d(比如d=256)的新特征图。这样就把深层特征融合到浅层特征中,就兼顾了细节和整体,融合后的特征会具有更为丰富的表达能力。 2.RPN(Region Proposal Network)

        与faster rcnn一样,网络使用区域建议网络(RPN)获得建议框,RPN对先验框进行回归,同时预测先验框中是否存在物体获得建议框,再将建议框馈送至分类和回归模块,获取物体的预测框与分类。

3.ROI Align

现在我们得到了图一所示的proposals后,我们需要清楚一个问题,那就是框的大小是不一样的,而不同大小的框代表了特征图上不同大小的区域,而全连接层的使用意味着我们得将框所代表的特征图区域统一为一个尺寸。这也就是ROI Align的作用。

我们需要把所有的ROI都pooling成相同大小的feature map后,才能将它reshape 成一个一维的向量,从而完成后面的分类与回归任务。

与Faster rcnn中的ROI pooling不同,使用ROI pooling会造成较大的量化误差,这对于分割任务来说会造成较大的误差,因此maskrcnn中对ROI pooling进行了改进,提出了ROI Align。

假如现在有一个8×8的feature map,如下图所示,现在希望得到2x2的输出,有一个bbox坐标为[0,3,7,8]。

Mask RCNN详解

这个bbox的w=7,h=5,如果要等分成四块是做不到的,因此在ROI Pooling中会进行取整。就有了上图看到的h被分割为2,3,w被分割成3,4。这样之后在每一块中做max pooling,可以得到下图的结果。

Mask RCNN详解

这样就可以将任意大小bbox转成2x2表示的feature。

但我们可以看见,ROI Pooling需要取整,这样的取整操作进行了两次,一次是得到bbox在feature map上的坐标时。

例如:原图上的bbox大小为665x665,经backbone后,spatial scale=1/32。因此bbox也相应应该缩小为665/32=20.78,但是这并不是一个真实的pixel所在的位置,因此这一步会取为20。0.78的差距反馈到原图就是0.78x32=25个像素的差距。如果是大目标这25的差距可能看不出来,但对于小目标而言差距就比较巨大了。

因此有人提出不需要进行取整操作,如果计算得到小数,也就是没有落到真实的pixel上,那么就用最近的pixel对这一点虚拟pixel进行双线性插值,得到这个“pixel”的值。

Mask RCNN详解

ROI Align操作步骤为:

1.将bbox区域按输出要求的size进行等分,很可能等分后各顶点落不到真实的像素点上

2.在每个块中再取固定的4个点,也就是图6右侧的蓝色点,针对每一个蓝点,距离它最近的4个真实像素点的值加权(双线性插值),求得这个蓝点的值

3.一个块内会算出4个新值,在这些新值中取max,作为这个块的输出值,最后就能得到2x2的输出。

根据maskrcnn论文所述,我们通过ROI Align可以把我们RPN生成并筛选后的框所对应的区域全部变成我们需要大小的特征图。而最后的任务就是对这些特征图来做进一步的分类、定位,分割了。

分类和定位和RPN里面的分类定位原理相同,这里主要说明一下分割。如图7所示,在得到ROI Align操作后的特征后,由于前面进行了多次卷积和池化,减小了对应的分辨率,mask分支开始利用反卷积进行分辨率的提升,同时减少通道的个数,maskrcnn使用到了FPN网络,通过输入单一尺度的图片,最后可以对应的特征金字塔,首先将ROI变化为14x14x256的feature,然后进行了5次相同的卷积操作,然后进行反卷积操作,最后输出28x28x80的mask,即输出了更大的mask。

Mask RCNN详解

 4.网络头部

        Faster R-CNN对每个候选对象有两个输出,一个类标签和一个边界框偏移量;Mask RCNN添加了第三个输出对象掩码的分支。 

         每个采样RoI上的多任务损失定义为L=Lcls+Lbox+Lmask。分类损失Lcls和边界框损失Lbox与[12]中定义的相同。掩码分支为每个RoI有一个维度的输出,它编码K个分辨率为m×m的二进制掩码,每个K个类一个。为此,我们应用每像素s型,并将Lmask定义为平均二进制交叉熵损失。对于与地面真实类k相关联的RoI,Lmask只定义在第k个掩码上(其他掩码输出不会造成损失)。
        对Lmask的定义允许网络为每个类生成掩码,而无需类之间的竞争;我们依赖于专用的分类分支来预测用于选择输出掩码的类标签。这可以解耦掩码和类预测。这与将FCNs[30]应用于语义分割时的常见做法不同,后者通常使用每像素的softmax和多项式交叉熵损失。在这种情况下,跨类的掩码相互竞争;在我们的例子中,对于每像素的s型和二进制损失,它们不会。实验结果表明,该公式是获得良好的实例分割结果的关键。

5.训练网络

        

        就像在FastR-CNN中一样,如果一个 ROI有一个IoU至少为0.5的真实框,则被认为是正的,否则是负的。mask loss Lmask仅在正RoI上定义。掩码目标是RoI与其相关的地面真实掩模之间的交集。

        训练采用以图像为中心的训练。图像的调整使其比例(较短的边缘)为800像素。每个批次每个GPU有2张图像,每张图像有N个采样roi,正[12]与负[12]的比例为1:3。C4主干N为64,FPN N为512。在8个gpu(有效小批量大小为16)上进行160k迭代训练,学习速率为0.02,在120k次迭代时学习率降低为原来的1/10。使用的权重衰减为0.0001,动量为0.9。使用ResNeXt[45],为每个GPU训练1张图像和相同次数的迭代,起始学习率为0.01。
 文章来源地址https://www.toymoban.com/news/detail-410257.html

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

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

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

相关文章

  • 基于Faster R-CNN实现目标检测

    杨金鹏,男,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件:1394026082@qq.com 路治东,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组 研究方向:机器视觉与人工智能 电子邮件:2063079527@qq.com Faster RCNN检测部分主要

    2024年02月07日
    浏览(62)
  • Mask RCNN网络结构以及整体流程的详细解读

    Mask RCNN是在Faster RCNN的基础上增加了mask head用于实例分割的模型。 总体来说,Mask RCNN网络结构可以分为: BackBone(ResNet+FPN) — RPN网络(Region Proposal Network) — ROI Head(ROIAlign + cls head + bbox head + mask head) 整体网络结构如下(来自原论文https://arxiv.org/pdf/1703.06870.pdf): Backbone主要由R

    2024年02月13日
    浏览(39)
  • 【图解】Mask R-CNN 架构

     Mask R-CNN 是一种自顶向下(top-down)的姿态估计模型,它是在 Faster R-CNN [44] 这个目标检测框架的基础上扩展而来的。目标检测是指从图像中检测出不同类别的物体,并且输出它们的边界框(bounding box)。 Mask R-CNN 的结构包括一个标准的基础 CNN,通常是一个 ResNet [18] ,用于从

    2024年02月14日
    浏览(31)
  • 保姆级 Keras 实现 Faster R-CNN 十一

    上一篇 文章中我们实现了 ProposalLayer 层, 它将的功能是输出建议区域矩形. 本文要实现另一个自定义层 RoiPoolingLayer. 在 Faster R-CNN 中, RoiPooling 层的目的是将不同大小的感兴趣区域(Region of Interest, ROI) 转换为固定大小的特征图作为后续步骤的输入 还是先把论文中的图贴出来 上图

    2024年02月10日
    浏览(53)
  • 目标检测经典工作发展(超详细对比):R-CNN vs SPPNet vs Fast R-CNN vs Faster R-CNN

    网上关于两阶段目标检测(two-stage object detection)的几个经典工作R-CNN,SPPNet,Fast R-CNN,Faster R-CNN的发展,各自的优缺点缺乏一个比较清楚的描述,大部分文章讲的比较细节,虽然有助于更为详细地了解文章,但是让读者在短时间内对各个文章有一个详细的理解。本文主要对

    2024年02月09日
    浏览(62)
  • 实例分割论文精读:Mask R-CNN

    本文提出了一种概念简单、灵活、通用的实例分割方法,该方法在有效地检测图像中的物体同时,为每个物体实例生成一个实例分割模板,添加了一个分支,用于预测一个对象遮罩,与现有的分支并行,用于边界框识别,Mask R-CNN易于训练,只给Faster R-CNN增加了很小的开销,运

    2024年02月01日
    浏览(39)
  • 探索常见经典目标检测算法:从YOLO到Faster R-CNN

    目标检测是计算机视觉领域中的重要任务之一,它旨在从图像或视频中检测出目标的位置和类别。随着深度学习技术的发展,许多经典的目标检测算法相继出现,其中包括YOLO(You Only Look Once)、Faster R-CNN(Region-based Convolutional Neural Networks)等。本文将深入介绍这些常见的目标

    2024年04月26日
    浏览(40)
  • 基于深度学习的3D城市模型增强【Mask R-CNN】

    在这篇文章中,我们描述了一个为阿姆斯特丹 3D 城市模型自动添加门窗的系统(可以在这里访问)。 计算机视觉用于从城市全景图像中提取有关门窗位置的信息。 由于这种类型的街道级图像广泛可用,因此该方法可用于较大的地理区域。 推荐:用 NSDT编辑器 快速搭建可编程

    2024年02月13日
    浏览(44)
  • 遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)

    我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时代已然来临。随着小

    2024年02月22日
    浏览(51)
  • 2023 Mask R-CNN 改进:DynaMask: Dynamic Mask Selection for Instance Segmentation 论文笔记

    写在前面   本周更新的第二篇论文阅读,2023年每周一篇博文,还剩5篇未补,继续加油~ 论文地址:DynaMask: Dynamic Mask Selection for Instance Segmentation 代码地址:https://github.com/lslrh/DynaMask 收录于:CVPR 2023 欢迎关注,主页更多干货,持续输出中~   一般的实例分割通常采用固定

    2024年02月01日
    浏览(86)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包