Mask R-CNN

論文原文:Mask R-CNN
作  者:Kaiming He, Georgia Gkioxari, Piotr Dollár, Ross Girshick

摘要

我們提出了一種從概念上來說簡單、靈活的綜合框架,該框架應用于目標實例分割。我們的方法在高效的檢測圖像中目標的同時能對每一個目標實例生成高質量的分割掩膜。我們將該方法稱為Mask R-CNN,是從Faster R-CNN擴展而來,在Faster R-CNN的基礎上增加了一個用于預測目標掩膜的分支,該分支與已存在的邊界框分類分支平行。Mask R-CNN訓練簡單,且只在Faster R-CNN的基礎上增減很少的時間消耗,運行速率達到5fps。而且,Mask R-CNN容易適用于其他任務,例如:允許我們對網絡做微小的改變,使用相同的網絡用于預測人體姿態。我們給出了在COCO系列挑戰中的所有三類挑戰的結果,包括實例分割、目標邊界框檢測和人體關鍵點檢測。Mask R-CNN在所有任務上勝過了目前所有的單模型網絡,包括COCO 2016的勝利者。我希望我們這個簡單有效的模型能夠成為一個穩定的基線模型,促進實例水平識別的進一步發展。源碼即將開源。

1 引言

視覺社區在短時間內快速提升了對象檢測和語義分割結果。在很大程度上,這些改進是基于一些強大的基線模型的,例如:用于目標檢測和語義分割的Fast/Faster R-CNN和完全卷積網絡(FCN)。這些模型從理論上講是直觀靈活且魯棒性好的,并且訓練速和運行度快。在本文中,我們的目標是開發一個具有可比性的用于實例分割的框架。

實例分割是一項具有挑戰性的任務,因為它需要準確的檢測出圖像中的所有目標,同時還有準確的分割每一個目標實例。因此實例分割包含兩個部分:一是分類計算目標檢測的視覺任務,其目標是分類每一個目標,并且使用邊界框對其定位。二是語義分割,其目標是在不區分目標實例的情況下將每一像素分類到類別的固定像素組中。鑒于此,如果想要達到一個好的檢測出效果,可能需要一種復雜的方法。然而,我們展示了一個非常簡單、靈活而且快速的系統,該系統勝過了目前最優秀的實例分割的結果。


Mask R-CNN

圖1 Mask R-CNN框架

我們的方法是通過增加應用在每一個RoI上預測分割掩膜的分支從Faster R-CNN擴展而來,該分支與已存在的分類分支和邊界框回歸分支保持平行(如圖1所示),我們稱該方法為Mask R-CNN。Mask分支是一個應用在每一個RoI上的小全卷積網絡(FCN),以像素到像素的方式來預測分割掩膜。Mask R-CNN在給定的Faster R-CNN框架下實現和訓練簡單,Faster R-CNN促進了靈活廣泛的結構設計。再者,mask分支只增加了很少的消耗,實現了一個快速的實例分割系統。

原則上Mask R-CNN是對Faster R-CNN的一種直接擴展,但是,正確的構造mask分支對于獲得良好的效果至關重要。最重要的是,Faster R-CNN網絡的輸入輸出沒有設計像素到像素的對齊,RoIPool是參與實例的實際核心操作,它為粗略的空間量化提供特征提取,這一點最為明顯。為了彌補這一不足,我們提出了一種稱為RoIAlign的簡單且量化容易的層,該層能忠實的保留準確的空間位置。盡管從表面上看只是微小的改變,但RoIAlign卻有很大的影響:它提高了掩膜精度達10%到50%,在嚴格定位指標下獲得了更大的增益。第二,我們發現解耦掩膜和分類預測至關重要:我們在不與其他class產生競爭的情況下,獨立的為每一class預測一個二元掩膜, 并且,依賴網絡的RoI分類分支來預測class的類別。相比起來,FCN通常進行每一像素的多class分類,并且,從我們的實驗來看,實例分割的效果很差。

