本文記錄了博主閱讀論文《Mask Scoring R-CNN》的筆記,代碼。更新於2019.04.19。
文章目錄
Abstract
用於實例分割。
Introduction
主要貢獻:
- 文中提出的Mask Scoring R-CNN是首個解決scoring instance segmentation hypothesis問題的架構,提供了實例分割提升精度的新方向。考慮到instance mask的完整性,score of instance mask在高分類score而mask不好的情況下可以被懲罰。
- MaskIoU head簡單有效。在COCO數據庫下,使用MS R-CNN可以提升AP約1.5%。
Related Work
Instance Segmentation
Detection Score Correction
Method
Motivation
在Mask R-CNN中,score of a detection(也就是實例分割)是由分類score中最大值決定的。但是由於背景混亂、遮擋等問題,很有可能分類score很高但是mask效果很差,如下圖所示:
下圖比較中使用的是Mask R-CNN with ResNet-18 FPN,COCO 2017 驗證集。比較顯示,classification score和MaskIoU在Mask R-CNN中沒有多少相關性。
Mask scoring in Mask R-CNN
Mask Scoring R-CNN在概念上還是相對簡單的:即帶有MaskIoU Head的Mask R-CNN,其輸入爲實例特徵和predicted mask,隨後估計輸入mask和真值mask之間的IoU,如下圖所示。
Mask R-CNN: 先簡單回顧一下Mask R-CNN。在Faster R-CNN之後,Mask R-CNN包括兩個階段。第一階段是Region Proposal Network(RPN),其提供無類別的candidate object bounding boxes;第二階段稱爲R-CNN階段,其通過RoIAlign提取每個proposal的特徵,並進行proposal分類、bounding box迴歸和mask估計。
Mask scoring: 定義爲score of the predicted mask,其概念與predicted mask和對應的ground truth mask之間的像素級IoU等同,前文稱作MaskIoU。因爲一個mask只能屬於一個類別,因此應該對於真值類別只包含正數,其他類別全是0。這就要求mask score應該在這兩項任務中都表現良好:分類到正確類別,將proposal的MaskIoU迴歸到前景目標類別。
只用一個目標函數來訓練兩個任務是很難的,爲了簡化,論文中將mask score learning task分解成mask classification和IoU regression,用代表所有目標類別。專注解決proposal屬於哪個類別,解決MaskIoU的迴歸。
對於,在R-CNN階段已經解決了分類問題,因此可以直接用對應的classification score。迴歸是這篇論文的目標。
MaskIoU head: MaskIoU head旨在迴歸predicted mask和其ground truth mask之間的IoU,其輸入是RoIAlign層的級聯特徵和predicted mask。在級聯的時候,用的是尺寸爲2步長爲2的max pooling使得predicted mask與RoIAlign特徵尺寸相同。迴歸時,只處理真值類別(或測試時處理估計類別)而非全部類別。MaskIoU head包括4層卷積層和3層全連接層,其中卷積層遵從Mask head,尺寸爲3,通道數爲256;全連接層遵循RCNN head,前兩層神經元個數爲1024,最後一層爲類別數。
訓練: 訓練MaskIoU head時,用RPN proposals作爲訓練樣本。訓練樣本要求proposal box和對應的ground truth box之間有大於0.5的IoU(跟訓練Mask R-CNN的Mask head時相同)。爲了給每個樣本生成regression target,首先獲取目標類別的predicted mask,再用閾值0.5將其二值化。
隨後,用binary mask和對應的ground truth計算MaskIoU作爲MaskIoU target。迴歸MaskIoU用的是損失,損失權重爲1。提出的MaskIoU head整合在Mask R-CNN中,整個網絡端到端訓練。
推斷(inference): 在推理階段,只應用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。
Experiments
所有實驗都在COCO數據集上完成,有80個目標類別。用115k張訓練,5k張驗證,20k張測試。度量:
Implementation Details
ResNet-18 FPN(用於對比):輸入尺寸600x(<1000)
ResNEt-50/101:輸入尺寸800x1333
所有算法訓練18個epoch,14個epoch和17個epoch後學習率下降率爲0.1。
Quantitative Results
Ablation Study
所有剝離實驗用的都是ResNet-18 FPN結構。
The design choices of MaskIoU head input: 首先研究了設計的選擇,即從mask head和RoI特徵到predicted mask score map(28x28xC)的融合。下圖是幾種選擇:
解釋如下:
- Target mask concatenates RoI feature:選擇目標類別的score map,進行max pool之後與RoI特徵級聯;
- Target mas multiplies RoI feature:選擇目標類別的score map,進行max pool之後與RoI特徵相乘;
- All masks concatenates RoI feature:所有C個類別的mask score map都進行max pool,之後與RoI特徵級聯;
- Target mask concatenates High-resolution RoI feature:選擇目標類別的score map再與28x28的RoI特徵級聯。
下表爲結果:
The choices of the training target:
下表爲結果:
如何選取訓練樣本:
MaskIoU不超過0.5。給定閾值,有如下結果:
Discussion
Conclusion
更多內容,歡迎加入星球討論。