查看原文
其他

CVPR2019-实例分割Mask Scoring R-CNN

linolzhang OpenCV学堂 2020-02-04

点击上方↑↑↑“OpenCV学堂”关注我

欢迎留言,参与互动讨论,发表自己的看法

作者博客: https://blog.csdn.net/linolzhang

今年的Oral,在coco数据集表现超过了Mask RCNN,来自地平线的华科实习生。 

提出背景

Mask RCNN 提出以来,一直是作为经典霸屏,但这里面一直存在一个严重的问题,那就是其score机制:由于沿用了 Faster RCNN 的 class和box,对应class是类别score,并不能代表mask的好坏,看下图:


算法框架

问题提出来,很简单的想法就是,我能否加一个分支预测mask部分的score呢?比如用IoU来度量。

思路很简单,在Mask head的基础上,加了一个分支,将ROI对齐后的特征与得到的Mask做了一个concat,然后通过卷积层+全连接层,得到IoU Score,最后通过score相乘得到最终的得分:

Smask = Scls ∗ Siou


来看网络是如何训练的?给几个key point:

  • 对于新增的IoU分支,训练样本是RPN的正样本(负样本只参与分类),与Mask分支一致;定义正样本为RPN的Box与Ground Truth的IoU大于0.5。

  • 针对得到的Mask结果,根据阈值(文中是0.5)做二值化,计算二值化结果 和 Ground Truth的mask IoU;当二值化mask结果与GT一致时,Loss = 1 - Mask IoU = 0这里的二值化可以考虑修改一下,比如采用soft mask的方案。

  • 3个head分支同时训练。


这里作者试验了多个head,根据试验效果最后选择当前head,这里也有改进的空间,大家可以好好分析一下。推理阶段

  • 对于输出的box做soft-NMS处理后,得到score top-k(文中k=100)的box;这一步和mask RCNN并无区别,根据输出box映射到mask 分支,获取对应的分割图。

  • 将得到的分割图送入mask IoU分支,计算对应得分;

  • 仅使用Mask IoU的score来矫正class core,能够整体反应分割的够不够好;


测试效果

测试效果很不错,请看下图:

在COCO 2017数据集上的表现(不同backbone上均有显著提升):

论文:Mask Scoring R-CNN

Paper URL: https://arxiv.org/abs/1903.00241
github URL: https://github.com/zjhuang22/maskscoring_rcnn


往期精选


关注【OpenCV学堂】

长按或者扫码即可关注

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存