毫不夸張的說,在COCO實例分割任務中,Mask R-CNN勝過之前所有最先進single-model的結果,包括來自2016年的重量級作品。作為一個副產物,我們的方法在COCO目標檢測任務上的表現也很出色。在消除實驗中,我們對多個基本實例進行了評估,以證明其魯棒性,并分析了核心因素的影響。

我們的模型在一個GPU上的運行速度為200毫秒每幀,在COCO數據集上進行訓練,采用8GPU的機器需要花費1-2天。我們相信,快速的訓練和測試速度,以及框架的靈活性和準確性,將有益于并簡化實例分割未來的研究。

最后,我們通過COCO關鍵點數據集上的人體姿態估計任務展示了我們的框架的通用性。通過將每一個關鍵點視為一個one-hot二元掩膜,并最小限度的修改Mask R-CNN,以用于檢測特定實例的姿態。毫無懸念,Mask R-CNN勝過了2016年COCO關鍵點競賽的冠軍,并且獲得了相同的運行速率——5fps。因此,Mask R-CNN可以更廣泛的視為實例級識別額靈活框架,并且可以很容易地擴展到更復雜的任務中。

我們將開源代碼以方便將來的研究。

圖2 Mask R-CNN在COCO測試集上的結果,該結果基于ResNet-101,mask AP為35.7,運行速度5fps。掩膜用彩色表示,同時顯示了邊界框、類別和置信度。

2 相關工作

R-CNN:基于邊界框目標檢測方法是關注可管理數量的候選目標區域,并在每一個RoI上獨立評估卷積網絡。R-CNN被擴展為允許在特征圖上使用RoIPool,從而實現更快的速度和更好的準確性。Faster R-CNN通過學習區域建議網絡(RPN)的attention機制來推進這樣一流程。Faster R-CNN對后續許多改進具有靈活性和魯棒性,并且是幾個基線測試中目前領先的框架。

實例分割:在R-CNN的有效性的驅動下,實例分割的許多方法都是基于分割建議的。早期的方法采用自下而上的分割片段。DeepMask和以后的工作提出分割候選區域,然后由Fast R-CNN進行分類。分割之前先識別的這些方法速度慢且準確度低。同樣的,Dai等人提出一種復雜的多階段級聯方法,該方法在分類之后從目標邊界框預測分割候選區域。不同的是,我們的方法是基于并行掩膜和類別標簽預測的,該方法簡單且更加靈活。

最近,Li等人組合分割建議系統和目標檢測系統用于全卷積實例分割(FCIS)。共同昂思想是預測一組完全卷積的位置敏感的輸出通道。這些通道同時的處理目標類別、邊界框和掩膜,使得系統運行快。但是FCIS在重疊實例上展示了系統錯誤并且生成虛假邊界,表明它受到了分割實例的根本困難的挑戰。

3 Mask R-CNN

從理論上來說,Mask R-CNN是簡單的:Faster R-CNN對于每一個候選目標有兩個輸出——類別標簽和邊界框坐標;至此,我們增加了第三個分支,用于輸出目標掩膜。因此Mask R-CNN是自然的直觀的。但是新增的掩膜分支與分類和邊界框輸出不同,它需要提取目標更加精細的空間布局。接下來,我們將介紹Mask R-CNN的關鍵部分,包括像素到像素的對齊,這是Fast/Faster R-CNN中主要缺失的部分。

Faster R-CNN:我們通過簡單的回顧Faster R-CNN檢測器開始。Faster R-CNN由兩個階段組成,第一階段為RPN,生成候選目標邊界框;第二階段本質上是Fast R-CNN,使用RoIPool從每一個候選目標區域提取特征,并且進行分類和邊界框回歸。這些由兩個階段共享的特征用于更快的推理。推薦讀者參考文獻[21],以得到Faster R-CNN與其他框架之間的全面比較。

Mask R-CNN:Mask R-CNN采用相同的兩階段處理過程,第一階段完全相同(RPN)。在第二階段中,并行的預測類別和邊界框坐標,Mask R-CNN也為每一個RoI輸出一個二元掩膜。這與最近的系統形成對比,這些系統中的分類依賴于掩膜。我們的方法遵循Fast R-CNN的特點,即并行應用邊界框分類和回歸(這大大簡化了原始R-CNN的多階段過程)。

