【論文翻譯】Mask R-CNN
Mask R-CNN
Kaiming He Georgia Gkioxari Piotr Dolla ́r Facebook AI Research (FAIR)
Ross Girshick
摘要
我們提出了一個概念上簡單,靈活和通用的目標分割框架。我們的方法有效地檢測影象中的目標,同時為每個例項生成高質量的分割掩碼。稱為Mask R-CNN的方法通過新增一個與現有目標檢測框迴歸並行的,用於預測目標掩碼的分支來擴充套件Faster R-CNN。Mask R-CNN訓練簡單,相對於Faster R-CNN,只需增加一個較小的開銷,執行速度可達5 FPS。此外,Mask R-CNN很容易推廣到其他任務,例如,允許我們在同一個框架中估計人的姿勢。我們在COCO挑戰的所有三個專案中取得了最佳成績,包括目標分割,目標檢測和人體關鍵點檢測。在沒有使用額外技巧的情況下,Mask R-CNN優於所有現有的單一模型,包括COCO 2016挑戰優勝者。我們希望我們的簡單而有效的方法將成為一個促進未來目標級識別領域研究的堅實基礎。我們稍後將提供程式碼。
簡介
目標檢測和語義分割的效果在短時間內得到了很大的改善。在很大程度上,這些進步是由強大的基線系統驅動的,例如,分別用於目標檢測和語義分割的Fast/Faster R-CNN1 2和全卷積網路(FCN)3框架。這些方法在概念上是直觀的,提供靈活性和魯棒性,以及快速的訓練和推理。我們在這項工作中的目標是為目標分割開發一個相對有力的框架。
目標分割是具有挑戰性的,因為它需要正確檢測影象中的所有目標,同時也精確地分割每個目標。因此,它結合了來自經典計算機視覺任務目標檢測的元素,其目的是對目標進行分類,並使用邊界框定位每個目標,以及語義分割(通常來說,目標檢測來使用邊界框而不是掩碼來標定每一個目標檢測,而語義分割以在不區分目標的情況下表示每畫素的分類。然而,目標分割既是語義分割,又是另一種形式的檢測。)鑑於此,人們可能認為需要一種複雜的方法才能取得良好的效果。然而,我們的研究表明,使用非常簡單,靈活和快速的系統就可以超越先前的最先進的目標分割結果。
我們稱之為Mask R-CNN的方法通過新增一個用於在每個感興趣區域(RoI)上預測分割掩碼的分支來擴充套件Faster R-CNN [34],這個分支與用於分類和目標檢測框迴歸的分支並行執行,如下圖(圖1)所示(用於目標分割的Mask R-CNN框架):
掩碼分支是作用於每個RoI的小FCN,以畫素到畫素的方式預測分割掩碼。Mask R-CNN易於實現和訓練,它是基於Faster R-CNN這種靈活的框架的。此外,掩碼分支只增加了很小的計算開銷。
原理上,Mask R-CNN是Faster R-CNN的直接擴充套件,而要獲得良好的結果,正確構建掩碼分支至關重要。最重要的是,Faster R-CNN不是為網路輸入和輸出之間的畫素到畫素對齊而設計的。在《how RoIPool》
Mask R-CNN超越了COCO例項分割任務[28]上所有先前最先進的單一模型結果,其中包括COCO 2016挑戰優勝者。作為副產品,我們的方法也優於COCO物件檢測任務。在消融實驗中,我們評估多個基本例項,這使我們能夠證明其魯棒性並分析核心因素的影響。
我們的模型可以在GPU上以200毫秒每幀的速度執行,使用一臺有8個GPU的機器,在COCO上訓練需要一到兩天的時間。我們相信,快速的訓練和測試速度,以及框架的靈活性和準確性將促進未來目標分割的研究。
最後,我們通過COCO關鍵點資料集上的人體姿態估計任務來展示我們框架的通用性5。通過將每個關鍵點視為one-hot二進位制掩碼,只需要很少的修改,Mask R-CNN可以應用於人體關鍵點檢測。不需要額外的技巧,Mask R-CNN超過了COCO 2016人體關鍵點檢測比賽的冠軍,同時執行速度可達5 FPS。因此,Mask R-CNN可以被更廣泛地看作是用於目標級識別的靈活框架,並且可以容易地擴充套件到更復雜的任務。
我們將釋出程式碼以促進未來的研究。
相關工作
**R-CNN:**R-CNN方法6是通過找到一定數量的候選區域7 8,並獨立地在每個RoI上執行卷積9 10來進行目標檢測的。 基於R-CNN的改進4 1,使用RoIPool在特徵圖上選取RoI,實現了更快的速度和更好的準確性。Faster R-CNN2通過使用RPN學習注意機制來產生候選框。還有後續的對Faster R-CNN靈活性和魯棒性的改進(例如11 1213)。這是目前在幾個基準測試中領先的框架。
目標分割:在R- CNN的有效性的推動下,目標分割的許多方法都是基於segment proposals的。先前的方法6 14 15 16依賴自下而上的分割7 17。 DeepMask18和19 20通過學習提出分割候選,然後使用Fast R-CNN分類。在這些方法中,分割先於識別,這樣做既慢又不太準確。同樣,Dai等人21提出了一個複雜的多級聯級聯,從候選框中預測候選分割,然後進行分類。相反,我們的方法並行進行掩碼和類標籤的預測,更簡單也更靈活。
最近,Li等人22將20中的分割候選系統與23中的目標檢測系統進行了“全卷積目標分割”(FCIS)的融合。 在20 2322中的共同想法是用全卷積得到一組位置敏感的輸出通道候選。這些通道同時處理目標分類,目標檢測和掩碼,這使系統速度變得更快。但FCIS在重疊例項上出現系統錯誤,併產生虛假邊緣(圖5)。
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檢測器2。Faster R-CNN由兩個階段組成。稱為區域提議網路(RPN)的第一階段提出候選目標邊界框。第二階段,本質上是Fast R-CNN 1,使用RoIPool從每個候選框中提取特徵,並進行分類和邊界迴歸。兩個階段使用的特徵可以共享,以便更快的推理。可以參考13,瞭解Faster R-CNN和其他框架之間的最新綜合比較。
**Mask R-CNN:**Mask R-CNN採用相同的兩個階段,具有相同的第一階段(即RPN)。在第二階段,與預測類和框偏移量並行,Mask R-CNN還為每個RoI輸出二進位制掩碼。這與最近的其它系統相反,其分類取依賴於掩碼預測(例如18 21 22)。我們的方法遵循Fast R-CNN [12],預測類和框偏移量並行(這在很大程度上簡化了R-CNN的多級流水線6)。
在訓練期間,我們將在每個取樣後的RoI上的多工損失函式定義為L=Lcls+Lbox+LmaskL=Lcls+Lbox+Lmask。分類損失LclsLcls和檢測框損失LboxLbox與1中定義的相同。掩碼分支對於每個RoI的輸出維度為Km2Km2,即KK個解析度為m×mm×m的二進位制掩碼,每個類別一個,KK表示類別數量。我們為每個畫素應用Sigmoid,並將LmaskLmask定義為平均二進位制交叉熵損失。對於真實類別為kk的RoI,僅在第kk個掩碼上計算LmaskLmask(其他掩碼輸出不計入損失)。
我們對LmaskLmask的定義允許網路為每個類獨立地預測二進位制掩碼,這樣不會跨類別競爭。我們依靠專用分類分支預測用於選擇輸出掩碼的類標籤。這將解耦掩碼和類預測。這與通常將FCN 3應用於畫素級Softmax和多重交叉熵損失的語義分段的做法不同。在這種情況下,掩碼將在不同類別之間競爭。而我們的方法,使用了其它方法沒有的畫素級的Sigmod和二進位制損失。我們通過實驗發現,這種方法是改善目標分割效果的關鍵。
掩碼錶示:掩碼錶示輸入目標的空間佈局。因此,與通過全連線(fc)層不可避免地縮成短輸出向量的類標籤或框偏移不同,提取掩碼的空間結構可以通過由卷積提供的畫素到畫素對應自然地被解決。
具體來說,我們使用FCN3來為每個RoI預測一個m×mm×m的掩碼。這允許掩碼分支中的每個層顯式的保持m×mm×m的物件空間佈局,而不會將其縮成缺少空間維度的向量表示。與以前使用fc層掩碼預測的的方法不同18 19 21,我們的全卷積表示需要更少的引數,並且如實驗所證明的更準確。
這種畫素到畫素的行為需要RoI特徵,它們本身就是小特徵圖。為了更好地對齊,以準確地保留顯式的畫素空間對應關係,我們開發出在掩模預測中發揮關鍵作用的以下RoIAlign層。
**RoIAlign:**RoIPool1是從每個RoI提取小特徵圖(例如,7×77×7)的標準操作。 RoIPool首先將浮點數表示的RoI縮放到與特徵圖匹配的粒度,然後將縮放後的RoI分塊,最後彙總每個塊覆蓋的區域的特徵值(通常使用最大池化)。例如,對在連續座標系上的xx計算[x/16][x/16],其中16是特徵圖步幅,[⋅][⋅]表示四捨五入。同樣地,當對RoI分塊時(例如7×77×7)時也執行同樣的計算。這樣的計算使RoI與提取的特徵錯位。雖然這可能不會影響分類,因為分類對小幅度的變換具有一定的魯棒性,但它對預測畫素級精確的掩碼有很大的負面影響。
為了解決這個問題,我們提出了一個RoIAlign層,可以去除RoIPool的錯位,將提取的特徵與輸入準確對齊。我們提出的改變很簡單:我們避免避免計算過程中的四捨五入(比如,我們使用x/16x/16代替[x/16][x/16])。我們選取分塊中的4個常規的位置,使用雙線性插值24來計算每個位置的精確值,並將結果彙總(使用最大或平均池化)。(我們抽取四個常規位置,以便我們可以使用最大或平均池化。事實上,在每個分塊中心取一個值(沒有池化)幾乎同樣有效。我們也可以為每個塊取樣超過四個位置,我們發現這些位置的收益遞減。)
如我們在消融實驗中所示,RoIAlign的改進效果明顯。我們還比較了21中提出的RoIWarp操作。與RoIAlign不同,RoIWarp忽略了對齊問題,並在21的實現中,有像RoIPool那樣的四捨五入計算。因此,即使RoIWarp也採用24提到的雙線性重取樣,如實驗所示(更多細節見表格2c),它與RoIPool效果差不多。這表明了對齊起到了關鍵的作用。
網路架構:為了證明我們的方法的普適性,我們構造了多種不同結構的Mask R-CNN。詳細來說就是,我們使用不同的:(i)用於整個影象上的特徵提取的下層卷積網路,以及(ii)用於檢測框識別(分類和迴歸)和掩碼預測的上層網路。
我們使用”網路-深度-特徵輸出層”的方式命名底下層卷積網路。我們評估了深度為50或101層的ResNet25和ResNeXt26網路。使用ResNet25的Faster R-CNN從第四階段的最終卷積層提取特徵,我們稱之為C4。例如,使用ResNet-50的下層網路由ResNet-50-C4表示。這是25 21 13 27中常用的選擇。
我們還探討了Lin等人 12最近提出的另一種更有效的下層網路,稱為特徵金字塔網路(FPN)。 FPN使用具有橫旁路連線的自頂向下架構,以從單尺度輸入構建網路中的特徵金字塔。使用FPN的Faster R-CNN根據其尺度提取不同級別的金字塔的RoI特徵,不過其它部分和平常的ResNet類似。使用ResNet-FPN進行特徵提取的Mask R-CNN可以在精度和速度方面獲得極大的提升。有關FPN的更多細節,參見12。
對於上層網路,我們基本遵循了以前論文中提出的架構,我們添加了一個全卷積的掩碼預測分支。具體來說,我們擴充套件了 ResNet25和FPN12中提出的Faster R-CNN的上層網路。詳細資訊如下圖(圖3)所示:(上層網路架構:我們擴充套件了兩種現有的Faster R-CNN上層網路架構25 12,分別添加了一個掩碼分支。圖中數字表示解析度和通道數,箭頭表示卷積、反捲積或全連線層(可以通過上下文推斷,卷積減小維度,反捲積增加維度。)所有的卷積都是3×33×3的,除了輸出層,是1×11×1的。反捲積是2×22×2的,步進為2,,我們在隱藏層中使用ReLU28。左圖中,“res5”表示ResNet的第五階段,簡單起見,我們修改了第一個卷積操作,使用7×77×7,步長為1的RoI代替14×1414×14,步長為2的RoI25。右圖中的“×4×4”表示堆疊的4個連續的卷積。)
ResNet-C4的上層網路包括ResNet的第五階段(即9層的“res5”25),這是計算密集型的。對於FPN,下層網已經包含了res5,因此可以使上層網路包含更少的卷積核而變的更高效。
我們注意到我們的掩碼分支是一個非常簡單的結構。也許更復雜的設計有可能提高效能,但不是這項工作的重點。
實現細節
超引數的設定與現有的Fast/Faster R-CNN基本一致1 2 12。雖然這些設定是在原始論文中是用於目標檢測的1 212,但是我們發現我們的目標分割系統也是可以用。
訓練:與Faster R-CNN中的設定一樣,如果RoI與真值框的IoU不小於0.5,則為正樣本,否則為負樣本。掩碼損失函式LmaskLmask僅在RoI的正樣本上定義。掩碼目標是RoI及其對應的真值框之間的交集的掩碼。
我們採用以影象為中心的訓練1。影象被縮放(較短邊)到800畫素12。批量大小為每個GPU2個影象,每個影象具有N個RoI取樣,正負樣本比例為1:31。 C4下層網路的N為64(如1 2),FPN為512(如12)。我們使用8個GPU訓練(如此有效的批量大小為16)160k次迭代,學習率為0.02,在120k次迭代時學習率除以10。我們使用0.0001的權重衰減和0.9的動量。
RPN錨點跨越5個尺度和3個縱橫比12。為方便消融,RPN分開訓練,不與Mask R-CNN共享特徵。本文中的,RPN和Mask R-CNN具有相同的下層網路,因此它們是可共享的。
測試:在測試時,C4下層網路(如2)中的候選數量為300,FPN為1000(如12)。我們在這些候選上執行檢測框預測分支,然後執行非極大值抑制29。然後將掩碼分支應用於評分最高100個檢測框。儘管這與訓練中使用的平行計算不同,但它可以加速推理並提高精度(由於使用更少,更準確的RoI)。掩碼分支可以預測每個RoI的KK個掩碼,但是我們只使用第kk個掩碼,其中kk是分類分支預測的類別。然後將m×mm×m浮點數掩碼輸出的大小調整為RoI大小,並使用閾值0.5將其二值化。
請注意,由於我們僅在前100個檢測框中計算掩碼,Mask R-CNN將邊緣執行時間新增到其對應的Faster R-CNN版本(例如,相對約20%)。
實驗:目標分割
我們對Mask R-CNN與現有技術進行徹底的比較,並且進行了綜合的消融實驗。我們的實驗使用COCO資料集5。我們報告標準的COCO指標,包括AP(平均超過IoU閾值),AP50AP50,AP75AP75和APSAPS,APMAPM,APLAPL(不同尺度的AP)。除非另有說明,使用掩碼IoU評估AP,這與30 12一樣。我們訓練使用80k訓練集和35k驗證集的子集(trainval35k)的組合,並在剩下的5k個驗證集子集(minival)上報告消融。我們還給出了test-dev [28]的結果,其沒有公開的標籤。本文釋出後,我們將根據建議把在test-std測試的完整結果上傳到公開排行榜。
主要結果
我們將Mask R-CNN與其它最先進的目標分割方法進行比較,如下表(表1)所示:(COCO test-dev上的目標分割掩碼AP。 MNC21和FCIS22分別是COCO 2015和2016分割挑戰的獲勝者。Mask R-CNN優於更復雜的,包含多尺度訓練和測試、水平翻轉測試的FCIS+++,和OHEM11。所有條目都是單模型的結果。)
我們的模型的所有例項都勝過了先前最先進的模型。此外,這些模型中的改進也同樣可以應用到Mask R-CNN中。
Mask R-CNN的輸出見下圖(圖2和圖4):
(圖2)Mask R-CNN在COCO測試集上的結果。這些結果基於ResNet-10125,掩碼AP達到了35.7,並可以5FPS的速度執行。掩碼標記為彩色,並且標記出了邊框、類別和置信度。
(圖4)Mask R-CNN在COCO測試集上更多的結果。使用ResNet-101-FPN,並可以35FPS執行。掩碼AP為35.7(表1)。
Mask R-CNN取得了良好的效果。在下圖(圖5)中:
FCIS+++22(上)對比 Mask R-CNN(下,ResNet-101-FPN)。 FCIS在重疊物件上有問題,Mask R-CNN沒問題。
消融實驗
我們進行了一些消融來分析Mask R-CNN。結果顯示在下表(表2)中(Mask R-CNN的消融。我們在trainval35k上訓練,在minival上測試,並報告掩碼AP,除非另有說明。),並在下面詳細討論。
結構:表2a顯示了具有各種使用不同下層網路的Mask R-CNN。它受益於更深層次的網路(50對比101)和高階設計,包括FPN和ResNeXt(我們使用64×4d64×4d的普通的ResNeXt)。我們注意到並不是所有的框架都會從更深層次的或高階的網路中自動獲益(參見13中的基準測試)。
**獨立與非獨立掩碼:**Mask R-CNN解耦了掩碼和類預測:由於現有的檢測框分支預測類標籤,所以我們為每個類生成一個掩碼,而不會在類之間產生競爭(通過畫素級Sigmoid和二值化損失)。在表2b中,我們將其與使用畫素級Softmax和非獨立損失的方法進行比較(常用於FCN3)。這些方法將掩碼和類預測的任務結合,導致了掩碼AP(5.5個點)的嚴重損失。這表明,一旦目標被歸類(通過檢測框分支),就可以預測二值化掩碼而不用擔心類別,這樣可以使模型更容易訓練。
類相關與類無關掩碼:我們預設預測類相關的掩碼,即每類一個m×mm×m掩碼。有趣的是,這種方法與具有類別無關掩碼的Mask R-CNN(即,預測單個m×mm×m輸出而不論是那一類)幾乎同樣有效:對於ResNet-50-C4掩碼AP為29.7,而對於類相關的對應的模型AP為30.3 。這進一步突出了我們的方法中的改進:解耦了分類和分割。
RoIAlign:表2c顯示了對我們提出的RoIAlign層的評估。對於這個實驗,我們使用的下層網路為ResNet-50-C4,其步進為16。RoIAlign相對RoIPool將AP提高了約3個點,在高IoU(AP75AP75)結果中增益更多。 RoIAlign對最大/平均池化不敏感,我們在本文的其餘部分使用平均池化。
此外,我們與採用雙線性取樣的MNC [10]中提出的RoIWarp進行比較。如實驗:目標分割所述,RoIWarp仍然四捨五入了RoI,與輸入失去了對齊。從表2c可以看出,RoIWarp與RoIPool效果差不多,比RoIAlign差得多。這突出表明正確的對齊是關鍵。
我們還使用ResNet-50-C5下層網路評估了RoIAlign,其步進更大,達到了32畫素。我們使用與圖3(右)相同的上層網路,因為res5不適用。表2d顯示,RoIAlign將掩碼AP提高了7.3個點,並將掩碼的AP75AP75 提高了10.5個點(相對改善了50%)。此外,我們注意到,與RoIAlign一樣,使用步幅為32的C5特徵(30.9 AP)比使用步幅為16的C4特徵(30.3 AP,表2c)更加精準。 RoIAlign在很大程度上解決了使用大步進特徵進行檢測和分割的長期挑戰。
最後,當與FPN一起使用時,RoIAlign顯示出1.5個掩碼AP和0.5個檢測框AP的增益,FPN具有更精細的多級步長。對於需要更精細對準的關鍵點檢測,即使使用FPN,RoIAlign也顯示出很大的增益(表6)。
掩碼分支:分割是一個畫素到畫素的任務,我們使用FCN來利用掩碼的空間佈局。在表2e中,我們使用ResNet-50-FPN下層網路來比較多層感知機(MLP)和FCN。使用FCN可以提供超過MLP 2.1個點的AP增益。為了與與MLP進行公平的比較,FCN的上層網路的卷積層沒有被預訓練。
目標檢測結果
我們在COCO資料集上將Mask R-CNN與其它最先進的目標檢測方法進行比較,如下表(表3)所示:(目標檢測結果(目標邊界框AP),單模型,在test-dev上與其它最先進的技術對比。使用ResNet-101-FPN的Mask R-CNN優於所有先前最先進的模型的基本變體(實驗中忽略了掩碼輸出)。Mask R-CNN超過12的增益來自使用RoIAlign(+1.1 APbbAPbb),多工訓練(+0.9 APbbAPbb)和ResNeXt-101(+1.6 APbbAPbb)。)
對於該結果,雖然完整的Mask R-CNN模型被訓練,但是測試時僅使用分類和檢測的輸出(忽略掩碼輸出)。Mask R-CNN使用ResNet-101- FPN優於所有先前最先進的模型的基本變體,包括單模型的G-RMI的13,COCO 2016目標檢測挑戰的獲勝者。使用ResNeXt-101-FPN的Mask R-CNN進一步改善了結果,其AP相對於使用單模型的前最佳結果27(使用Inception-ResNet-v2-TDM) 提升了3個點。
作為進一步的比較,我們訓練了一個沒有掩碼分支版本的Mask R-CNN,見表3中的“Faster R-CNN,RoIAlign”。由於RoIAlign,該模型的效能優於12中提出的模型。但是,比Mask R-CNN低0.9個點的AP。這個差距這是由於Mask R-CNN的多工訓練產生的。
最後,我們注意到,Mask R-CNN在其掩碼和檢測框的AP之間的差距很小:例如,AP 37.1(掩碼,表1)與AP 39.8(檢測框,表3)之間的差距僅2.7個點。這表明我們的方法在很大程度上彌補了目標檢測與更具挑戰性的目標分割任務之間的差距。
速度
測試:我們訓練一個ResNet-101-FPN模型,在RPN和Mask R-CNN階段之間共享特徵,遵循Faster R-CNN的四階段訓練2。該模型在Nvidia Tesla M40 GPU上處理每個影象需要195ms(加上15毫秒的CPU時間,用於將輸出的大小調整到原始解析度),並且達到了與非共享特徵模型相同的掩碼AP。我們還指出,ResNet-101-C4變體需要大約400ms,因為它的上層模型比較複雜(圖3),所以我們不建議在實踐中使用C4變體。
雖然Mask R-CNN很快,但我們注意到,我們的設計並沒有針對速度進行優化,13可以實現更好的速度/精度平衡,例如,通過改變影象尺寸和候選數量,這超出了本文的範圍。
**訓練:**Mask R-CNN的訓練也很快。在COCO trainval35k上使用ResNet-50-FPN進行訓練,我們的同步8 GPU實現(每個批次耗時0.72秒,包含16個影象)需要32小時,而ResNet-101-FPN需要44小時。事實上,快速原型可以在不到一天的時間內在訓練集上進行訓練。我們希望這樣快速的訓練將會消除這一領域的重大障礙,並鼓勵更多的人對這個具有挑戰性的課題進行研究。
Mask R-CNN人體姿態估計
我們的框架可以很容易地擴充套件到人類姿態估計。我們將關鍵點的位置建模為one-hot掩碼,並採用Mask R-CNN來預測KK個掩碼,每個對應KK種關鍵點型別之一(例如左肩,右肘)。此任務有助於展示Mask R-CNN的靈活性。
我們注意到,我們的系統利用了人類姿態的最小領域知識,因為實驗主要是為了證明Mask R-CNN框架的一般性。我們期望領域知識(例如,建模結構31)將是我們簡單方法的補充,但這超出了本文的範圍。
實現細節:在適配關鍵點時,我們對分割系統進行細微的修改。對於目標的KK個關鍵點中的每一個,訓練目標是一個one-hot的m×mm×m二進位制掩碼,其中只有一個畫素被標記為前景。在訓練期間,對於每個可視的關鍵點真實值,我們最小化在m2m2路Softmax輸出上的交叉熵損失(這驅使一個點被檢測到)。我們注意到,和目標分割一樣,K個關鍵點的檢測仍然是獨立對待的。
我們採用ResNet-FPN的變體,關鍵點檢測的上層架構類似於圖3(右圖),由八個堆疊的3×33×3 512-d卷積層,後面是一個反捲積層進行2×2×雙線性上取樣,產生解析度56×5656×56的輸出。我們發現相對較高的解析度輸出(與掩碼相比)是關鍵點級精確定位所必需的。
我們使用包含關鍵點標註的COCO trainval35k影象訓練模型。由於訓練集較小,為了減少過擬合,我們訓練時將影象在[640,800][640,800]範圍內隨機縮放,測試則統一縮放到800畫素。我們的訓練迭代90k次,從0.02的學習率開始,並在迭代次數達到60k和80k次時將學習率除以10。檢測框的非極大值抑制閾值為0.5。其他實現細節與實現細節相同。
人體姿態估計實驗:使用ResNet-50-FPN評估人體關鍵點的AP(APkpAPkp)。我們也嘗試了ResNet-101,不過效果差不多,可能是因為更深層次的模型需要更多的訓練資料,但是這個資料集相對較小。
如下表(表4)所示:(COCO test-dev 上的關鍵點檢測AP。我們的(ResNet-50-FPN)模型是以5 FPS的速度執行的單模型。 CMU-Pose+++31是2016年度的優勝者,使用多尺度測試,CPM進行後處理32,並使用目標檢測進行過濾,提高了約5個點(與作者溝通確認)。 †:G-RMI使用兩種模型(Inception-ResNet-v2 + ResNet-101),用COCO加MPII33(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。)
將掩碼分支新增到僅做目標檢測(如,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 R-CNN提取目標框,掩碼和關鍵點的有效性,我們期望它也可以成為其它目標級任務的有效框架。
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一樣的掩碼AP(在IoU閾值上平均)來測量,也包括AP50AP50(即,IoU為0.5的掩碼AP)。
實現:我們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之間的偏差,從34 35的結果也可以看出。我們發現這種偏差主要是由卡車,公共汽車和火車類別造成的,其中只使用精細標註訓練資料的模型,在驗證集和測試集上的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)。右下圖出錯。)
參考文獻
- R. Girshick. Fast R-CNN. In ICCV, 2015. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11
- S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In NIPS, 2015. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
- J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015. ↩ ↩2 ↩3 ↩4
- K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In ECCV. 2014. ↩ ↩2
- T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollár, and C. L. Zitnick. Microsoft COCO: Common objects in context. In ECCV, 2014. ↩ ↩2
- R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014. ↩ ↩2 ↩3
- J. R. Uijlings, K. E. van de Sande, T. Gevers, and A. W. Smeulders. Selective search for object recognition. IJCV, 2013. ↩ ↩2
- J. Hosang, R. Benenson, P. Dollár, and B. Schiele. What makes for effective detection proposals? PAMI, 2015. ↩
- Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel. Backpropagation applied to handwritten zip code recognition. Neural computation, 1989. ↩
- A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet classification with deep convolutional neural networks. In NIPS, 2012. ↩
- A. Shrivastava, A. Gupta, and R. Girshick. Training regionbased object detectors with online hard example mining. In CVPR, 2016. ↩ ↩2
- T.-Y. Lin, P. Dollár, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. In CVPR, 2017. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14
- J. Huang, V. Rathod, C. Sun, M. Zhu, A. Korattikara, A. Fathi, I. Fischer, Z. Wojna, Y. Song, S. Guadarrama, et al. Speed/accuracy trade-offs for modern convolutional object detectors. In CVPR, 2017. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
- B. Hariharan, P. Arbeláez, R. Girshick, and J. Malik. Simultaneous detection and segmentation. In ECCV. 2014. ↩
- B. Hariharan, P. Arbeláez, R. Girshick, and J. Malik. Hyper-columns for object segmentation and fine-grained localization. In CVPR, 2015. ↩
- J. Dai, K. He, and J. Sun. Convolutional feature masking for joint object and stuff segmentation. In CVPR, 2015. ↩
- P. Arbeláez, J. Pont-Tuset, J. T. Barron, F. Marques, and J. Malik. Multiscale combinatorial grouping. In CVPR, 2014. ↩
- P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segment object candidates. In NIPS, 2015. ↩ ↩2 ↩3
- P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Dollár. Learning to refine object segments. In ECCV, 2016. ↩ ↩2
- J. Dai, K. He, Y. Li, S. Ren, and J. Sun. Instance-sensitive fully convolutional networks. In ECCV, 2016. ↩ ↩2 ↩3
- J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades. In CVPR, 2016. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
- Y. Li, H. Qi, J. Dai, X. Ji, and Y. Wei. Fully convolutional instance-aware semantic segmentation. In CVPR, 2017. ↩ ↩2 ↩3 ↩4 ↩5
- J. Dai, Y. Li, K. He, and J. Sun. R-FCN: Object detection via region-based fully convolutional networks. In NIPS, 2016. ↩ ↩2
- M. Jaderberg, K. Simonyan, A. Zisserman, and K. Kavukcuoglu. Spatial transformer networks. In NIPS, 2015. ↩ ↩2
- K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8
- S. Xie, R. Girshick, P. Dollár, Z. Tu, and K. He. Aggregated residual transformations for deep neural networks. In CVPR, 2017. ↩
- A. Shrivastava, R. Sukthankar, J. Malik, and A. Gupta. Beyond skip connections: Top-down modulation for object detection. arXiv:1612.06851, 2016. ↩ ↩2
- V. Nair and G. E. Hinton. Rectified linear units improve restricted boltzmann machines. In ICML, 2010. ↩
- R. Girshick, F. Iandola, T. Darrell, and J. Malik. Deformable part models are convolutional neural networks. In CVPR, 2015. ↩
- S. Bell, C. L. Zitnick, K. Bala, and R. Girshick. Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks. In CVPR, 2016. ↩
- Z. Cao, T. Simon, S.-E. Wei, and Y. Sheikh. Realtime multi-person 2d pose estimation using part affinity fields. In CVPR, 2017. ↩ ↩2 ↩3
- S.-E. Wei, V. Ramakrishna, T. Kanade, and Y. Sheikh. Convolutional pose machines. In CVPR, 2016. ↩
- M. Andriluka, L. Pishchulin, P. Gehler, and B. Schiele. 2D human pose estimation: New benchmark and state of the art analysis. In CVPR, 2014. ↩
- A. Kirillov, E. Levinkov, B. Andres, B. Savchynskyy, and C. Rother. Instancecut: from edges to instances with multicut. In CVPR, 2017. ↩
- M. Bai and R. Urtasun. Deep watershed transform for instance segmentation. In CVPR, 2017. ↩