CVPR2019-实例分割Mask Scoring R-CNN

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

论文:Mask Scoring R-CNN【paper】【github】

1. 提出背景

     Mask RCNN 提出以来,一直是作为经典霸屏,但这里面一直存在一个严重的问题,那就是其score机制:

     由于沿用了 Faster RCNN 的 class和box,对应class是类别score,并不能代表mask的好坏,看下图:

CVPR2019-实例分割Mask Scoring R-CNN_第1张图片

2. 算法框架

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

CVPR2019-实例分割Mask Scoring R-CNN_第2张图片

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

Smask​ = Scls​ ∗ Siou​

  • 训练阶段

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

     1)对于新增的IoU分支,训练样本是RPN的正样本(负样本只参与分类),与Mask分支一致;

          定义正样本为RPN的Box与Ground Truth的IoU大于0.5。

     2)针对得到的Mask结果,根据阈值(文中是0.5)做二值化,计算二值化结果 和 Ground Truth的mask IoU;

         当二值化mask结果与GT一致时,Loss = 1 - Mask IoU = 0

         这里的二值化可以考虑修改一下,比如采用soft mask的方案

     3)3个head分支同时训练。

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

  • 推理阶段

     1)对于输出的box做soft-NMS处理后,得到score top-k(文中k=100)的box;

           这一步和mask RCNN并无区别,根据输出box映射到mask 分支,获取对应的分割图。

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

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

3. 测试效果

    测试效果很不错,请看大屏幕:

CVPR2019-实例分割Mask Scoring R-CNN_第3张图片

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

CVPR2019-实例分割Mask Scoring R-CNN_第4张图片

你可能感兴趣的:(机器学习,计算机视觉,深度学习)