正式的,在訓練時,我們定義每一個被抽樣的RoI的多任務損失為L=Lcls+Lbox+Lmask。分類損失Lcls和邊界框回歸損失Lbox與[12]中的定義相同。掩膜分支對于每一個RoI有K個mxm維的輸出,這編碼了K個mxm像素的二元掩膜,每一個都與K個類別中的一個對應。我們采用了per-pixel Sigmoid,并且定義Lmask為平均二元交叉熵損失。對于每一個與真實邊界框相關聯的RoI,Lmask僅在第k個掩膜上進行定義(其他掩膜輸出對損失函數沒有貢獻)。

我們定義的損失函數允許網絡在與其他類別不產生競爭的情況下為每一類生成掩膜;我們依賴專用的分類分支來預測類別標簽用于選擇掩膜輸出。這種方法解耦了分類和掩膜預測。這與FCN應用于語義分割的常見做法不同,后者通常使用per-pixel softmax和多項式交叉熵損失。如果那樣的話,掩膜與分類相互競爭;在我們的方法中,采用per-pixel Sigmoid和二元損失,而后者后者沒有這樣做。通過實驗表明,該方法是獲得良好的實例分割結果的關鍵。

掩膜表示:掩膜結合了輸出目標的空間布局。因此,不像分類標簽和邊界框坐標一樣,可以通過全連接層不可避免的分解成短向量輸出,提取掩膜的空間布局可以通過由卷積提供的像素到像素的一致性自然的處理。

特別的,我們使用FCN為每一個RoI預測一個mxm的掩膜,這要求掩膜分支的每一層顯示的保持mxm目標的空間布局,而不將其分解為確實空間布局信息的向量表示。不像之前憑借全連接層進行掩膜預測的方法,我們的全卷積表示需要的的參數量更少,并且實驗表明該方法準確的更高。

這種像素到像素的行為需要RoI特征,而這種特征本來就是小的特征圖,能夠進行很好的對齊,以忠實的保留每一像素的空間對應信息。這促使我們開發了下面的RoIAlign層,該層對于掩膜預測起了關鍵作用。

RoIAlign:RoIPool是用于從每一個RoI中突出小特征圖的標準操作。RoIPool首先將浮點數的RoI量化成特征映射圖的離散粒度,然后這些量化的RoI被細分到本身量化好的空間盒子中,最后聚合每個盒子所包含的特征值(使用最大值池化)。量化是這樣進行的,例如:在一個連續坐標x上計算[x/16],其中16為特征圖的跨度,[·]表示范圍;同樣的,再將其劃分為多個容器時進行量化(例如:7x7)。這些量化在RoI和提取的特征之間引入了不對齊。這種不對齊可能不會影響分類,因為它對于小的變化具有魯棒性,但是對于預測像素準確度的掩膜會產生很大額消極影響。

為了解決這個問題,我們提出了RoIAlign層,該層去除了RoIPool的粗量化,使提取的特征與輸入良好的對齊。我們提出的改變非常簡單:我們避免了對RoI邊界進行量化(即:我們使用x/16代替[x/16])。使用雙線性插值在每一個RoI盒子的四個固定采樣點計算輸入特征的準確值,然后聚合計算結果(采用最大值池化)。

RoIAlign取得了巨大的提升。我們也比較了[10]中提出的RoIWarp操作。不想RoIAlign,RoIWarp忽略了對齊問題,他在[10]中的實現和RoIPool類似。因此,盡管RoIWarp也采用了雙線性插值,但是在實驗中,它的表現和RoIPool相同(更多詳細信息見表2c),這證明了對齊的關鍵作用。

網絡結構:為了證明我們方法額通用性,我們采用多種結構實現了Mask R-CNN。為了清除起見,我們做了區分:(i)在整個圖像上進行特征提取的卷積骨干結構,(ii)分別應用于每一個RoI用于目標邊界框識別(分類和回歸)和掩膜預測的head網絡。

