論文:Mask R-CNN 閱讀筆記
Mask R-CNN
目錄
1 概述
基於Fast/Faster R-CNN、FCN的基礎網路,迅速推動了目標檢測和語義分割的發展。例項分割是具有挑戰性的,因為它需要正確地檢測到所有物體,並且對每一個例項進行精確的分割。我們的方法叫做Mask R-CNN,它是由Faster R-CNN拓展而來,增加了一個分支來預測ROI(感興趣區域)上的分割Masks。這個分支是基於FCN的網路,和現有的分類和邊框迴歸網路是並行的。其結構如圖1-1所示。
圖1-1 例項分割Mask R-CNN框架示意圖
我們提出了一個RoIAlign無量化誤差的層,來精確的保留提取的空間位置資訊。這個看似細微的改變,把Mask的精確度提升了10%-50%。我們的網路在GPU上處理每幀影象需要200ms,利用COCO資料集在8-GPUs上訓練需要花費兩天的時間。最後,我們在COCO的關鍵點資料集上進行了人體姿態判別的實驗。Mask R-CNN可以看作為一個靈活的框架,並且應用在其他複雜的任務上面。
2 模型設計
圖2-1 Faster R-CNN結構示意圖
如圖2-1所示,Faster R-CNN由兩個階段構成。第一個階段是RPN(Region Proposal Network),是為了產生候選的目標邊框。第二個關鍵的階段,使用RoIPool對每一個候選邊框進行分類和迴歸。
Mask R-CNN繼承了Faster R-CNN的結構,第一個階段單獨使用。在第二個階段中,在預測類別和邊框偏差的同時,對每一個RoI輸出二值化的Mask。每一個RoI輸出的二值化Mask維度為,共K個類別。設定其解析度為m*m是為了保證目標的空間維度。先前的方法都是通過全連線層來進行mask預測,我們的全卷積代表需要更少的引數,並且更加的準確。
圖2-2 RoIAlign示意圖
我們用不同的架構部署了Mask R-CNN:
- 使用backbone網路對整幅影象的特徵進行提取。我們評估了深度為50或者101層的ResNet和ResNeXt網路,Faster R-CNN最初使用ResNet在最後的第4層上面提取特徵,所以將之命名為ResNet-50-C4。我們最近採用了一種更加有效的backbone網路,叫做FPN(Feature Pyramid Network),其使用了一種橫向的結構來從固定尺寸的輸入影象上面提取金字塔特徵。使用FPN的Faster R-CNN根據特徵金字塔的大小,以不同尺度來提取RoI特徵。這種方法顯著的提高了速度和精度。
- 使用head網路進行邊框的分類和迴歸。細節設計如圖2-3所示,這兩種結構分別表示了ResNet C4和FPN的head網路設計。
圖2-3 head網路結構示意圖
如圖2-4所示,為採用了RoIAlign、backbone和head網路的Mask R-CNN整體結構示意圖。
圖2-4 Mask R-CNN整體網路結構示意圖
3 模型損失函式設計
4 模型的訓練細節
和Fast R-CNN一樣,如果生成的RoI和真實邊框的IoU是大於0.5的,那麼這個RoI是正例樣本。只定義在有效的RoI上面,Mask的目標是把RoI和真實邊框聯結起來。
我們把影象的尺寸修改為邊長為800個畫素,每一個mini-batch使用2幅圖片,一幅圖片有N個取樣RoIs,正反例的比例為1:3。對於C4 backbone和FPN來說,N的值分別為64和512。引數設定如下:num of GPU=8,iter=160k,learning rate=0.02,weight dacay = 0.0001,momentum=0.9。RPN的anchors有5種尺度和3種橫縱比,為了研究方便,RPN是單獨訓練的,不合Mask R-CNN共享引數。
在測試階段,對於C4 backbone和FPN來說,提名區域的個數分別為300和1000。在這之後,進行邊框預測NMS(非極大值抑制)。Mask分支只設置在分值最高的100個檢測邊框之後。儘管這和訓練階段的並行結構有所不同,但是卻由於其使用了更精確和更少的RoIs,顯著提高了精確度和推理的速度。Mask分支對於每一個RoI可以預測K個RoIs,但是我們只使用第k個mask,其中k是由分類分支所預測出來的類別。最後改變m*m的浮點數Mask輸出到RoI的大小,並通過設定閾值為0.5來進行二值化輸出。
5 模型實驗
我們在COCO資料集進行訓練,並使用AP(averaged over IoU thresholds)作為評估指標。在圖5-1中可以看到Mask R-CNN和其他最先進方法的AP指標對比結果。
圖5-1 Mask R-CNN COCO-test AP指標
在圖5-2中可以看到Mask R-CNN使用不同配置的AP指標對比結果。分別設定了Backbone Architecture、Multinomial vs Idependent Masks、Class-Specific vs Class-Agnostic Masks、RoIAlign with ResNet-50-c4 vs ResNet-50-c5和Mask Branch。
圖5-2 不同結構配置的Mask R-CNN AP指標結果對比
我們在COCO資料集上面和其他的最先進目標檢測方法進行了對比,圖5-3為其對比結果。使用ResNeXt-101-FPN,Mask R-CNN進一步提升了效果。為了進一步對比,我們提出了Faster R-CNN RoIAlign網路,其去掉了Mask R-CNN的Mask分支。
圖5-3 Mask R-CNN 檢測效果指標結果對比
Mask R-CNN最終可以在Nvidia Tesla M40 GPU上達到每張圖片195ms的速度,我們的設計可以實現在速度和精確度之間的折中。訓練速度也是非常快的,在8片GPU上,我們使用ResNet-50-FPN在COCO trainset135k進行訓練花費了32小時,使用ResNet-101-FPN花費了44小時。
6 人體關鍵點檢測
我們的模型可以很容易地應用在人體關鍵點檢測上面,我們把一個關鍵點定義為一個Mask,並用Mask R-CNN來預測K個Mask。對於一個例項的K個關鍵點,訓練目標是解析度為m*m二值化掩膜輸出中的一個點作為前景。在訓練
過程中,對於每一個可視的真實關鍵點,我們最小化交叉熵損失以m*m作為softmax的輸出。我們使用了ResNet-FPN的變體,並且關鍵點檢測模型的head和圖2-3左邊的結構很相似,是由3*3*512卷積層的疊加,後面是雙線性上變換的反捲積,輸出解析度為56*56。我們發現高解析度的輸出,需要關鍵點檢測的高準確度。模型在COCO trainval135k訓練集上面進行訓練,我們減小了訓練集的大小,來減小過擬合的風險,並從[640,800]中進行隨機取樣,來作為訓練影象的實際大小。以學習率為0.2訓練90個迭代週期,以0.5作為邊框NMS的閾值。
圖6-1 Mask R-CNN關鍵點檢測指標
我們以AP作為人體關鍵點檢測的評估指標,並用ResNet-50-FPN作為backbone。圖6-1顯示出來了Mask R-CNN進行關鍵點檢測時的效能指標。當新增Mask後指標進一步達到了63.1。
圖6-2 多工Mask R-CNN的表現
圖6-2顯示出來了Mask R-CNN進行多工關鍵點檢測時的效能指標,可以發現通過新增keypoint和mask分支後可以提升到64.7,但是稍微影響了keypoint/mask各自的AP。
圖6-3 RoIAlign和RoIPool對Mask R-CNN關鍵點檢測的表現
圖6-3顯示出來設定RoIAlign和RoIPoolMask,對 R-CNN進行多工關鍵點檢測時的效能指標的影響。RoIAlign依舊對其有很大的改善。
7 模型的效能指標
7.1 Cityscapes
圖7-1 Mask R-CNN在Cityscapes資料集上的表現
7.2 COCO
圖7-2 Mask R-CNN在COCO資料集上的表現
7.3 Keypoint
圖7-3 Mask R-CNN在Keypoint上的表現