1. 程式人生 > >Mask R-CNN個人理解

Mask R-CNN個人理解

1 簡述

Mask R-CNN是一個小巧、靈活的通用物件例項分割框架(object instance segmentation)。它不僅可對影象中的目標進行檢測,還可以對每一個目標給出一個高質量的分割結果。它在Faster R-CNN[1]基礎之上進行擴充套件,並行地在bounding box recognition分支上新增一個用於預測目標掩模(object mask)的新分支。該網路還很容易擴充套件到其他任務中,比如估計人的姿勢,也就是關鍵點識別(person keypoint detection)。該框架在COCO的一些列挑戰任務重都取得了最好的結果,包括例項分割(instance segmentation)、候選框目標檢測(bounding-box object detection)和人關鍵點檢測(person keypoint detection)。

2 結構

一共可以分為兩個分支:

(1)第一個分支為原始Faster R-CNN的結構,它用於對候選視窗進行分類和視窗座標迴歸。(2)第二個分支對每一個感興趣區域(Region of Interest,RoI)預測分割掩模,它利用了一個小的全卷積網路結構[2](Fully Convolutional Network,FCN)。

3 主要關鍵因素

關鍵點1:解決特徵圖與原始影象上的RoI不對準問題

問題描述:RoIPool[3]是一種針對每一個RoI的提取一個小尺度特徵圖(e.g. 7x7)的標準操作,它用以解決將不同尺度的RoI提取成相同尺度的特徵大小的問題。RoIPool首先將浮點數值的RoI量化成離散顆粒的特徵圖,然後將量化的RoI分成幾個空間的小塊(spatial bins),最後對每個小塊進行max pooling操作生成最後的結果。該操作類似於下圖,但只取了一個尺度。

通過計算[x/16]在連續座標x上進行量化,其中16是特徵圖的步長,[ . ]表示四捨五入。這些量化引入了RoI與提取到的特徵的不對準問題。由於分類問題對平移問題比較魯棒,所以影響比較小。但是這在預測畫素級精度的掩模時會產生一個非常的大的負面影響。

解決方案:作者提出RoIAlign層來解決這個問題,並且將提取到的特徵與輸入對齊。方法很簡單,避免對RoI的邊界或者塊(bins)做任何量化,例如直接使用x/16代替[x/16]。作者使用雙線性插值(bilinear interpolation)在每個RoI塊中4個取樣位置上計算輸入特徵的精確值,並將結果聚合(使用max或者average)。

關鍵點2:將掩模預測和分類預測拆解

該框架對每個類別獨立地預測一個二值掩模,沒有引入類間競爭,每個二值掩模的類別依靠網路RoI分類分支給出的分類預測結果。這與FCNs不同,FCNs是對每個畫素進行多類別分類,它同時進行分類和分割,基於實驗結果表明這樣對於物件例項分割會得到一個較差的效能。

下面介紹一下更多的細節,在訓練階段,作者對於每個取樣的RoI定義一個多工損失函式L=L_{cls}+L_{box}+L_{mask},前兩項不過多介紹。掩模分支對於每個RoI會有一個Km^{2}維度的輸出,它編碼了K個解析度為m\times m的二值掩模,分別對應著K個類別。因此作者利用了a per-pixel sigmoid,並且定義L_{mask}為平均二值交叉熵損失(the average binary cross-entropy loss)。對於一個屬於第k個類別的RoI,L_{mask}僅僅考慮第k個mask(其他的掩模輸入不會貢獻到損失函式中)。這樣的定義會允許對每個類別都會生成掩模,並且不會存在類間競爭。

關鍵點3:掩模表示

一個掩模編碼了一個輸入物件的空間佈局。作者使用了一個FCN來對每個RoI預測一個m\times m的掩模,這保留了空間結構資訊。

對於以上幾個關鍵點,作者在表格2中給出了詳細的效能比較。

針對關鍵點1:

針對關鍵點2:

針對關鍵點3:


4 結果展示與效能對比



[1] Faster R-CNN: To- wards real-time object detection with region proposal net- works. In NIPS, 2015.

[2] Fully convolutional networks for semantic segmentation. In CVPR, 2015.

[3] Fast R-CNN. In ICCV, 2015.