我們使用network-depth-feature來表示骨干網絡。我們評估了深度為50和101的ResNet和ResNeXt網絡。Faster R-CNN的原始實現采用ResNet從第四階段的最后一個卷積層提取的特征,我們成為C4。例如:采用ResNet-50的骨干網絡使用ResNet-50-C4表示,這是一種常用的表示方法。

我們也探索了由Lin等人提出的更加有效的骨干網絡——特征金字塔網絡(FPN)。FPN使用具有橫向連接的自頂向下的結構從單一尺度輸入構建in-network特征金字塔。具有FPN骨干網絡的Faster R-CNN根據其尺度從特征金字塔的不同層次提取特征,但是除此之外的其他部分和ResNet相同。Mask R-CNN使用ResNet-FPN的骨干網絡進行特征提取在精度和速度兩方面都獲得了巨大的提升。FPN的更多細節請參閱[27]。

對于網絡的head,我們密切關注以前工作中提出的架構,并在其中添加完全卷積掩膜預測分支。特別的是,我們從FPN和ResNet的論文中擴展了Faster R-CNN的邊界框head。具體細節如圖2所示。ResNet-C4骨干網絡上的head包括計算密集的ResNet的第5階段(即:ResNet第9層‘res5’)。對于FPN,骨干網絡已經包含了res5,因此,允許使用具有更少濾波器的更加有效的head網絡。

我們注意到掩膜分支具有一個簡單的結構。更加復雜的設計可能會提高性能,但這不是我們研究的重點。

圖3 Head 結構

3.1 實現細節

我們根據Fast/Faster R-CNN來設置超參數。盡管這些決策在原始論文中是用于目標檢測的,但是我們發現他對于我們提出的實例分割網絡同樣具有魯棒性。

訓練:同Fast R-CNN中一樣,如果RoI與真實邊界框的不小于0.5則將該RoI作為正樣本,其余剩下的所有RoI作為負樣本。掩膜損失Lmask僅在正樣本RoI上定義。掩膜的目標是RoI和與之相關的真實邊界框的交集。

我們采用image-centric進行訓練。圖像被調整到短邊800像素,每一個小批的每一個GPU包含兩幅圖像,并且每一幅圖像采樣N個RoI,其中RoI的正負樣本比例為1:3。在C4骨干網絡中N為64,FPN骨干網絡中N為512。我們在8個GPU上進行(因此有效小批的大小為16)160K迭代訓練,學習速率為0.02,學習速率在120K次迭代時降低10倍,權重衰減為0.0001,動量為0.9。

RPN anchor采用5種尺度3種縱橫比。為了便于進行消除實驗,RPN是單獨訓練的,除非指定,否則不與Mask R-CNN共享特征。對于文中的每一個條目,RPN和Mask R-CNN都具有相同的背景,所以它們之間是可以共享的。

推理:在測試時,C4骨干網絡的候選框數量為300,FPN的為1000。我們在這些候選框之中進行邊界框預測,然后進行非最大抑制。然后掩膜分支應用到得分最高的100個檢測到的邊界框上。盡管這與訓練中所使用的并行計算不同,但是它加速了推理并提高了準確度(由于使用了更少、更準確的RoI)。掩膜分支可以為每一個RoI預測K個掩膜,但是我們僅使用第k個掩膜,其中k是由分類分支預測的類別。然后將mxm浮點數掩膜輸出調整到RoI大小,并在閾值0.5下進行二值化。

注意,由于我們僅在前100個檢測框上計算掩膜,Mask R-CNN只在Faster R-CNN上增加了很少的運行時間。

圖4 Mask R-CNN在COCO測試圖像上的更多結果,采用ResNet-101-FPN,運行速度5fps,mask AP35.7。
表1 COCO test-dev數據集上實例分割mask AP。MNC和FCIS分別是COCO 2015和COCO 2016分割挑戰的冠軍,毫不吹噓,Mask R-CNN勝過更加復雜的FCIS+++。

4 實驗:實例分割

