何愷明團隊推出Mask^X R-CNN,將實例分割擴展到3000類
翻譯 | AI科技大本營(ID:rgznai100)
參與 | shawn,劉暢
今年10月,何愷明的論文「Mask R-CNN」摘下ICCV 2017的最佳論文獎(Best Paper Award),如今,何愷明團隊在Mask R-CNN的基礎上更近一步,推出了
(以下稱Mask^X R-CNN)。
這篇論文的第一作者是伯克利大學的在讀博士生胡戎航(清華大學畢業),標題非常霸氣,叫是「Learning to Segment Every Thing」。從標題上可以看出,這是一篇在實例分割問題(instance segmentation)中研究擴展分割物體類別數量的論文。
由於現有的目標實例分割(object instance segmentation)方法要求所有訓練實例都必須標記有分割掩碼(segmentation mask),使得注釋新類別的成本十分昂貴,而且還將實例分割模型限制在約100個詳細注釋的類別。本論文提出了一種全新的偏監督(partially supervised)訓練方式以及一個新的權重傳遞函數(weight transfer function),用大量的類別(所有類別都標有邊界框注釋(box annotations),但只有一小部分類別標有掩碼注釋)訓練實例分割模型。
論文作者表示,他們成功使用Visual Genome資料庫中的邊界框注釋以及COCO資料庫中80個類別的掩碼注釋,訓練Mask R-CNN檢測並分割3000個視覺概念。此外,該論文還首次探究了如何讓實例分割模型可以全面地理解視覺世界。
以下是論文簡介,enjoy!
介紹
圖1. 我們通過偏監督方法來探索如何訓練實例分割模型:在訓練時,一個類的子集(綠色框)具有實例掩碼的注釋; 剩餘的類(紅色框)只有邊界框注釋。該圖顯示了我們的模型在Visual Genome數據集上訓練了3000個類後的輸出,這個過程中僅使用了COCO數據集中80個類別的掩碼注釋。
目標檢測器已經變得非常準確了,並擁有了很重要的新功能。其中最令人興奮的功能是能夠為每個檢測到的對象預測前景分割掩碼,這個任務我們稱之為實例分割。在實際應用中,傳統的實例分割系統往往只能對包含約100個對象類別的數據集起作用,而這只是大千世界中的滄海一粟。
造成這種現象的一個主要原因是,現有最領先的實例分割演算法都需要強監督學習,而這樣的監督學習有很大的限制,並且採集新類別圖片的代價也是十分昂貴的。相比之下,帶邊界框注釋的圖片則會更豐富和也更便宜。這就引出了一個問題:在不是所有類別都標有完整實例分割注釋的前提下,是否有可能訓練出高質量的實例分割模型為此,本文介紹了一種新的偏監督實例分割任務,並提出了一種新的遷移學習的方法來完成它。
我們制定的基於偏監督學習的實例分割任務如下:
(1)給定一組感興趣的類別和一個有實例掩碼注釋的小的子集,而其他類別只有邊界框注釋;
(2)實例分割演算法可以利用這個數據來擬合一個模型,該模型可以分割所感興趣的集合中的所有對象類別的實例。由於訓練數據是完整注釋數據(帶掩碼的示例)和弱注釋數據(僅帶框的示例)的混合,因此我們將該任務稱為偏監督任務。
本文所提出的偏監督學習樣例流程的主要好處是它允許我們通過利用兩種類型的現有數據集來構建一個大規模的實例分割模型:那些在大量的類上使用邊界框注釋的數據集,比如Visual Genome, 以及那些在少數類別上使用實例掩碼注釋的,例如COCO數據集。正如我們接下來將要展示的那樣,這使得我們能夠將最先進的實例分割方法擴展到數千個類別,這對於在現實世界中部署實例分割是非常重要的。
為了解決偏監督的實例分割問題,我們提出了一種基於Mask R-CNN的新型遷移學習的方法。 Mask R-CNN非常適合我們的任務,因為它將實例分割問題分解為了目標的邊界框檢測和掩碼預測兩個子任務。這些子任務是由專門的網路「頭部(heads)」共同訓練的。我們的方法背後的直覺是,一旦訓練完成了,邊界框頭部(the bounding box head)參數編碼嵌入到每個對象類別,使該類別的視覺信息轉移到偏監督掩碼頭部(the partially supervised mask head)參數上。
為了讓這個直覺具象化,我們設計了一個參數化的權重傳遞函數,該函數被訓練成根據圖片類別的邊界框檢測參數來預測類別的實例分割參數。權重傳遞函數可以在Mask R-CNN中使用帶有掩碼注釋的類作為監督學習的數據來進行端到端的訓練。在推理時,權重傳遞函數用於預測每個類別的實例分割參數,從而使模型能夠分割所有目標的類別,包括在訓練時沒有掩碼注釋的目標類別。
我們在兩種不同的設置環境中評估了我們的方法。首先,為了在數據集上建立包含高質量的注釋和評估指標的定量的結果,我們使用了COCO數據集來模擬偏監督的實例分割任務。具體地說,我們將COCO數據集所有的類別劃分為帶有掩碼注釋的子集和一個只提供給實例分割系統邊界框注釋的子集。由於COCO數據集僅涉及少量(80類)的語義分離很好的類,因此定量評估的結果是準確可靠的。實驗結果表明,我們的方法得到了比該任務基準線高很多的結果,在沒有採用訓練用的掩碼的情況下,掩碼的AP相對增幅高達40%。
在第二種設置中,我們使用包含3000個類別的Visual Genome(VG)數據集進行了一次大規模的實例分割模型訓練。VG數據集包含大量目標類別的邊界框注釋,但是由於許多類別在語義上重疊(例如,近義詞)並且注釋並不詳盡,使得模型的精確度和召回率難以衡量。而且,VG數據集不是用實例掩碼來標註的。作為替代,我們採用VG數據集來提供大規模實例分割模型的定性輸出。我們模型的輸出如圖1和5所示:
圖2.我們提出的Mask^X R-CNN方法的詳細說明。Mask^X R-CNN不是直接學習掩碼預測參數
,而是使用學習權重傳遞函數T從其對應的檢測參數
中預測出類別的分割參數。 在訓練階段,函數T只需要數據集A中每個類別的掩碼數據,它就可以在測試階段對數據集A∪B(並集)中的所有類進行參數學習。我們還使用了一個互補的全連接的多層感知器(MLP)來增加了掩碼頭部(mask head)的內容。
學習分割一切物體
假設集合C為一組對象類別(例如『things』),我們要用這些類別來訓練一個實例分割模型。大多數現有方法假設C中所有的訓練實例都標有掩碼注釋。我們放寬了這個要求,只假設C=A∪B,也就是說:集合A中的類別實例都標有掩碼注釋,集合B中的類別實例只有邊界框注釋。由於集合B中的類別只帶有關於目標任務(實例分割)的弱標籤,我們將使用組合強標籤(strong labels)和弱標籤(weak labels)的類別來訓練模型的問題稱為偏監督學習問題。
注意:我們可以輕易地將實例的掩碼注釋轉換為邊界框注釋,因此我們假設A中的類別也帶有邊界框注釋。由於Mask RCNN這樣的實例分割模型都帶有一個邊界框檢測器和一個掩碼預測器,我們提出的
利用權重傳遞函數預測掩碼
我們的方法建立在Mask R-CNN上,因為Mask R-CNN實例分割模型不僅結構簡單,而且可以實現非常優秀的結果。簡單來說,我們可以將Mask R-CNN看作為添加有一個掩碼預測分支(小型全卷積網路)的Faster R-CNN邊界框檢測模型。在預測階段,模型用掩碼分支處理每個檢測對象,為每個對象預測一個實例級別的前景分割掩碼。在訓練階段,並行訓練掩碼分支和Faster R-CNN中的標準邊界框檢測器。
在Mask R-CNN中,邊界框分支的最後一層以及掩碼分支的最後一層均包含對每個類別執行邊界框分類和實例掩碼預測任務時所用的類別參數。我們選擇的方法是:使用一個通用的權重傳遞函數,根據某一類別的邊界框參數預測它的掩碼參數,這個函數可以作為模型的組部分與模型一起進行訓練;而不是分別學習某一類別的邊界框參數和掩碼參數。
給定一類別 c,假設
為類別c在邊界框檢測器最後一層上的的目標檢測權重,
為類別c在mask分支上的mask權重。我們使用一個通用的權重預測函數
將
參數化,而不是將
直接作為參數。
- 其中θ 為類別不可知的學習參數。
同一傳遞函數
可應用於任何類別c,因此選擇的θ值應使
可以泛化到訓練期間掩碼未被觀察到的任何類別。我們預計這種泛化是可能實現的,因為檢測權重
可以被視為基於外觀的類別視覺嵌入。
傳遞函數
可以作為一個小型的全卷積神經網路。圖2展示了權重傳遞函數與Mask R-CNN結合形成Mask^X R-CNN的過程。注意:邊界框識別器包含兩種類型的檢測權重:RoI分類權重
以及邊界框回歸權重(regression weights)
在試驗時我們可以使用一種類型的檢測權重(即:
),
也可以使用兩類權重的級聯(concatenation)(即:
)。
基準:類別不可知的掩碼預測
DeepMask證明了:訓練深度學習模型執行類別不可知掩碼預測任務(不考慮類別而預測目標掩碼)是不可能實現的。對於掩碼質量稍微損失的Mask R-CNN而言也是這樣。在其他試驗中,如果類別不可知模型經過訓練後可以預測COCO類別中一個類別子集的掩碼,那麼這些預測值在預測階段(inference time)就可以泛化到其他60個COCO類別上。依據這些結論,我們用帶有一個不可知FCN掩碼預測器的Mask R-CNN作為基準。事實證明,這是一個非常優秀的基準。接下來,我們提出了一個可以用於改進該基準和權重傳遞函數的擴展。
擴展:FCN+MLP 掩碼預測器
兩種類型的掩碼檢測器都可用於Mask RCNN:
(1)FCN預測器使用一個全卷積網路預測M × M掩碼;
(2)MLP預測器使用一個多層感知器預測掩碼,這個多層感知器是由全連接層構成的,類似於DeepMask。在Mask R-CNN中,FCN預測器獲得的掩碼平均精度(AP)。但是,這兩種預測器可以互補。直觀看來,MLP 掩碼預測器可以更好地捕捉物體的「主要特徵」,而FCN 掩碼測器可以更好地捕捉物體的細節(例如:物體的邊界)。根據這一觀察,我們通過將基準類別不可知FCN預測器和權重傳遞函數(使用的是一個FCN預測器)與類別不可知MLP 掩碼預測器作出的預測整合在一起,以此來改進前兩者的表現。試驗結果表明,這個擴展可以改進基準和權重傳遞方法。
當對K個類別的class-agnostic 和class-specific 掩碼預測進行整合時,這兩個預測值都被添加到最終的K×M×M輸出中,其中class-agnostic掩碼預測值(1×M×M)被分割了K次並添加到每個類別中。然後,K×M×M 掩碼預測值經一個sigmoid單元處理後轉化為每個類別的掩碼概率值,其大小被調整為實際的邊界框大小,並作為邊界框最終的實例掩碼。在訓練期間,我們對K×M×M 掩碼概率應用了二元交叉熵損失函數。
在COCO數據集上進行試驗
(a) Ablation on input to T .
(b) Ablation on the structure of T .
(c) Impact of the MLP mask branch.
(d) Ablation on the training strategy.
表1. 方法的簡化測試。(a,b,c)中的結果基於分階段訓練,我們在(d)中研究了端對端訓練的影響。我們還用COCO數據集val2017評估了掩碼的AP值,該數據集包含20個PASCAL VOC類別(voc)和60個其他類別(非voc)。用強監督數據集A訓練模型得出的結果用灰色字體表示。
圖3. 每個點代表我們的方法在COCO數據集隨機劃分的類別集A和類別集B上的表現。我們類別集A的類別數設定為20至60,然後繪製出類別集B中類別(無掩碼注釋)的掩碼AP對比類別集A中每個類別的掩碼注釋數的平均值的變化圖。
圖4.類別不可知基準方法(第一行)與Mask^X R-CNN方法(第二行)的掩碼預測對比。綠色方框代表類別集A中的類別,紅色方框代表類別B中的類別。左側兩欄為A = {voc},右側兩欄為A ={ non-voc }。
表2. Mask^X R-CNN的端對端訓練。如表1所示,我們用『cls+box, 2-layer, LeakyReLU』作為Mask^X R-CNN的實現結構,然後添加了MLP 掩碼分支(『transfer+MLP』),按照相同的評估方案進行評估。我們還報告了AP50 和 AP75(以0.5 和 0.75為IoU臨界值分別估計出平均準確度),小型(APS)、中型(APM)的大型(APL)物體的AP(平均準確度)。在ResNet-50-FPN 和 ResNet-101-FPN 基礎網路無掩碼訓練數據的前提下,使用類別集B中的類別進行評估,得出的結論是:我們方法的表現遠遠優於基準。
表2對比了完整的Mask^X R-CNN的方法。它的表現大幅超越基準方法的表現(掩碼平均準確度相對增加了20%多)。除了ResNet-50-FPN,我們還將ResNet-101 FPN作為基礎網路進行了試驗,如表2下半部分所示。我們在ResNet-50-FPN上發現的趨勢也出現在 ResNet-101-FPN上,這表明基礎網路並不會影響試驗結果。圖4給出了類別不可知基準方法和我們的方法的掩碼預測示例。
大規模的實例分割
到目前為止,我們已經實驗過了一個我們真正目標的模擬版本:即用寬闊的視覺理解來訓練大規模的實例分割模型。我們相信這個目標代表了一個激動人心的視覺識別研究的新方向,要完成它,可能需要從偏監督中學習到某種形式。為了實現這一目標,我們使用Visual Genome(VG)數據集的邊界框和COCO數據集的實例掩碼[22]兩種數據,用偏監督任務的學習方式訓練了一個大規模的Mask^X R-CNN模型。 VG數據集包含了108077張圖像,以及超過7000類的用目標邊界框注釋(但不包括掩碼)的同義詞集。
為了訓練我們的模型,我們選擇了3000個最常見的同義詞數據集作為我們的數據集A 和數據集B來實現實例分割的任務,該數據集AB覆蓋了COCO數據集中的所有80個類別。 由於VG數據集圖像與COCO數據集重疊較大,因此在用VG數據集訓練時,我們將所有不在COCO val2017數據集中的圖像作為訓練集,並將其餘的VG圖像作為驗證集。 我們將VG數據集中所有與COCO數據集重疊的80個類別作為我們的帶掩碼的數據集A,VG數據集中其餘的2920個類別作為我們的數據集B,因為它們只有邊界框的注釋。
訓練。我們使用階段式訓練策略來訓練我們的大規模Mask^X R-CNN模型。
具體來說,我們使用ResNet-101-FPN網路結構作為我們的骨幹網路,按照4.1節中所提到的超參數,訓練了一個Faster R-CNN模型來檢測VG數據集中的3000個類別。 然後,在第二階段,我們用cls + box,2-layer,LeakyReLU這幾個結構構造了權重傳遞函數T,接著用函數T和類別未知的MLP掩碼預測(即,transfer + MLP)組成了掩碼頭部(the mask head)。訓練掩碼頭部的數據集是用包含80個類別的COCO數據集(數據集A)的子集,這些子集採用了COCO數據集train2017中拆分出來的掩碼注釋。
定性的結果。掩碼AP(平均精確度)很難在VG數據集上進行計算,因為它只包含了目標邊界框的注釋。因此,我們使用我們的權重傳遞函數將結果可視化,以了解模型在A和B一起組成的數據集中所有3000個類別上訓練完的性能。圖5顯示了在驗證集上一些掩碼預測的例子,可以看出,在那些與COCO數據集類別不重疊的VG數據集類別(紅框中顯示的是數據集B)上,我們的模型預測了比較合理的掩碼。
這個可視化的結果顯示了我們大規模實例分割模型的幾個有趣的特性。首先,它已經學會了檢測一些抽象的概念,如陰影和路徑。 這些往往是難以分割的。其次,能夠簡單地從VG數據集中獲得前3000個同義詞,一些概念比「事物(thing)」更像「東西(stuff)」。 例如,該模型對孤立的樹進行了合理的分割,但當檢測到的「樹」更像森林時,該模型往往會分割失敗。最後,檢測器在分割整個物體和部分物體(例如電車的窗戶或冰箱的手柄)時做的是比較合理的。與在COCO數據集80個類別上訓練的檢測器相比,這些結果說明了現在訓練的實例分割系統有很好的潛力去識別和分割數千個概念。
圖5. Mask^X R-CNN模型在數據集Visual Genome上進行3000個類的掩碼預測的示例。 綠色框是與COCO(帶掩碼訓練數據的數據集A)重疊的80個類,而紅色框是剩餘的2920個不在COCO數據集中的類(沒有掩模訓練數據的數據集B)。可以看出,我們的模型在數據集B中的許多類上生成了一個比較合理的掩碼預測。
結論
本文針對大規模實例分割的問題,構造了一個偏監督的學習樣例流程。其中只有一部分類在訓練時具有實例掩碼數據,而其餘部分具有邊界框注釋。我們提出了一種新的遷移學習的方法,其中是用訓練好的權重轉移函數來預測:如何根據學習的參數來檢測每個類別的邊界框。在COCO數據集上的實驗結果表明,在沒有掩碼訓練數據的情況下,我們的方法大大提高了掩碼預測的泛化能力。通過採用該方法,我們在Visual Genome數據集中建立了超過3000個類的大規模實例分割模型。我們得到的結果非常鼓舞人心,這足以說明我們開創了了一個令人興奮的新的大規模實例分割的研究方向。研究人員還提到了一個非常具有挑戰性的問題,在沒有監督學習的情況下,如何將實例分割擴展到數千個類別。應該可以有很多方式來改進此方法去解決這樣的問題。
論文鏈接:https://arxiv.org/pdf/1711.10370.pdf
推薦閱讀:
※後綴數組 (Suffix Array)
※面試經典問題——每次可以走 1 級或 2 級,上 100 級台階有多少走法
※R語言可以處理大的數據嗎?