• ROI Pooling 和 ROI Align 的区别
  • Mask R-CNN 网络结构
  • 骨干网络 FPN
  • anchor 锚框生成规则
  • 实验
  • 参考资料

Mask RCNN 是作者 Kaiming He2018 年发表的论文

ROI Pooling 和 ROI Align 的区别

Mask R-CNN 网络结构

Mask RCNN 继承自 Faster RCNN 主要有三个改进:

  • feature map 的提取采用了 FPN 的多尺度特征网络
  • ROI Pooling 改进为 ROI Align
  • RPN 后面,增加了采用 FCN 结构的 mask 分割分支

网络结构如下图所示:

可以看出,Mask RCNN 是一种先检测物体,再分割的思路,简单直接,在建模上也更有利于网络的学习。

骨干网络 FPN

卷积网络的一个重要特征:深层网络容易响应语义特征,浅层网络容易响应图像特征。Mask RCNN 的使用了 ResNetFPN 结合的网络作为特征提取器。

FPN 的代码出现在 ./mrcnn/model.py中,核心代码如下:

if callable(config.BACKBONE):_, C2, C3, C4, C5 = config.BACKBONE(input_image, stage5=True,train_bn=config.TRAIN_BN)
else:_, C2, C3, C4, C5 = resnet_graph(input_image, config.BACKBONE,stage5=True, train_bn=config.TRAIN_BN)
# Top-down Layers
# TODO: add assert to varify feature map sizes match what's in config
P5 = KL.Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (1, 1), name='fpn_c5p5')(C5)
P4 = KL.Add(name="fpn_p4add")([KL.UpSampling2D(size=(2, 2), name="fpn_p5upsampled")(P5),KL.Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (1, 1), name='fpn_c4p4')(C4)])
P3 = KL.Add(name="fpn_p3add")([KL.UpSampling2D(size=(2, 2), name="fpn_p4upsampled")(P4),KL.Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (1, 1), name='fpn_c3p3')(C3)])
P2 = KL.Add(name="fpn_p2add")([KL.UpSampling2D(size=(2, 2), name="fpn_p3upsampled")(P3),KL.Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (1, 1), name='fpn_c2p2')(C2)])
# Attach 3x3 conv to all P layers to get the final feature maps.
P2 = KL.Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (3, 3), padding="SAME", name="fpn_p2")(P2)
P3 = KL.Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (3, 3), padding="SAME", name="fpn_p3")(P3)
P4 = KL.Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (3, 3), padding="SAME", name="fpn_p4")(P4)
P5 = KL.Conv2D(config.TOP_DOWN_PYRAMID_SIZE, (3, 3), padding="SAME", name="fpn_p5")(P5)
# P6 is used for the 5th anchor scale in RPN. Generated by
# subsampling from P5 with stride of 2.
P6 = KL.MaxPooling2D(pool_size=(1, 1), strides=2, name="fpn_p6")(P5)# Note that P6 is used in RPN, but not in the classifier heads.
rpn_feature_maps = [P2, P3, P4, P5, P6]
mrcnn_feature_maps = [P2, P3, P4, P5]

其中 resnet_graph 函数定义如下:

def resnet_graph(input_image, architecture, stage5=False, train_bn=True):"""Build a ResNet graph.architecture: Can be resnet50 or resnet101stage5: Boolean. If False, stage5 of the network is not createdtrain_bn: Boolean. Train or freeze Batch Norm layers"""assert architecture in ["resnet50", "resnet101"]# Stage 1x = KL.ZeroPadding2D((3, 3))(input_image)x = KL.Conv2D(64, (7, 7), strides=(2, 2), name='conv1', use_bias=True)(x)x = BatchNorm(name='bn_conv1')(x, training=train_bn)x = KL.Activation('relu')(x)C1 = x = KL.MaxPooling2D((3, 3), strides=(2, 2), padding="same")(x)# Stage 2x = conv_block(x, 3, [64, 64, 256], stage=2, block='a', strides=(1, 1), train_bn=train_bn)x = identity_block(x, 3, [64, 64, 256], stage=2, block='b', train_bn=train_bn)C2 = x = identity_block(x, 3, [64, 64, 256], stage=2, block='c', train_bn=train_bn)# Stage 3x = conv_block(x, 3, [128, 128, 512], stage=3, block='a', train_bn=train_bn)x = identity_block(x, 3, [128, 128, 512], stage=3, block='b', train_bn=train_bn)x = identity_block(x, 3, [128, 128, 512], stage=3, block='c', train_bn=train_bn)C3 = x = identity_block(x, 3, [128, 128, 512], stage=3, block='d', train_bn=train_bn)# Stage 4x = conv_block(x, 3, [256, 256, 1024], stage=4, block='a', train_bn=train_bn)block_count = {"resnet50": 5, "resnet101": 22}[architecture]for i in range(block_count):x = identity_block(x, 3, [256, 256, 1024], stage=4, block=chr(98 + i), train_bn=train_bn)C4 = x# Stage 5if stage5:x = conv_block(x, 3, [512, 512, 2048], stage=5, block='a', train_bn=train_bn)x = identity_block(x, 3, [512, 512, 2048], stage=5, block='b', train_bn=train_bn)C5 = x = identity_block(x, 3, [512, 512, 2048], stage=5, block='c', train_bn=train_bn)else:C5 = Nonereturn [C1, C2, C3, C4, C5]

anchor 锚框生成规则

在 Faster-RCNN 中可以将 SCALE 也可以设置为多个值,而在 Mask RCNN 中则是每一特征层只对应着一个SCALE 即对应着上述所设置的 16。

实验

何凯明在论文中做了很多对比单个模块试验,并放出了对比结果表格。

