神经网络的认识(十二)Mask-RCNN

https://blog.csdn.net/WZZ18191171661/article/details/79453780

在这里插入图片描述

Mask-RCNN 的网络结构示意:
在这里插入图片描述
其中 黑色部分为原来的 Faster-RCNN, 红色部分为在 Faster 网络上的修改:
1) 将 Roi Pooling 层替换成了 RoiAlign;
2) 添加并列的 FCN 层(mask 层);
先来概述一下 Mask-RCNN 的几个特点(来自于 Paper 的 Abstract):
1)在边框识别的基础上添加分支网络,用于 语义 Mask 识别;
2)训练简单,相对于 Faster 仅增加一个小的 Overhead,可以跑到 5FPS;
3)可以方便的扩展到其他任务,比如人的姿态估计 等;
4) 不借助 Trick, 在每个任务上, 效果优于目前所有的 single-model entries;
在这里插入图片描述
图中灰色部分是 原来的 RCNN 结合 ResNet or FPN 的网络,下面黑色部分为新添加的并联 Mask 层,这个图本身与上面的图也没有什么区别,旨在说明作者所提出的Mask RCNN 方法的泛化适应能力 - 可以和多种 RCNN 框架结合,表现都不错。
Mask-RCNN 技术要点

  • 技术要点 1 - 强化的基础网络
    通过 ResNeXt-101+FPN 用作特征提取网络, 达到 state-of-the-art 的效果。
  • 技术要点 2 - ROIAlign
    采用 ROIAlign 替代 RoiPooling(改进池化操作) 。引入了一个插值过程,先
    通过双线性插值到 14*14,再 pooling 到 7*7,很大程度上解决了仅通过 Pooling 直接采样带来的 Misalignment 对齐问题。
    PS: 虽然 Misalignment 在分类问题上影响并不大, 但在 Pixel 级别的 Mask上会存在较大误差。ROIAlign 带来较大的改进, Stride 越大改进越明显。
  • 技术要点 3 - Loss Function
    每个 ROIAlign 对应 K * m^2 维度的输出。 K 对应类别个数,即输出 K 个
    mask, m 对应 池化分辨率(7*7)。 Loss 函数定义:
    Lmask(Cls_k) = Sigmoid (Cls_k), 平均二值交叉熵(average binary cross-entropy) Loss,通过逐像素的 Sigmoid 计算得到。
    Why K 个 mask? 通过对每个 Class 对应一个 Mask 可以有效避免类间竞争(其他 Class 不贡献 Loss )。
    在这里插入图片描述
发布了163 篇原创文章 · 获赞 117 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/u010095372/article/details/91347888