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的好壞,看下圖:

2. 算法框架

    問題提出來,很簡單的想法就是,我能否加一個分支預測mask部分的score呢?比如用IoU來度量。

     思路很簡單,在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. 測試效果

    測試效果很不錯,請看大屏幕:

     在CoCo數據集上的表現(不同backbone上均有顯著提升):

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章