从上图表格可以看出:

  • sigmoidsoftmax 对比,sigmoid 有不小提升;
  • 特征网络选择:可以看出更深的网络和采用 FPN 的实验效果更好,可能因为 FPN 综合考虑了不同尺寸的 feature map 的信息,因此能够把握一些更精细的细节。
  • RoI AlignRoI Pooling 对比:在 instance segmentation 和 object detection 上都有不小的提升。这样看来,RoIAlign 其实就是一个更加精准的 RoIPooling,把前者放到 Faster RCNN 中,对结果的提升应该也会有帮助。

参考资料

Mask R-CNN 论文

二阶段目标检测网络-Mask RCNN 详解相关推荐

  1. 单阶段目标检测算法之YOLOv1详解

    官方网站C语言版本:https://pjreddie.com/darknet/yolov1/ tensorflow版本的代码下载: https://github.com/hizhangp/yolo_t ...

  2. 目标检测网络之SPP-net详解

    SPP-net详解: 简要概述:SPP-net网络是基于R-CNN结构改进,且仅在候选区域特征提取,以及特征向量大小转化两个方面做出改进,如详细理解SPP-net请先阅读目标检测开山之作R-CNN详解 ...

  3. 【论文解读】深度学习目标检测的开山鼻祖 |R-CNN详解 | 两阶段目标检测代表

    目录 前言 目标检测近年里程碑 深度学习目标检测 1 R-CNN简介 1.1 何为R-CNN? 1.2 摘要 1.2.1 论文综述 1.2.2 优点汇总 1.2.3 缺点汇总 2. RCNN网络结构解 ...

  4. [深度学习概念]·实例分割模型Mask R-CNN详解

    实例分割模型Mask R-CNN详解 基础深度学习的目标检测技术演进解析 本文转载地址 Mask R-CNN是ICCV 2017的best paper,彰显了机器学习计算机视觉领域在2017年的最新成 ...

  5. 目标检测算法YOLO-V1算法详解

    ❝ 前面我们一起学了SSD算法的相关知识,如下: SSD目标检测算法必须知道的几个关键点 目标检测算法SSD结构详解 ❞ 今天我们学习另一系列目标检测算法YOLO(You Only Look Once ...

  6. 目标检测模型YOLO-V1损失函数详解

    ❝ 上期我们一起学习了YOLOV1算法的原理框架,如下: 目标检测算法YOLO-V1算法详解 今天我们深入一步,一起学习下关于YOLO-V1算法的损失函数和优缺点. ❞ YOLO-V1损失函数 从上期 ...

  7. 详解两阶段3D目标检测网络 Voxel R-CNN:Towards High Performance Voxel-based 3D Object Detection

    本文介绍一篇两阶段的3D目标检测网络:Voxel R-CNN,论文已收录于AAAI 2021. 这里重点是理解本文提出的 Voxel RoI pooling. 论文链接为:https://arxiv. ...

  8. 【动手学PaddlePaddle2.0系列】目标检测理论与YOLOv4详解

    对计算机而言,能够"看到"的是图像被编码之后的数字,所以它很难理解高层语义概念,比如图像或者视频帧中出现的目标是人还是物体,更无法定位目标出现在图像中哪个区域.目标检测的主要目的是 ...

  9. 深度学习-目标检测YOLOV3 YOLOv4原理详解

    2.YoloV3核心基础内容 2.1 网络结构可视化 Yolov3是目标检测Yolo系列非常非常经典的算法,不过很多同学拿到Yolov3或者Yolov4的cfg文件时,并不知道如何直观的可视化查看网络 ...

最新文章

  1. Unicode的前世今生
  2. switch case in protected scope 异常解决
  3. 1.4 异常处理机制及异常处理的基本结构
  4. poj 1020 深搜
  5. path.join 与 path.resolve 的区别
  6. 极客时间App安卓版上线,让知识获取更加简单
  7. C#资源,自定义控件等
  8. STM32——库函数版——交叉闪烁灯程序
  9. 如何用Word打开PDF文件?
  10. 支付宝(蚂蚁金服开放平台)-支付结果异步通知-验签
  11. 知乎上看到一篇有关三门问题比较好的讲解
  12. 01_测试基础知识---微信公众号测试点
  13. Securing Wireless LANs with PEAP and Passwords
  14. 分享宝贵的考研心得, 做到这些,考研无惧暗箱操作!
  15. Docker: USER 指定当前用户
  16. window7取消文件默认打开方式的方法
  17. hbase java编程,HBase编程实例
  18. Amazon Studios预订获奖喜剧《了不起的麦瑟尔夫人》第四季
  19. 固定资产管理需求分析说明书
  20. 【资源共享】DaVinci Developer DaVinci Configurator Pro 加密狗复制

热门文章

  1. 2.深度学习时序建模库PaddleTS教程之TSDataset数据集
  2. Maya/3DMax/RV的集成插件下载
  3. Cocos2d-x C++版仿《王者之剑》实现(v1.0.1版)
  4. wps文字怎么上下居中
  5. SQLEXPR_x64_CHS、SQLEXPRADV_x64_CHS、SQLEXPRWT_x64_CHS、SqlLocalDB、SQLManagementStudio_x64_CHS、SQLServe
  6. 广东工业大学计算机实验室有哪些,广东工业大学重点实验室、研究中心
  7. 电信联通ADSL共享上网检测的原理与实现
  8. python下载安装教程-python下载安装教程
  9. 饥荒mod显示服务器连接失败,饥荒专属服务器添加MOD失败 | 手游网游页游攻略大全...
  10. HomeBrew 安装软件慢的解决方法