天天看點

【執行個體分割系列:三】Mask Scoring R-CNNIntroductionMask RCNNNetwork問題PytorchReferences

2019 CVPR Oral

Mask Scoring R-CNN

Mask Scoring R-CNN

  • Introduction
  • Mask RCNN
  • Network
    • MaskIoU head
  • 問題
      • 網絡是如何訓練的?
      • 網絡是如何 inference ?
  • Pytorch
  • References

Introduction

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

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

【執行個體分割系列:三】Mask Scoring R-CNNIntroductionMask RCNNNetwork問題PytorchReferences

解決: 模型學習每個 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預測。
【執行個體分割系列:三】Mask Scoring R-CNNIntroductionMask RCNNNetwork問題PytorchReferences

Network

【執行個體分割系列:三】Mask Scoring R-CNNIntroductionMask RCNNNetwork問題PytorchReferences

網絡子產品 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相乘得到最終的得分:

S m a s k ​ = S c l s × S i o u S_{mask}​ = S_{cls} × S_{iou} Smask​​=Scls​×Siou​​

【執行個體分割系列:三】Mask Scoring R-CNNIntroductionMask RCNNNetwork問題PytorchReferences

問題

網絡是如何訓練的?

  • 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推理過程 。
    • 論文中也遵循這個過程,并送入 k 個 target mask 用于估計 MaskIoU 。估計得到的 MaskIoU 乘上 classification score,得到矯正後的 mask score 作為最終的 mask confidence。[3]
【執行個體分割系列:三】Mask Scoring R-CNNIntroductionMask RCNNNetwork問題PytorchReferences
【執行個體分割系列:三】Mask Scoring R-CNNIntroductionMask RCNNNetwork問題PytorchReferences

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

繼續閱讀