商研丨實例分割的進階三級跳:從Mask R-CNN到Hybrid Task Cascade
編者按:早在2018年的COCO比賽中,商湯科技研究員和香港中文大學-商湯聯合實驗室(MMLab)同學組成的團隊,在最核心的物體檢測(Detection)項目中奪得冠軍。商湯團隊創造性地開發了全新的技術,尤其是提出了新的多任務混合級聯架構(Hybrid Task Cascade),通過把不同子任務進行逐級混合,有效地改善了整個檢測過程中的信息流動。
近日,基于 COCO 2018比賽團隊合作的成果,MMLab團隊又取得新突破,發表了論文《Hybrid Task Cascade for Instance Segmentation》,該論文已入選CVPR 2019。論文提出了一種新的實例分割框架,設計了多任務多階段的混合級聯結構,并且融合了一個語義分割的分支來增強Spatial Context。這種框架取得了明顯優于Mask R-CNN和Cascade MaskR-CNN的結果。本文是對《Hybrid Task Cascade for Instance Segmentation》的論文解讀。
背景
實例分割(Instance Segmentation)是一個和物體檢測非常相關但是更難的問題,在物體檢測的基礎上,還要求分割出物體的像素,如下圖所示。
實例分割這個問題近幾年的發展在很大程度上是由COCO數據集和比賽推動的。從MNC,FCIS到PANet,都是在COCO Instance Segmentation Track 上拿第一名的方法。Mask R-CNN是個例外,因為Paper公開得比較早,所以是2017年前幾名隊伍的基本方法。同理可知,Hybrid Task Cascade(HTC)在 COCO 2018 的比賽中也取得了第一名。
概述
級聯是一種比較經典的結構,在很多任務中都有用到,比如物體檢測中的CC-Net,CascadeR-CNN,語義分割中的Deep Layer Cascade等等。然而將這種結構或者思想引入到實例分割中并不是一件直接而容易的事情,如果直接將Mask R-CNN和Cascade R-CNN結合起來,獲得的提升是有限的,因此我們需要更多地探索檢測和分割任務的關聯。
在本篇論文中,我們提出了一種新的實例分割框架,設計了多任務多階段的混合級聯結構,并且融合了一個語義分割的分支來增強Spatial Context。這種框架取得了明顯優于Mask R-CNN和Cascade Mask R-CNN的結果。
方法
整個框架的演進可以用四張圖來表示,其中M表示Mask分支,B表示Box分支,數字表示Stage,M1即為第一個Stage的Mask分支。
進階準備:Cascade Mask R-CNN
由于Cascade R-CNN在物體檢測上的結果非常好,我們首先嘗試將Cascade R-CNN和Mask R-CNN直接進行雜交,得到子代Cascade Mask R-CNN,如上圖(a)所示。在這種實現里,每一個Stage和Mask R-CNN 相似,都有一個Mask分支和Box分支。當前Stage會接受RPN或者上一個Stage回歸過的框作為輸入,然后預測新的框和Mask。這也是實驗中我們所比較的Baseline,從實驗表格可以看到其實這個Baseline已經很強了,但是仍然存在明顯的問題,主要在于Cascade MaskR-CNN相比Mask R-CNN在Box AP上提高了3.5個點,但是在Mask AP上只提高了1.2個點。
進階第一步:Interleaved Execution
Cascade R-CNN雖然強行在每一個Stage里面塞下了兩個分支,但是這兩個分支之間在訓練過程中沒有任何交互,它們是并行執行的。所以我們提出Interleaved Execution,也即在每個Stage里,先執行Box分支,將回歸過的框再交由Mask分支來預測Mask,如上圖(b)所示。這樣既增加了每個Stage內不同分支之間的交互,也消除了訓練和測試流程的Gap。我們發現這種設計對Mask R-CNN和Cascade Mask R-CNN 的Mask分支都有一定提升。
這一步起到了很重要的作用,對一般Cascade結構的設計和改進也具有借鑒意義。我們首先回顧原始Cascade
R-CNN的結構,每個Stage只有Box分支。當前Stage對下一Stage產生影響的途徑有兩條:(1)
的輸入特征是預測出回歸后的框通RoI Align獲得的;(2)
的回歸目標是依賴
的框的預測的。這就是Box分支的信息流,讓下一個Stage的特征和學習目標和當前Stage有關。在Cascade的結構中這種信息流是很重要的,讓不同Stage之間在逐漸調整而不是類似于一種Ensemble。
然而在Cascade Mask R-CNN 中,不同Stage之間的Mask分支是沒有任何直接的信息流的,只和當前
通過RoI Align有關聯而與
沒有任何聯系。多個Stage的Mask分支更像用不同分布的數據進行訓練然后在測試的時候進行Ensemble,而沒有起到Stage間逐漸調整和增強的作用。為了解決這一問題,我們在相鄰的Stage的Mask分支之間增加一條連接,提供Mask分支的信息流,讓能
知道
的特征。具體實現上如下圖中紅色部分所示,我們將
的特征經過一個1x1的卷積做Feature embedding,然后輸入到
,這樣
既能得到Backbone的特征,也能得到上一個Stage的特征。
進階第三步:Semantic Feature Fusion
這一步是我們嘗試將語義分割引入到實例分割框架中,以獲得更好的Spatial Context。因為語義分割需要對全圖進行精細的像素級的分類,所以它的特征是具有很強的空間位置信息,同時對前景和背景有很強的辨別能力。通過將這個分支的語義信息再融合到Box和Mask分支中,這兩個分支的性能可以得到較大提升。
在具體設計上,為了最大限度和實例分割模型復用Backbone,減少額外參數,我們在原始的FPN的基礎上增加了一個簡單的全卷積網絡用來做語義分割。首先將FPN的5個level的特征圖Resize到相同大小并相加,然后經過一系列卷積,再分別預測出語義分割結果和語義分割特征。這里我們使用COCO-Stuff的標注來監督語義分割分支的訓練。紅色的特征將和原來的Box和Mask分支進行融合(在下圖中沒有畫出),融合的方法我們也是采用簡單的相加。
進階結果
通過上面的幾步,在使用ResNet-50的Backbone下,相對Cascade Mask R-CNN可以有1.5個點的Mask AP提升,相對Mask R-CNN可以有2.9個點的提升。在COCO 2017 val子集上的逐步對比試驗如下表所示。
除了純凈版HTC之外,在Paper里我們還給出了在COCO Challenge里面用到的所有步驟和技巧的漲點情況(良心買賣有木有)。
總結
1、多任務多階段的混合級聯結構。
2、訓練時每個Stage內Box和Mask分支采用交替執行。
3、在不同Stage的Mask分支之間引入直接的信息流。
4、語義分割的特征和原始的Box/Mask分支融合,增強Spatial Context。
Code
照例將Release到MMDetection
(https://github.com/open-mmlab/mmdetection),歡迎 watch。
Arxiv
Hybrid Task Cascade for Instance Segmentation
(https://arxiv.org/abs/1901.07518)
