Mask R-CNN(ICCV2017 best paper)

(关于Mask R-CNN的简介)

论文:https://arxiv.org/abs/1703.06870
github:https://github.com/facebookresearch/detectron2

推荐解析:

个人认为Mask R-CNN是一个思想简单但效果拔群的框架,其共有三个设计要点:

  1. 将Faster R-CNN中的ROI Pooling替换为ROI Align
    ROI Pooling是基于检测框在feature map中通过下采样提取关键特征的操作,不过由于其经过了两次量化操作(如下图),这就影响了模型的准确度(作者将其称为“mismatch”),即量化后的ROI已经和原本的ROI产生了一定偏差。
    在这里插入图片描述
    所以,作者提出ROI Align算法,其中不涉及量化操作,而是在计算过程中保留浮点数,并利用“双线性插值”+“MaxPooling”来获取下采样的采样点,从而缓解ROI Pooling中的mismatch问题。
    在这里插入图片描述
  2. 为Faster R-CNN并行地增加了mask分支
    为了增加实例分割功能,作者基于Faster R-CNN框架(并用ROI Align替换ROI Pooling),并行地增加了mask分支(在ROI后添加卷积层),见下图:
    在这里插入图片描述
  3. 损失函数 L = Lcls + Lbox + Lmask.
    损失函数由类别损失、检测框损失、分割损失三部分组成,前两者与Faster R-CNN无异,不过作者对Lmask的设计别具匠心(Lbox和Lmask都是对positive ROI才起作用)。mask支路对每个ROI的输出维度是Kmm,其中K表示K个类别,mm表示mask的大小。在计算损失时(cross-entropy),只有ground truth对应的那一个mask(mm)被使用,其他mask对Lmask不产生影响(在测试阶段,通过分支预测的类别来选择对应的mask)。这样的操作,其实是将“mask任务”与“分类任务”进行解耦(decouple)了,从而避免了类内竞争(competition among classes)。或者说,既然bbox分支已经判定该区域为一个实例,进行mask预测时便没必要再关心类别信息了,这可以使得模型的学习更加简单有效。
  • 消融实验
    作者进行了大量的消融实验来证明其方法的有效性,从下表可以看到ROI Align及Lmask等策略设计的有效性。
    在这里插入图片描述

  • 总结
    Mask R-CNN是一个设计巧妙的多功能模型,除了上述的检测、实例分割外,它还可以拓展到关键点检测(人体姿态估计)等任务上,并有不俗的表现。并行分支结构使mask分支专门处理分割任务而不需考虑类别信息,从而简化了模型的学习难度;ROI Align巧妙地去除了ROI Pooling中粗燥的量化过程,从而提高了模型的学习精度;Lmask则是从损失函数进行切入,用sigmoid代替传统的softmax来简化mask任务。相信这些思路能为我们未来的学习研究带来一定的启迪。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值