【閱讀筆記】《Mask Scoring R-CNN》(MaskRCNN)

本文記錄了博主閱讀論文《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: 定義smask\text s_{\text{mask}}爲score of the predicted mask,其概念與predicted mask和對應的ground truth mask之間的像素級IoU等同,前文稱作MaskIoU。因爲一個mask只能屬於一個類別,因此smask\text s_{\text{mask}}應該對於真值類別只包含正數,其他類別全是0。這就要求mask score應該在這兩項任務中都表現良好:分類到正確類別,將proposal的MaskIoU迴歸到前景目標類別。

只用一個目標函數來訓練兩個任務是很難的,爲了簡化,論文中將mask score learning task分解成mask classification和IoU regression,用smask=sclssiou\text s_{\text {mask}}=\text s_{\text {cls}}\cdot\text s_{\text{iou}}代表所有目標類別。scls\text s_{\text {cls}}專注解決proposal屬於哪個類別,siou\text s_{\text{iou}}解決MaskIoU的迴歸。

對於scls\text s_{\text {cls}},在R-CNN階段已經解決了分類問題,因此可以直接用對應的classification score。迴歸siou\text s_{\text{iou}}是這篇論文的目標。

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用的是l2\mathscr{l}_2損失,損失權重爲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)的融合。下圖是幾種選擇:
在這裏插入圖片描述
解釋如下:

  1. Target mask concatenates RoI feature:選擇目標類別的score map,進行max pool之後與RoI特徵級聯;
  2. Target mas multiplies RoI feature:選擇目標類別的score map,進行max pool之後與RoI特徵相乘;
  3. All masks concatenates RoI feature:所有C個類別的mask score map都進行max pool,之後與RoI特徵級聯;
  4. Target mask concatenates High-resolution RoI feature:選擇目標類別的score map再與28x28的RoI特徵級聯。

下表爲結果:
在這裏插入圖片描述
The choices of the training target:
在這裏插入圖片描述
下表爲結果:
在這裏插入圖片描述

如何選取訓練樣本:
MaskIoU不超過0.5。給定閾值τ\tau,有如下結果:
在這裏插入圖片描述

Discussion

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

Conclusion

在這裏插入圖片描述
更多內容,歡迎加入星球討論。
在這裏插入圖片描述

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