我們將Mask R-CNN與最先進的方法進行了全面透徹的消除實驗。所有的實驗均使用COCO數據集。我們聲明標準的COCO指標包括AP(IoU閾值的平均值)、AP50、AP75、APs、APm和APl(不同比例下的AP值)。除非特殊聲明,AP使用掩膜IoU來評估。在之前的工作中,我們使用80k訓練圖像和驗證圖像的子集的35k圖像的合集進行訓練。我們在驗證集剩下的5k圖像上進行消除聲明。我們也在不包含公開標簽的test-dev數據集上公布了結果。在出版之后,我們將按照建議把test-dev的完整結果上傳到公開排行榜上。

4.1 主要結果

我們將Mask R-CNN與表1中最先進的的實例分割方法進行了比較。我們的模型的所有實例性能均優于上述最先進的基線變體。包括MNC和FCIS,它們分別是COCO2015和2016實例分割挑戰的勝利者。毫不吹噓,具有ResNet-101-FPN骨干網絡的Mask R-CNN性能優于FCIS+++,它包含多尺度訓練/測試,水平翻轉和在線困難樣本挖掘(OHEM)。然而在本任務范圍之內,我們期待能有很多類似的提到為我們所適用。

Mask R-CNN的輸出結果如圖2和圖4所示。Mask R-CNN即使在具有挑戰的情況下依然能夠呈現出很好的結果。在圖5中,我們將Mask R-CNN基線網絡與FCIS+++進行比較。在重疊實例中,FCIS+++會產生系統性的偽掩膜,這表示該方法收到了實例分割的基本困難的挑戰。Mask R-CNN則不會出現這樣的偽掩膜。

圖5 FCIS+++(上) vs. Mask R-CNN(下)
表2 Mask R-CNN消除實驗結果。在trainval 135k數據集上訓練,在minival數據集上測試。

4.2 消除實驗

我們進行了一系列的消除實驗,其結果如表2所示,接下來我們將對每個實驗進行詳細討論。

結構:表2a展示了不同結構的Mask R-CNN。它得益于深度網絡(50vs.101)以及包括FPN和ResNeXt的先進設計。我們發現,并不是所有框架都能自動的從更深的或者是先進的網絡中受益。

Multinomial vs. Independent Mask:Mask R-CNN解耦了掩膜和類別預測: 和已存在的邊界框分支預測類別標簽一樣,我們在不與其他類產生競爭的情況下為每一個類別生成一個掩膜(使用per-pixel Sigmoid和二元損失)。在表2b中我們將此方法與per-pixel softmax和多項式損失(通常應用于FCN)進行比較。上述替代方法中,掩膜任務與分類預測結合,結果在掩膜AP中出現了嚴重損失(5.5個百分點)。這個結果表明,一旦實例被分類為整體(通過邊界框分支),預測二元掩膜就足夠了,而不用考慮別的,這使得模型更易于訓練。

類特定vs.類不可知掩膜:我們默認預測類特定額實例掩膜,即:每一類輸出mxm的掩膜。有趣的是,Mask R-CNN在類不可知的實例掩膜幾乎是同樣有效(在不考慮類別的情況下預測一個mxm的掩膜輸出)。與ResNet-50-C4骨干網絡的類特定實例分割結果相比為19.7vs.30.0掩膜AP。這進一步強調了我們方法中的分工很大程度上分離了分類和分割。

RoIALign:對于我們提出的RoIAlign層的評估如表2c所示。在該實驗中我們使用了ResNet-50-C4骨干網絡,其步幅為16。RoIAlign使AP相比于RoIPool提高了大約3個百分點。大部分的提升來自高IoU(AP75)。RoIAlign對max/average pool池化方式不敏感,在接下來的論文中,我們使用平均值池化。

此外,我們與MNC中提出的RoIWarp進行了比較,該方法也采用雙線性插值。正如第三節中所討論的,RoIWarp仍然對RoI進行量化,與輸入失去了對齊。正如表2c所示,RoIWarp能與RoIPool相提并論但是要比RoIAlign遜色很多。這強調了適當對齊關鍵作用。

