深度学习之Mask-R-CNN

1.1 Mask-RCNN 的网络结构示意图

在这里插入图片描述

  
其中黑色部分为原来的Faster-RCNN,红色部分为在Faster网络上的修改:
  
1)将ROI Pooling层替换成了ROIAlign;
  
2)添加并列的FCN层(Mask层);
  
先来概述一下Mask-RCNN的几个特点(来自于PaperMask R-CNN的Abstract):
  
1)在边框识别的基础上添加分支网络,用于语义Mask识别;
  
2)训练简单,相对于Faster仅增加一个小的Overhead,可以跑到5FPS;
  
3)可以方便的扩展到其他任务,比如人的姿态估计等;
  
4)不借助Trick,在每个任务上,效果优于目前所有的 single-model entries;包括 COCO 2016 的Winners。

1.2 RCNN行人检测框架

  
来看下后面两种RCNN方法与Mask结合的示意图:

在这里插入图片描述

  
图中灰色部分是原来的RCNN结合ResNet or FPN的网络,下面黑色部分为新添加的并联Mask层,这个图本身与上面的图也没有什么区别,旨在说明作者所提出的Mask RCNN方法的泛化适应能力:可以和多种RCNN框架结合,表现都不错。

1.3 Mask-RCNN 技术要点

  
1.技术要点1 - 强化的基础网络
  
通过ResNeXt-101+FPN用作特征提取网络,达到state-of-the-art的效果。
  
2.技术要点2 - ROIAlign
  
采用ROIAlign替代RoiPooling(改进池化操作)。引入了一个插值过程,先通过双线性插值到1414,再pooling到77,很大程度上解决了仅通过Pooling直接采样带来的Misalignment对齐问题。
  
PS: 虽然 Misalignment 在分类问题上影响并不大,但在 Pixel 级别的 Mask 上会存在较大误差。
  
后面我们把结果对比贴出来(Table2 c & d),能够看到 ROIAlign 带来较大的改进,可以看到,Stride 越大改进越明显。
  
3.技术要点3 - Loss Function
  
每个ROIAlign对应K * m^2维度的输出。K对应类别个数,即输出K个mask,m对应池化分辨率(7 * 7)。Loss函数定义:
L m a s k ( C l s k ) = S i g m o i d ( C l s k ) Lmask(Cls_k)=Sigmoid(Cls_k) Lmask(Clsk)=Sigmoid(Clsk)
  
L m a s k ( C l s k ) = S i g m o i d ( C l s k ) Lmask(Cls_k) = Sigmoid (Cls_k) Lmask(Clsk)=Sigmoid(Clsk),平均二值交叉熵 (average binary cross-entropy)Loss,通过逐像素的 Sigmoid 计算得到。
  
Why K个mask?通过对每个 Class 对应一个Mask可以有效避免类间竞争(其他Class不贡献Loss)。

在这里插入图片描述

  
通过结果对比来看(Table2 b),也就是作者所说的 Decouple 解耦,要比多分类的Softmax效果好很多。
  
另外,作者给出了很多实验分割效果,就不都列了,只贴一张和FCIS的对比图(FCIS出现了Overlap的问题)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值