實例分割的進階三級跳:從 Mask R-CNN 到 Hybrid Task Cascade
雷鋒網 AI 科技評論按,本文作者香港中文大學多媒體實驗室在讀博士陳愷,原載於知乎專欄,雷鋒網已獲授權。
前言
CVPR 2019 運氣還算比較好,這次一共有 3 篇 paper 被接收,分別在物體檢測的 module、framework 和 training process 上有所探索。本文打算介紹一下 Hybrid Task Cascade,是 framework 層面的一篇工作,基於之前 COCO 比賽團隊合作的成果。除此之外,被接收的另外兩篇文章分別是之前介紹過的 Region Proposal by Guided Anchoring (Guided Anchoring: 物體檢測器也能自己學 Anchor) 和 之後會在 ArXiv 公開的 Libra R-CNN: Balanced Learning for Object Detection。
背景
實例分割(Instance Segmentation)是一個和物體檢測非常相關但是更難的問題,在物體檢測的基礎上,還要求分割出物體的像素,如下圖所示。
實例分割這個問題近幾年的發展在很大程度上是由 COCO 數據集和比賽推動的。從 MNC,FCIS 到 PANet,都是在 COCO instance segmentation track 上拿第一名的方法。Mask R-CNN 是個例外,因為 paper 公開得比較早,所以是 2017 年前幾名隊伍的基本方法。同理可知,Hybrid Task Cascade(HTC)在 COCO 2018 的比賽中也取得了第一名。
概述
級聯是一種比較經典的結構,在很多任務中都有用到,比如物體檢測中的 CC-Net,Cascade R-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 Mask R-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 分支都有一定提升。
進階第二步:Mask Information Flow
這一步起到了很重要的作用,對一般 cascade 結構的設計和改進也具有借鑒意義。我們首先回顧原始 Cascade R-CNN 的結構,每個 stage 只有 box 分支。當前 stage 對下一 stage 產生影響的途徑有兩條:
Bi+1 的輸入特徵是 Bi 預測出回歸後的框通 RoI Align 獲得的;
Bi+1的回歸目標是依賴 Bi 的框的預測的。這就是 box 分支的信息流,讓下一個 stage 的特徵和學習目標和當前 stage 有關。在 cascade 的結構中這種信息流是很重要的,讓不同 stage 之間在逐漸調整而不是類似於一種 ensemble。
然而在 Cascade Mask R-CNN 中,不同 stage 之間的 mask 分支是沒有任何直接的信息流的,Mi+1 只和當前 Bi通過 RoI Align 有關聯而與 Mi沒有任何聯繫。多個 stage 的 mask 分支更像用不同分布的數據進行訓練然後在測試的時候進行 ensemble,而沒有起到 stage 間逐漸調整和增強的作用。為了解決這一問題,我們在相鄰的 stage 的 mask 分支之間增加一條連接,提供 mask 分支的信息流,讓 Mi+1能知道 Mi的特徵。具體實現上如下圖中紅色部分所示,我們將 Mi 的特徵經過一個 1x1 的卷積做 feature embedding,然後輸入到 Mi+1,這樣 Mi+1既能得到 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 裡面用到的所有步驟和技巧的漲點情況(良心買賣有木有)。
總結
多任務多階段的混合級聯結構
訓練時每個 stage 內 box 和 mask 分支採用交替執行
在不同 stage 的 mask 分支之間引入直接的信息流
語義分割的特徵和原始的 box/mask 分支融合,增強 spatial context
Code
照例將 release 到 mmdetection (https://github.com/open-mmlab/mmdetection),歡迎 watch。
Arxiv
Hybrid Task Cascade for Instance Segmentationarxiv.org
※開年科普:小米、一加手機輻射最大?可能沒有香蕉大
※2.7萬字還原行業面貌,《2019 AI金融風控行業研究報告》正式上線!
TAG:雷鋒網 |