我們也使用ResNet-50-C5骨干網絡來評估RoIAlign,該方法擁有更大的步幅,即32像素。由于res5不適用,我們使用與圖3(右)相同的head網絡。如表2d所示,RoIAlign將掩膜AP提高了近7.3個百分點,將AP75提升了10.5個點。此外,我們發現RoIAlign在使用步幅為32的C5特征(30.9AP)時比步幅為16的C4特征要更精確。RoIAlign解決了長期以來使用大步幅特征用于目標檢測和分割的挑戰。

最后,當使用具有多種精細步幅的FPN時,RoIAlign取得了1.5的mask AP和0.5的box AP提升。對于需要更精細對齊的關鍵點檢測,FPN+RoIAlign表現出了很大的提升(表6)。

表3 **目標檢測**在test-dev數據集上single-model結果 vs. 最先進結果。Mask R-CNN使用ResNet-101-FPN勝過之前所有最先進模型的基本變體(在這些實驗中忽略了掩膜輸出)。Mask R-CNN的增益來自于使用RoIAlign(+1.1APbb)、多任務訓練(+0.9APbb)和ResNeXt-101(+1.6APbb)。

掩膜分支:分割是一種像素到像素的任務,我們使用FCN來開發掩膜的空間布局。在表2c中,我們使用ResNet-50-FPN骨干網絡比較了多層感知機(MLP)和FCN。FCN在MLP的基礎上獲得了2.1mask AP的提升。我們注意到,選擇這種骨干網絡,對于MLP,為了公平起見,因此FCN中的卷積層沒有進行預訓練。

4.3 邊界框檢測結果

我們將Mask R-CNN與表3中最先進的COCO邊界框目標檢測方法進行了比較。對于這個結果,盡管訓練了完整的Mask R-CNN模型,但是推理中只使用了分類和邊界框回歸兩個分支(忽略掩膜輸出)。使用ResNet-50-FPN的Mask R-CNN性能優于之前所有最先進的模型的變體,包括單模型GPMI的變體,即COCO2016目標檢測的獲勝者。使用ResNeXt-101-FPN使Mask R-CNN的結果得到了進一步的提升,比之前最好的單模型(使用Inception-ResNet-v2-TDM)提高了3.0個百分點的box AP。

作為進一步的比較,我們訓練了沒有掩膜分支版本的Mask R-CNN,在表3中表示為“Faster R-CNN,RoIAlign”。由于RoIAlign的存在,這個模型比[27]中的模型性能要好。另一方面,它比Mask R-CNN降低了0.9個百分點的box AP。因此,在目標檢測中Mask R-CNN的這種差距是由多任務訓練產生的。

最后,我們發現Mask R-CNN在掩膜和目標檢測之間存在細微的差距:例如:在37.1(掩膜,表1)和39.8(目標檢測,表3)之間相差2.7個百分點。這表明我們的方法在很大程度上縮減了目標檢測與更具挑戰性的實例分割任務之間的差距。

4.4 時間

推理:我們訓練了一個ResNet-101-FPN模型,在Faster R-CNN的第4步訓練完之后,該模型在FPN和Mask R-CNN階段共享特征。該模型在單個NVIDIA Tesla M40 GPU上的運行速度為195ms/圖。并在統計上實現了與未共享特征模型相同的mask AP。同時,我們也公布了ResNet-101-C4變體的時間——大約為400ms/圖,因為該變體有更耗時的head網絡(圖3)。因此,在實際使用時,我們不建議使用C4變體。

盡管Mask R-CNN很快,我們注意到,該方法沒有針對速度進行優化,還能夠在速度和準確度之間進行更好的取舍。例如:通過改變圖像大小和候選框的數量,但是這超出了本文的研究范圍。

訓練:Mask R-CNN的訓練也很快。在COCOtrainval135K數據集上訓練ResNet-50-FPN,8塊GPU同時工作需要32小時,訓練ResNet-101-FPN需要44小時。事實上,當在訓練集上進行訓練時,可以將訓練時間壓縮到一天。我們希望這樣快速的訓練能夠消除該領域的巨大障礙,并鼓勵更多的人來研究具有該挑戰的課題。

5 實驗:人體姿態預測

