(42)[ICCV17] Mask R-CNN
計劃完成深度學習入門的126篇論文第四十二篇,微軟的Ross Girshick研究的Obeject Detection的模型。[github]
基礎論文:[R-CNN] [Fast R-CNN] [Faster R-CNN]
Abstract
我們提出了一個概念上簡單,靈活和通用的目標分割框架。我們的方法有效地檢測圖像中的目標,同時為每個實例生成高質量的分割Mask。稱為Mask R-CNN的方法通過添加一個與現有目標檢測框回歸并行的,用于預測目標Mask的分支來擴展Faster R-CNN。Mask R-CNN訓練簡單,相對于Faster R-CNN,只需增加一個較小的開銷,運行速度可達5 FPS。此外,Mask R-CNN很容易推廣到其他任務,例如,允許我們在同一個框架中估計人的姿勢。我們在COCO挑戰的所有三個項目中取得了最佳成績,包括目標分割,目標檢測和人體關鍵點檢測。在沒有使用額外技巧的情況下,Mask R-CNN優于所有現有的單一模型,包括COCO 2016挑戰優勝者。我們希望我們的簡單而有效的方法將成為一個促進未來目標級識別領域研究的堅實基礎。
1. Introduction
目標檢測和語義分割的效果在短時間內得到了很大的改善。在很大程度上,這些進步是由強大的baseline驅動的,例如,分別用于目標檢測和語義分割的Fast/Faster R-CNN[12,36]和全卷積網絡(FCN)[30]框架。這些方法在概念上是直觀的,提供靈活性和魯棒性,以及快速的訓練和推理。我們在這項工作中的目標是為目標分割開發一個相對有力的框架。
目標分割是具有挑戰性的,因為它需要正確檢測圖像中的所有目標,同時也精確地分割每個目標。因此,它結合了來自經典計算機視覺任務目標檢測的元素,其目的是對目標進行分類,并使用邊界框定位每個目標,以及語義分割(通常來說,目標檢測來使用邊界框而不是Mask來標定每一個目標檢測,而語義分割以在不區分目標的情況下表示每像素的分類。然而,目標分割既是語義分割,又是另一種形式的檢測。)鑒于此,人們可能認為需要一種復雜的方法才能取得良好的效果。然而,我們的研究表明,使用非常簡單,靈活和快速的系統就可以超越先前的最先進的目標分割結果。
我們稱之為Mask R-CNN的方法通過添加一個用于在每個感興趣區域(RoI)上預測分割Mask的分支來擴展Faster R-CNN [36],這個分支與用于分類和目標檢測框回歸的分支并行執行,如下圖(圖1)所示(用于目標分割的Mask R-CNN框架):
Mask分支是作用于每個RoI的小FCN,以像素到像素的方式預測分割Mask。Mask R-CNN易于實現和訓練,它是基于Faster R-CNN這種靈活的框架的。此外,Mask分支只增加了很小的計算開銷。
原理上,Mask R-CNN是Faster R-CNN的直接擴展,而要獲得良好的結果,正確構建Mask分支至關重要。最重要的是,Faster R-CNN不是為網絡輸入和輸出之間的像素到像素對齊而設計的。在RoIPool[18, 12]中,實際上,應用到目標上的核心操作執行的是粗略的空間量化特征提取。為了修正錯位,我們提出了一個簡單的,量化無關的層,稱為RoIAlign,可以保留精確的空間位置。盡管是一個看似很小的變化,RoIAlign起到了很大的作用:它可以將Mask準確度提高10%至50%,在更嚴格的位置度量下顯示出更大的收益。其次,我們發現decouple Mask和分類至關重要:我們為每個類獨立地預測二進制Mask,這樣不會跨類別競爭,并且依賴于網絡的RoI分類分支來預測類別。相比之下,FCN通常執行每像素多類分類,分割和分類同時進行,基于我們的實驗,對于目標分割效果不佳。
Mask R-CNN超越了COCO實例分割任務[28]上所有先前最先進的單一模型結果,其中包括COCO 2016挑戰優勝者。作為補充實驗,我們的方法也優于COCO對象檢測任務。在消融實驗中,我們評估多個基本實例,這使我們能夠證明其魯棒性并分析核心因素的影響。
我們的模型可以在GPU上以200毫秒每幀的速度運行,使用一臺有8個GPU的機器,在COCO上訓練需要一到兩天的時間。我們相信,快速的訓練和測試速度,以及框架的靈活性和準確性將促進未來目標分割的研究。
最后,我們通過COCO關鍵點數據集上的人體姿態估計任務來展示我們框架的通用性。通過將每個關鍵點視為one-hot二進制Mask,只需要很少的修改,Mask R-CNN可以應用于人體關鍵點檢測。不需要額外的技巧,Mask R-CNN超過了COCO 2016人體關鍵點檢測比賽的冠軍,同時運行速度可達5 FPS。因此,Mask R-CNN可以被更廣泛地看作是用于目標級識別的靈活框架,并且可以容易地擴展到更復雜的任務。
2. Related Work
R-CNN:R-CNN方法[13]是通過找到一定數量的候選區域[42,20],并獨立地在每個RoI上執行卷積[25,24]來進行目標檢測的。 基于R-CNN的改進[18,12],使用RoIPool在特征圖上選取RoI,實現了更快的速度和更好的準確性。Faster R-CNN[36]通過使用RPN學習注意機制來產生候選框。還有后續的對Faster R-CNN靈活性和魯棒性的改進(例如[38,27,21])。這是目前在幾個基準測試中領先的框架。
目標分割:在R- CNN的有效性的推動下,目標分割的許多方法都是基于segment proposals的。先前的方法[13,15,16,9]依賴自下而上的分割[42,2]。 DeepMask[33]和[34,8]通過學習提出分割候選,然后使用Fast R-CNN分類。在這些方法中,分割先于識別,這樣做既慢又不太準確。同樣,Dai等人[10]提出了一個復雜的多級聯級聯,從候選框中預測候選分割,然后進行分類。相反,我們的方法并行進行Mask和類標簽的預測,更簡單也更靈活。
最近,Li等人[26]將[8]中的分割候選系統與[11]中的目標檢測系統進行了“全卷積目標分割”(FCIS)的融合。 在[8,11,26]中的共同想法是用全卷積得到一組位置敏感的輸出通道候選。這些通道同時處理目標分類,目標檢測和Mask,這使系統速度變得更快。但FCIS在重疊實例上出現系統錯誤,并產生虛假邊緣(圖5)。
3. Mask R-CNN
Mask R-CNN在概念上是簡單的:Faster R-CNN為每個候選目標輸出類標簽和邊框偏移量。為此,我們添加了一個輸出目標Mask的第三個分支。因此,Mask R-CNN是一種自然而直觀的點子。但是,附加的Mask輸出與類和框輸出不同,需要提取對象的更精細的空間布局。接下來,我們介紹Mask R-CNN的關鍵特點,包括像素到像素對齊,這是Fast/Faster R-CNN的主要缺失。
Faster R-CNN:我們首先簡要回顧一下Faster R-CNN檢測器[36]。Faster R-CNN由兩個階段組成。稱為區域提議網絡(RPN)的第一階段提出候選目標邊界框。第二階段,本質上是Fast R-CNN[12],使用RoIPool從每個候選框中提取特征,并進行分類和邊界回歸。兩個階段使用的特征可以共享,以便更快的推理??梢詤⒖糩21],了解Faster R-CNN和其他框架之間的最新綜合比較。
Mask R-CNN:Mask R-CNN采用相同的兩個階段,具有相同的第一階段(即RPN)。在第二階段,與預測類和框偏移量并行,Mask R-CNN還為每個RoI輸出二進制Mask。這與最近的其它系統相反,其分類取依賴于Mask預測(例如[33, 10, 26])。我們的方法遵循Fast R-CNN [12],預測類和框偏移量并行(這在很大程度上簡化了R-CNN的多級流水線[13])。
在訓練期間,我們將在每個采樣后的RoI上的多任務損失函數定義為。分類損失Lcls和檢測框損失Lbox與[12]中定義的相同。Mask分支對于每個RoI的輸出維度為Km2,即K個分辨率為m×m的二進制Mask,每個類別一個,K表示類別數量。我們為每個像素應用Sigmoid,并將Lmask定義為平均二進制交叉熵損失。對于真實類別為k的RoI,僅在第k個Mask上計算Lmask(其他Mask輸出不計入損失)。
我們對Lmask的定義允許網絡為每個類獨立地預測二進制Mask,這樣不會跨類別競爭。我們依靠專用分類分支預測用于選擇輸出Mask的類標簽。這將解耦Mask和類預測。這與通常將FCN?[30]應用于像素級Softmax和多重交叉熵損失的語義分段的做法不同。在這種情況下,Mask將在不同類別之間競爭。而我們的方法,使用了其它方法沒有的像素級的Sigmod和二進制損失。我們通過實驗發現,這種方法是改善目標分割效果的關鍵。
Mask表示:Mask表示輸入目標的空間布局。因此,與通過全連接(fc)層不可避免地縮成短輸出向量的類標簽或框偏移不同,提取Mask的空間結構可以通過由卷積提供的像素到像素對應自然地被解決。
具體來說,我們使用FCN[30]來為每個RoI預測一個m×m的Mask。這允許Mask分支中的每個層顯式的保持m×m的對象空間布局,而不會將其縮成缺少空間維度的向量表示。與以前使用fc層Mask預測的的方法不同[33, 34, 10],我們的全卷積表示需要更少的參數,并且如實驗所證明的更準確。
這種像素到像素的行為需要RoI特征,它們本身就是小特征圖。為了更好地對齊,以準確地保留顯式的像素空間對應關系,我們開發出在Mask預測中發揮關鍵作用的以下RoIAlign層。
RoIAlign:RoIPool[12]是從每個RoI提取小特征圖(例如,7×7)的標準操作。 RoIPool首先將浮點數表示的RoI縮放到與特征圖匹配的粒度,然后將縮放后的RoI分塊,最后匯總每個塊覆蓋的區域的特征值(通常使用最大池化)。例如,對在連續坐標系上的xx計算[x/16][x/16],其中16是特征圖步幅,[?]表示四舍五入。同樣地,當對RoI分塊時(例如7×7)時也執行同樣的計算。這樣的計算使RoI與提取的特征錯位。雖然這可能不會影響分類,因為分類對小幅度的變換具有一定的魯棒性,但它對預測像素級精確的Mask有很大的負面影響。
為了解決這個問題,我們提出了一個RoIAlign層,可以去除RoIPool的錯位,將提取的特征與輸入準確對齊。我們提出的改變很簡單:我們避免避免計算過程中的四舍五入(比如,我們使用x/16代替[x/16])。我們選取分塊中的4個常規的位置,使用雙線性插值[22]來計算每個位置的精確值,并將結果匯總(使用最大或平均池化)。(我們抽取四個常規位置,以便我們可以使用最大或平均池化。事實上,在每個分塊中心取一個值(沒有池化)幾乎同樣有效。我們也可以為每個塊采樣超過四個位置,我們發現這些位置的收益遞減。)
如我們在消融實驗中所示,RoIAlign的改進效果明顯。我們還比較了[10]中提出的RoIWarp操作。與RoIAlign不同,RoIWarp忽略了對齊問題,并在[10]的實現中,有像RoIPool那樣的四舍五入計算。因此,即使RoIWarp也采用[22]提到的雙線性重采樣,如實驗所示(更多細節見表格2c),它與RoIPool效果差不多。這表明了對齊起到了關鍵的作用。
網絡架構:為了證明我們的方法的普適性,我們構造了多種不同結構的Mask R-CNN。詳細來說就是,我們使用不同的:(i)用于整個圖像上的特征提取的下層卷積網絡,以及(ii)用于檢測框識別(分類和回歸)和Mask預測的上層網絡。
我們使用”網絡-深度-特征輸出層”的方式命名底下層卷積網絡。我們評估了深度為50或101層的ResNet[10]?????9?和ResNeXt[45]?????網絡。使用ResNet[19]的Faster R-CNN從第四階段的最終卷積層提取特征,我們稱之為C4。例如,使用ResNet-50的下層網絡由ResNet-50-C4表示。這是[19,10,21,39]中常用的選擇。
我們還探討了Lin等人 [27]最近提出的另一種更有效的下層網絡,稱為特征金字塔網絡(FPN)。 FPN使用具有橫旁路連接的自頂向下架構,以從單尺度輸入構建網絡中的特征金字塔。使用FPN的Faster R-CNN根據其尺度提取不同級別的金字塔的RoI特征,不過其它部分和平常的ResNet類似。使用ResNet-FPN進行特征提取的Mask R-CNN可以在精度和速度方面獲得極大的提升。有關FPN的更多細節,參見[27]??????。
對于上層網絡,我們基本遵循了以前論文中提出的架構,我們添加了一個全卷積的Mask預測分支。具體來說,我們擴展了 ResNet[19]和FPN[27]???????中提出的Faster R-CNN的上層網絡。詳細信息如下圖(圖4)所示:
圖4(上層網絡架構:我們擴展了兩種現有的Faster R-CNN上層網絡架構[19,27],分別添加了一個Mask分支。圖中數字表示分辨率和通道數,箭頭表示卷積、反卷積或全連接層(可以通過上下文推斷,卷積減小維度,反卷積增加維度。)所有的卷積都是3×3的,除了輸出層,是1×1的。反卷積是2×2的,步進為2,,我們在隱藏層中使用ReLU[31]。左圖中,“res5”表示ResNet的第五階段,簡單起見,我們修改了第一個卷積操作,使用7×7,步長為1的RoI代替14×14,步長為2的RoI[19]。右圖中的“×4×4”表示堆疊的4個連續的卷積。)ResNet-C4的上層網絡包括ResNet的第五階段(即9層的“res5”[19]),這是計算密集型的。對于FPN,下層網已經包含了res5,因此可以使上層網絡包含更少的卷積核而變的更高效。
我們注意到我們的Mask分支是一個非常簡單的結構。也許更復雜的設計有可能提高性能,但不是這項工作的重點。
3.1. Implementation Details
超參數的設置與現有的Fast/Faster R-CNN基本一致[12, 36, 27]。雖然這些設定是在原始論文中是用于目標檢測的[12, 36, 27],但是我們發現我們的目標分割系統也是可以用。
訓練:與Faster R-CNN中的設置一樣,如果RoI與真值框的IoU不小于0.5,則為正樣本,否則為負樣本。Mask損失函數LmaskLmask僅在RoI的正樣本上定義。Mask目標是RoI及其對應的真值框之間的交集的Mask。
我們采用以圖像為中心的訓練[12]。圖像被縮放(較短邊)到800像素[27]。批量大小為每個GPU2個圖像,每個圖像具有N個RoI采樣,正負樣本比例為1:3[12]。 C4下層網絡的N為64(如[12,36]),FPN為512(如[27])。我們使用8個GPU訓練(如此有效的批量大小為16)160k次迭代,學習率為0.02,在120k次迭代時學習率除以10。我們使用0.0001的權重衰減和0.9的動量。
RPN錨點跨越5個尺度和3個縱橫比[27]。為方便消融,RPN分開訓練,不與Mask R-CNN共享特征。本文中的,RPN和Mask R-CNN具有相同的下層網絡,因此它們是可共享的。
測試:在測試時,C4下層網絡(如[36])中的候選數量為300,FPN為1000(如[27])。我們在這些候選上執行檢測框預測分支,然后執行非極大值抑制[14]。然后將Mask分支應用于評分最高100個檢測框。盡管這與訓練中使用的并行計算不同,但它可以加速推理并提高精度(由于使用更少,更準確的RoI)。Mask分支可以預測每個RoI的K個Mask,但是我們只使用第k個Mask,其中k是分類分支預測的類別。然后將m×m浮點數Mask輸出的大小調整為RoI大小,并使用閾值0.5將其二值化。
請注意,由于我們僅在前100個檢測框中計算Mask,Mask R-CNN將邊緣運行時間添加到其對應的Faster R-CNN版本(例如,相對約20%)。
4. Experiments: Instance Segmentation
我們對Mask R-CNN與現有技術進行徹底的比較,并且進行了綜合的消融實驗。我們的實驗使用COCO數據集[28]。我們報告標準的COCO指標,包括AP(平均超過IoU閾值),AP50,AP75和APS,APM,APL(不同尺度的AP)。除非另有說明,使用Mask IoU評估AP,這與[5,27]一樣。我們訓練使用80k訓練集和35k驗證集的子集(trainval35k)的組合,并在剩下的5k個驗證集子集(minival)上報告消融。我們還給出了test-dev [28]的結果,其沒有公開的標簽。本文發布后,我們將根據建議把在test-std測試的完整結果上傳到公開排行榜。
4.1. Main Results
我們將Mask R-CNN與其它最先進的目標分割方法進行比較,如下表(表1)所示:(COCO test-dev上的目標分割Mask AP。 MNC[10]和FCIS[26]分別是COCO 2015和2016分割挑戰的獲勝者。Mask R-CNN優于更復雜的,包含多尺度訓練和測試、水平翻轉測試的FCIS+++,和OHEM[26]。所有條目都是單模型的結果。)
我們的模型的所有實例都勝過了先前最先進的模型。此外,這些模型中的改進也同樣可以應用到Mask R-CNN中。
Mask R-CNN的輸出見下圖(圖2和圖4):
(圖2)Mask R-CNN在COCO測試集上的結果。這些結果基于ResNet-101,Mask AP達到了35.7,并可以5FPS的速度運行。Mask標記為彩色,并且標記出了邊框、類別和置信度。
(圖4)Mask R-CNN在COCO測試集上更多的結果。使用ResNet-101-FPN,并可以35FPS運行。Mask AP為35.7(表1)。
Mask R-CNN取得了良好的效果。在下圖(圖5)中:
FCIS+++[26](上)對比 Mask R-CNN(下,ResNet-101-FPN)。 FCIS在重疊對象上有問題,Mask R-CNN沒問題。
4.2. Ablation Experiments
我們進行了一些消融來分析Mask R-CNN。結果顯示在下表(表2)中(Mask R-CNN的消融。我們在trainval35k上訓練,在minival上測試,并報告Mask AP,除非另有說明。),并在下面詳細討論。
結構:表2a顯示了具有各種使用不同下層網絡的Mask R-CNN。它受益于更深層次的網絡(50對比101)和高級設計,包括FPN和ResNeXt(我們使用64×4d64×4d的普通的ResNeXt)。我們注意到并不是所有的框架都會從更深層次的或高級的網絡中自動獲益(參見[21]中的基準測試)。
獨立與非獨立Mask???????:Mask R-CNN解耦了Mask和類預測:由于現有的檢測框分支預測類標簽,所以我們為每個類生成一個Mask,而不會在類之間產生競爭(通過像素級Sigmoid和二值化損失)。在表2b中,我們將其與使用像素級Softmax和非獨立損失的方法進行比較(常用于FCN[20])。這些方法將Mask和類預測的任務結合,導致了MaskAP(5.5個點)的嚴重損失。這表明,一旦目標被歸類(通過檢測框分支),就可以預測二值化Mask而不用擔心類別,這樣可以使模型更容易訓練。
類相關與類無關Mask???????:我們默認預測類相關的Mask,即每類一個m×m?Mask 。有趣的是,這種方法與具有類別無關Mask的Mask R-CNN(即,預測單個m×mm×m輸出而不論是那一類)幾乎同樣有效:對于ResNet-50-C4 Mask AP為29.7,而對于類相關的對應的模型AP為30.3 。這進一步突出了我們的方法中的改進:解耦了分類和分割。
RoIAlign:表2c顯示了對我們提出的RoIAlign層的評估。對于這個實驗,我們使用的下層網絡為ResNet-50-C4,其步進為16。RoIAlign相對RoIPool將AP提高了約3個點,在高IoU(AP75AP75)結果中增益更多。 RoIAlign對最大/平均池化不敏感,我們在本文的其余部分使用平均池化。
此外,我們與采用雙線性采樣的MNC [10]中提出的RoIWarp進行比較。如4.1實例分割實驗所述,RoIWarp仍然四舍五入了RoI,與輸入失去了對齊。從表2c可以看出,RoIWarp與RoIPool效果差不多,比RoIAlign差得多。這突出表明正確的對齊是關鍵。
我們還使用ResNet-50-C5下層網絡評估了RoIAlign,其步進更大,達到了32像素。我們使用與圖3(右)相同的上層網絡,因為res5不適用。表2d顯示,RoIAlign將Mask AP提高了7.3個點,并將Mask的AP75 提高了10.5個點(相對改善了50%)。此外,我們注意到,與RoIAlign一樣,使用步幅為32的C5特征(30.9 AP)比使用步幅為16的C4特征(30.3 AP,表2c)更加精準。 RoIAlign在很大程度上解決了使用大步進特征進行檢測和分割的長期挑戰。
最后,當與FPN一起使用時,RoIAlign顯示出1.5個Mask AP和0.5個檢測框AP的增益,FPN具有更精細的多級步長。對于需要更精細對準的關鍵點檢測,即使使用FPN,RoIAlign也顯示出很大的增益(表6)。
Mask分支:分割是一個像素到像素的任務,我們使用FCN來利用Mask 的空間布局。在表2e中,我們使用ResNet-50-FPN下層網絡來比較多層感知機(MLP)和FCN。使用FCN可以提供超過MLP 2.1個點的AP增益。為了與與MLP進行公平的比較,FCN的上層網絡的卷積層沒有被預訓練。
4.3. Bounding Box Detection Results
我們在COCO數據集上將Mask R-CNN與其它最先進的目標檢測方法進行比較,如下表(表3)所示:(目標檢測結果(目標邊界框AP),單模型,在test-dev上與其它最先進的技術對比。使用ResNet-101-FPN的Mask R-CNN優于所有先前最先進的模型的基本變體(實驗中忽略了Mask輸出)。Mask R-CNN超過[39]的增益來自使用RoIAlign(+1.1?APbb),多任務訓練(+0.9?APbb)和ResNeXt-101(+1.6?APbb)。)
對于該結果,雖然完整的Mask R-CNN模型被訓練,但是測試時僅使用分類和檢測的輸出(忽略Mask輸出)。Mask R-CNN使用ResNet-101- FPN優于所有先前最先進的模型的基本變體,包括單模型的G-RMI[21]的,COCO 2016目標檢測挑戰的獲勝者。使用ResNeXt-101-FPN的Mask R-CNN進一步改善了結果,其AP相對于使用單模型的前最佳結果397](使用Inception-ResNet-v2-TDM) 提升了3個點。
作為進一步的比較,我們訓練了一個沒有Mask分支版本的Mask R-CNN,見表3中的“Faster R-CNN,RoIAlign”。由于RoIAlign,該模型的性能優于[27]中提出的模型。但是,比Mask R-CNN低0.9個點的AP。這個差距這是由于Mask R-CNN的多任務訓練產生的。
最后,我們注意到,Mask R-CNN在其Mask和檢測框的AP之間的差距很小:例如,AP 37.1(Mask,表1)與AP 39.8(檢測框,表3)之間的差距僅2.7個點。這表明我們的方法在很大程度上彌補了目標檢測與更具挑戰性的目標分割任務之間的差距。
4.4. Timing
測試:我們訓練一個ResNet-101-FPN模型,在RPN和Mask R-CNN階段之間共享特征,遵循Faster R-CNN的四階段訓練[36]。該模型在Nvidia Tesla M40 GPU上處理每個圖像需要195ms(加上15毫秒的CPU時間,用于將輸出的大小調整到原始分辨率),并且達到了與非共享特征模型相同的Mask AP。我們還指出,ResNet-101-C4變體需要大約400ms,因為它的上層模型比較復雜(圖3),所以我們不建議在實踐中使用C4變體。
雖然Mask R-CNN很快,但我們注意到,我們的設計并沒有針對速度進行優化,[21]可以實現更好的速度/精度平衡,例如,通過改變圖像尺寸和候選數量,這超出了本文的范圍。
訓練:Mask R-CNN的訓練也很快。在COCO trainval35k上使用ResNet-50-FPN進行訓練,我們的同步8 GPU實現(每個批次耗時0.72秒,包含16個圖像)需要32小時,而ResNet-101-FPN需要44小時。事實上,快速原型可以在不到一天的時間內在訓練集上進行訓練。我們希望這樣快速的訓練將會消除這一領域的重大障礙,并鼓勵更多的人對這個具有挑戰性的課題進行研究。
5. Mask R-CNN for Human Pose Estimation
我們的框架可以很容易地擴展到人類姿態估計。我們將關鍵點的位置建模為one-hot Mask,并采用Mask R-CNN來預測K個Mask,每個對應KK種關鍵點類型之一(例如左肩,右肘)。此任務有助于展示Mask R-CNN的靈活性。
我們注意到,我們的系統利用了人類姿態的最小領域知識,因為實驗主要是為了證明Mask R-CNN框架的一般性。我們期望領域知識(例如,建模結構[6])將是我們簡單方法的補充,但這超出了本文的范圍。
實現細節:在適配關鍵點時,我們對分割系統進行細微的修改。對于目標的KK個關鍵點中的每一個,訓練目標是一個one-hot的m×mm×m二進制Mask,其中只有一個像素被標記為前景。在訓練期間,對于每個可視的關鍵點真實值,我們最小化在m2m2路Softmax輸出上的交叉熵損失(這驅使一個點被檢測到)。我們注意到,和目標分割一樣,K個關鍵點的檢測仍然是獨立對待的。
我們采用ResNet-FPN的變體,關鍵點檢測的上層架構類似于圖3(右圖),由八個堆疊的3×3 512-d卷積層,后面是一個反卷積層進行2×雙線性上采樣,產生分辨率56×56的輸出。我們發現相對較高的分辨率輸出(與Mask相比)是關鍵點級精確定位所必需的。
我們使用包含關鍵點標注的COCO trainval35k圖像訓練模型。由于訓練集較小,為了減少過擬合,我們訓練時將圖像在[640,800]范圍內隨機縮放,測試則統一縮放到800像素。我們的訓練迭代90k次,從0.02的學習率開始,并在迭代次數達到60k和80k次時將學習率除以10。檢測框的非極大值抑制閾值為0.5。其他實現細節與實現細節相同。
人體姿態估計實驗:使用ResNet-50-FPN評估人體關鍵點的AP(APkp)。我們也嘗試了ResNet-101,不過效果差不多,可能是因為更深層次的模型需要更多的訓練數據,但是這個數據集相對較小。
如下表(表4)所示:(COCO test-dev 上的關鍵點檢測AP。我們的(ResNet-50-FPN)模型是以5 FPS的速度運行的單模型。 CMU-Pose+++是2016年度的優勝者,使用多尺度測試,CPM進行后處理[44],并使用目標檢測進行過濾,提高了約5個點(與作者溝通確認)。 ?:G-RMI使用兩種模型(Inception-ResNet-v2 + ResNet-101),用COCO加MPII [6](25k圖像)進行訓練。由于他們使用了更多的數據,無法直接與Mask R-CNN進行比較。)
我們的結果(62.7?APkpAPkp)比使用多級處理流水線的COCO 2016關鍵點檢測獲勝者31高出0.9個點。我們的方法要簡單得多,速度更快。
更重要的是,我們用一個統一的模型,可以5 FPS的速度同時做目標檢測、目標分割和關鍵點檢測。添加目標分割分支(針對人員類別)將test-dev上的APkpAPkp提升到63.1(表4)。更多在minival上的多任務學習的消除在下表(表5)中:(目標檢測、目標分割和關鍵點檢測的多任務學習,在minival上的測試。為了公平起見,所有的模型都使用相同的訓練數據。下層網絡是ResNet-50-FPN。 第三行在minival上64.2 AP,在test-dev上62.7 AP。第四行在minival上64.7 AP,在test-dev上有63.1 AP,見表4。)
將Mask分支添加到僅做目標檢測(如,Faster R-CNN)或僅檢測關鍵點的網絡上也會改進這些任務的準確率。然而,添加關鍵點分支會輕微降低目標檢測/目標分割的AP,關鍵點檢測會從多任務訓練中獲益,但它不會改善其他任務的準確率。然而,共同學習所有三個任務可以使統一的系統同時有效地預測所有輸出,如下圖(圖6)所示:(使用Mask R-CNN(ResNet-50-FPN)在COCO test上的關鍵點檢測結果,該模型也同時輸出目標分割結果。其關鍵點檢測的AP為63.1,運行速度為5 FPS。)。
我們還調查了RoIAlign對關鍵點檢測的影響,如下表(表6)所示:(RoIAlign與RoIPool在minival上關鍵點檢測。)
盡管這款ResNet-50-FPN下層網絡有較小的步進(例如,最小步進為4像素),但RoIAlign相對RoIPool仍然有明顯的改進,并將APkpAPkp提高了4.4個點。這是因為關鍵點檢測對定位精度更敏感。這再次表明對齊對像素級定位是至關重要的,包括Mask和關鍵點。
鑒于Mask R-CNN提取目標框,Mask和關鍵點的有效性,我們期望它也可以成為其它目標級任務的有效框架。
Cityscapes上的實驗
我們進一步報告Cityscapes [7]數據集的目標分割結果。該數據集具有精細標注的2975個訓練圖像,500個驗證圖像和1525個測試圖像。它還有20k粗糙的訓練圖像,無精細標注,我們不使用它們。所有圖像的分辨率為2048 x 1024像素。目標分割任務涉及8個對象類別,其訓練集中的目標數為:
| 17.9k | 1.8k | 26.9k | 0.5k | 0.4k | 0.2k | 0.7k | 3.7k |
該任務的目標分割性能由和COCO一樣的Mask AP(在IoU閾值上平均)來測量,也包括AP50AP50(即,IoU為0.5的MaskAP)。
實現:我們Mask R-CNN模型使用的下層網絡是ResNet-FPN-50,我們也測試了對應的101層的網絡,不過由于數據集比較小,性能相似。我們將圖像在[800,1024][800,1024]像素范圍內隨機縮放(較短邊)進行訓練,從而減少過擬合。測試時則統一縮放到1024像素。我們使用的批量大小為每個GPU 1個圖像(實際上8個GPU上有8個),學習率為0.01,迭代次數為24k,在迭代次數達到18k時,學習率減少到0.001。其他實現細節與實現細節相同。
結果:我們在測試集和驗證集上,將我們的結果與其它主流方法進行了比較,如下表(表7)所示:
在不使用無精細標注的訓練集的情況下,我們的方法在測試集上的AP達到了26.2,相對于以前的最佳結果(使用了所有的訓練集),相對提升了超過30%。與僅使用精細標注訓練集(17.4 AP)的前最佳結果相比,相對提升了約50%。在一臺8 GPU的機器上需要約4個小時的訓練才能獲得此結果。
對于人和小汽車類別,Cityscapes數據集包含了大量的類內重疊目標(每個圖像平均6人和9輛小汽車)。我們認為類內重疊是目標分割的核心難點。我們的方法在這兩個類別相對前最佳結果有大幅度改善(人相對提升了約85%,從16.5提高到30.5,小汽車相對提升了約30%,從35.7提高到46.9)。
Cityscapes數據集的主要挑戰是訓練數據較少,特別是對于卡車,公共汽車和火車的類別,每個類別的訓練樣本大約有200-500個。為了在一定程度上改善這個問題,我們進一步報告了使用COCO預訓練的結果。為了做到這一點,我們使用預先訓練好的COCO Mask R-CNN模型(騎手類別被隨機初始化)。然后我們在Cityscapes數據集上進行4k次迭代來微調這個模型,其中學習速率在迭代次數達到3k時減少,微調需要約1小時。
使用COCO預訓練的Mask R-CNN模型在測試集上達到了32.0 AP,比不預訓練的模型提高了6個點。這表明足夠的訓練數據的重要性。同時,在Cityscapes數據集上的目標分割還收到其low-shot學習性能的影響。我們發現,使用COCO預訓練是減輕涉及此數據集的數據數據偏少問題的有效策略。
最后,我們觀察到測試集和訓練集AP之間的偏差,從的結果也可以看出。我們發現這種偏差主要是由卡車,公共汽車和火車類別造成的,其中只使用精細標注訓練數據的模型,在驗證集和測試集上的AP分別為28.8/22.8,53.5/32.2和33.0/18.6。這表明這些訓練數據很少的類別存在domain shift。 COCO預訓練有助于改善這些類別上的結果,然而,domain shift依然存在,在驗證集和測試集上的AP分別為38.0/30.1,57.5/40.9和41.2/30.9。不過,對于人和小汽車類別,我們沒有看到任何此類偏差(在驗證集和測試集上的AP偏差在±1以內)。
Cityscapes的結果示例如下圖(圖7)所示:(Mask R-CNN在Cityscapes的測試結果(32.0 AP)。右下圖出錯。)
總結
以上是生活随笔為你收集整理的(42)[ICCV17] Mask R-CNN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【HDU】 4833 Best Fina
- 下一篇: Unity内嵌网页插件