【實例分割系列:三】Mask Scoring R-CNN

2019 CVPR Oral

Mask Scoring R-CNN

Introduction

問題:分類置信度 與 Mask IOU 的偏差

( Mask RCNN 是對每個類別獨立地預測一 個二值掩模 ,沒有引入 類間競爭 , 每個二值掩模 的類別依靠 網絡RoI分類分支給出的 分類 score 。但是,由下圖可見 ,分類 score 與 MaskIoU 的相關性並不好. )

解決: 模型學習每個 Mask 與 gt 之間的 IOU score 乘 分類 score 。

  • 實例分割利用預測 Mask 與 groud truthMask 之間的像素級 IoU 來描述實例分割質量,提出了一種直接學習 IoU 的網絡。( MaskIoU )

  • 一旦我們在測試階段得到了預測的 Mask 分數,通過將預測的 Mask 分數與分類分數相乘 來重新評估Mask分數。因此,Mask Score 同時考慮語義類別和實例 Mask 的完整性

Mask RCNN

Mask RCNN 簡單回顧

  • 第一階段是區域建議網絡(RPN)。它提出了候選對象邊界框,而不考慮對象類別。
  • 第二階段稱爲R-CNN階段,對每個proposal使用RoIAlign提取特徵,並進行proposal分類、bbox 迴歸和Mask預測。

Network

網絡模塊 MaskIoU head 把 Mask Head 的輸出(預測)與 pooling 後的 ROI 的特徵 作爲該分支的輸入,去迴歸 mask IOU。

MaskIoU head

論文中將 mask score learning task 分解成 mask classification 和 IoU regression,如上圖

  • 在Mask head的基礎上,加了一個分支,將 ROI對齊後的特徵 與得到的 Mask 做了一個 concat
  • 然後通過卷積層+全連接層,得 到IoU Score
  • 最後通過score相乘得到最終的得分:

Smask=Scls×SiouS_{mask}​ = S_{cls} × S_{iou}

問題

網絡是如何訓練的?

  • MaskIoU 分支,訓練樣本是RPN的正樣本(負樣本只參與分類),與Mask分支一致;

定義正樣本爲 RPN的Box 與 Ground Truth 的 IoU 大於0.5。

  • 針對得到的Mask結果,根據閾值(文中是0.5)做二值化,計算二值化結果 和 Ground Truth的mask IoU;

  • 3個head分支同時訓練。

這裏作者試驗了多個head,根據試驗效果最後選擇當前head ,下圖(a)

網絡是如何 inference ?

  • 對於輸出的box做soft-NMS處理後,得到score top-k(文中k=100)的box;
    這一步和mask RCNN並無區別,根據輸出box映射到mask 分支,獲取對應的分割圖。

  • 將得到的分割圖送入mask IoU分支,計算對應得分;

  • 僅使用 MaskIoU head 校正 R-CNN 生成的 classification score

    • 具體來講,假設 Mask R-CNN 的 R-CNN 階段輸出 N個bounding box,選中其中應用 SoftNMS 之後的前 k(k=100)個 scoring box
    • 之後,這 k 個box被送入 Mask head 用於生成 multi-class mask。這是標準的 Mask R-CNN推理過程 。
    • 論文中也遵循這個過程,並送入 ktarget mask 用於估計 MaskIoU 。估計得到的 MaskIoU 乘上 classification score,得到矯正後的 mask score 作爲最終的 mask confidence。[3]

Pytorch

maskscoring_rcnn[PyTorch]

References

[1] 性能超越何愷明Mask R-CNN!華科碩士生開源圖像分割新方法
[2] https://blog.csdn.net/weixin_37993251/article/details/88248361
[3]https://blog.csdn.net/ShuqiaoS/article/details/89152728

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