我們的框架能很容易額擴展到人體姿態預測上。我們將一個關鍵點的位置提取出來作為一個one-hot掩膜,并采用Mask R-CNN預測K個掩膜,每一個掩膜都K個關鍵點一一對應(例如:左肩、右手肘)。該任務體現了Mask R-CNN的靈活性。

需注意,因為這些實驗主要是為了體現我們的框架的普適性,所以我們系統只使用了少量的人體姿態領域的知識。我們期待該領域的知識(例如模型結構)能對我們簡單額方法進行補充,但是這不是本文研究的范圍。

實現細節:我們對分割系統進行了細微的改變以使其適用于關鍵點檢測。對于一個實例的K個關鍵點中的每一個,訓練目標是輸出一個one-hot編碼的mxm二元掩膜,該掩膜只有一個像素被標示為前景。在訓練中,對每一個可視的真實關鍵點,我們在m^2-way softmax輸出上最小化交叉熵損失。在實例分割中,K個關鍵點任然是獨立處理的。

我們采用ResNet-FPN變體,而關鍵點檢測的head網絡結構與圖3(右)相似。關鍵點檢測head由8個3x3的512維的卷積層堆疊組成。接著是一個反卷積層和2個雙線性上采樣層,產生一個分辨率為56x56的輸出。我們發現,為了實現關鍵點水平的精確定位,需要一個相對高分辨的輸出結果(和分割掩膜相比)。

模型是在包含關鍵點注釋的COCO trainval135K數據集上訓練的。為了減小過擬合,當訓練集更小時,我們從圖像中隨機采樣[680,800]像素來訓練模型。推理則在800像素的單尺度上進行。訓練進行了90k次迭代,學習速率從0.02開始,在60k次和80k次迭代時減小10倍。邊界框非最大抑制的閾值為0.5。其他實現細節與3.1節中完全相同。

圖6 在COCO測試集上使用Mask R-CNN(ResNet-50-FPN)進行關鍵點檢測的結果。
表4 COCO test-dev數據集上關鍵點檢測AP。我們的方法(ResNet-50-FPN)是單模型,運行速度5fps。CMU-Pose+++是2016年競賽的冠軍,它在CPM上多尺度測試和后處理。G-RMI在COCO+MPII數據集(25k幅圖像)上訓練,使用兩個模型(Inception-ResNet-v2+ResNet-101)。由于他們使用了更多的數據,所以這和Mask R-CNN不是一個直接的比較。
表5 目標檢測、掩膜和關鍵點檢測關于person類的多任務學習,在minival數據集上進行評估。為了公平比較,所有方法都在相同的數據集上進行比較。骨干網絡為ResNet-50-FPN。
表6 **RoIAlign vs. RoIPool**在minival數據集上進行關鍵點檢測。

人體姿態預測實驗:我們使用ResNet-50-FPN來評估人體關鍵點AP(APkp)。我們也對ResNet-101進行了實驗,發現它們的結果相似,可能是更深的模型能從更多的數據中收益,而該數據集相對較小。

表4展示了我們的結果(62.7APkp),該結果比COCO2016關鍵點檢測中使用多階段處理過程的優勝者(見表4的題注)還高0.9個百分點。我們的模型無疑是更簡單,更快速的。

更重要的是,我們的模型能同時預測目標邊界框、分割和關鍵點,且運行速度為5fps。在test-dev數據集上增加一個掩膜分支(對于行人這一類)將APkp提升到63.1。表5中列出了在minival數據上更多多任務學習的消除結果。將掩膜分支添加到僅目標檢測(Faster R-CNN)或者僅有關鍵點檢測的版本上,可以持續改進這些任務。然而增加關鍵點檢測分支輕微的減小了box/mask AP,表明關鍵點檢測從多任務訓練中受益時就不能幫助其他任務了。不過,一起學習三個任務能夠實現一個能同時有效的預測所有輸出結果的完整系統(圖6)。

我們也研究了RoIAlign在關鍵點檢測上的有效性(表6)。盡管ResNet-50-FPN骨干網絡已經有了精細步幅(例如:在最精細水平上的4個像素點),但是RoIAlign仍然表現出了比RoIPool明顯的提升,將APkp提高了近4.4個百分點。這是因為關鍵點檢測對位置的準確度更加敏感。這又一次證明了對于像素水平的定位,包括掩膜和關鍵點檢測任務,對齊是至關重要的。

在給出Mask R-CNN對于提取目標的邊界框,掩膜和關鍵點檢測的結果之后,我們期待它能夠成為其他實例水平任務的一種有效的框架。

表7 Cityscapes val(‘AP[val]’列)和test(剩下的列)數據集上的結果,采用ResNet-50-FPN。

A 街景實驗

我們進一步說明在街景數據集上實例分割的結果。這個數據集的2975幅訓練圖像、500幅驗證圖像和1525幅測試圖像具有精細的標簽。有20K幅粗訓練圖像沒有實例注釋,這一部分我們沒有使用到。所有圖像都是2048x1024的分辨率。實例分割任務圍繞8個目標類別進行,它們的在精細訓練集上的實例數量為:

person rider car trunk bus train mcycle bicycle
17.9k 1.8k 26.9k 0.5k 0.4k 0.2k 0.7k 3.7k

實例分割在該任務上的表現使用COCO風格的mask AP來進行衡量(IoU閾值的平均值),同時也公布了AP50(IoU為0.5的mask AP)的結果。

實現:我們采用具有ResNet-50-FPN骨干網絡的Mask R-CNN;我們也測試了101層的版本,由于數據集較小,它們的性能相似。訓練的圖像尺度從[800,1024]中隨機采樣,這減小了過擬合;推理在1024像素的單尺度圖像上進行。小批的大小為1圖/GPU(因此有在8個GPU上有8張圖),訓練模型進行24k次迭代,學習速率從0.01開始,在經過18k次迭代后降為0.001,其他實現細節和3.1節中保持一致。

結果:表7比較了我們的方法與最先進的方法在驗證集和測試集上的結果,在沒有使用粗訓練集的情況下,我們的方法在測試集上獲得了26.2的AP,這比使用精細訓練集和粗糙訓練集的最好的結果相對提升了30%,相比于僅使用精細標簽的結果(17.4AP)取得了50%的提升。在8GPU的機器上訓練耗時4小時。

圖7 Cityscapes test數據集上Mask R-CNN的結果(32.0AP)。右下圖是失敗的預測。

對于person和car類,該街景數據集展現了很多重疊實例(每幅圖像平均6個人9臺車)。我們表明同類重疊是實例分割中的核心困難。我們的方法相比于之前最好的方法取得了巨大的提升(person類:從16.5到30.5,相對提升了85%;car類:從35.7到46.9,相對提升了30%)。

街景數據集的一個主要挑戰是在低數據樣本(low-data regime)下訓練模型,尤其是對于trunk、bus和train類,它們都只有200-500個樣本。為了補救這個問題,我們進一步公布了使用COCO預訓練的結果。為此,我們從預訓練的COCO Mask R-CNN模型初始化街景數據集中對應的7類(rider隨機初始化)。我們微調迭代模型4k次,在3k次迭代后降低學習速率,在給定額COCO模型上訓練耗時1小時。

COCO 預訓練的Mask R-CNN模型在測試集上獲得了32.0的AP,比僅使用精細標簽的版本絕對提升了6個百分點。這表明了訓練數據數量的重要性,同時也說明街景的實例分割可能會受他們low-shot的影響。使用COCO預訓練模型是減輕本數據集數據量有限的一種有效的策略。

最后,我們觀察val和test AP的偏差,我們發現這個偏差主要是由trunk、bus和train類造成的,它們在僅使用精細標簽的模型中的val/test AP分別為28.8/22.8、53.5/32.2、30.0/18.6。這表明,這些類上存在一個主要的變化,且它們也沒多少訓練數據。COCO預訓練模型在這些類上幫助它們提升了結果,然而,這種變化仍然存在,它們的val/test AP分別為38.0/30.1、57.5/40.9和41.2/30.9。在person和car類上我們沒有發現這種偏差。

街景數據集上的示例如圖7所示。

翻譯:ailee

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容