0
本文作者: skura | 2019-03-05 18:33 |
雷鋒網(wǎng) AI 科技評論按,本文作者香港中文大學(xué)多媒體實驗室在讀博士陳愷,原載于知乎專欄,雷鋒網(wǎng)已獲授權(quán)。
前言
CVPR 2019 運氣還算比較好,這次一共有 3 篇 paper 被接收,分別在物體檢測的 module、framework 和 training process 上有所探索。本文打算介紹一下 Hybrid Task Cascade,是 framework 層面的一篇工作,基于之前 COCO 比賽團隊合作的成果。除此之外,被接收的另外兩篇文章分別是之前介紹過的 Region Proposal by Guided Anchoring (Guided Anchoring: 物體檢測器也能自己學(xué) Anchor) 和 之后會在 ArXiv 公開的 Libra R-CNN: Balanced Learning for Object Detection。
背景
實例分割(Instance Segmentation)是一個和物體檢測非常相關(guān)但是更難的問題,在物體檢測的基礎(chǔ)上,還要求分割出物體的像素,如下圖所示。
實例分割這個問題近幾年的發(fā)展在很大程度上是由 COCO 數(shù)據(jù)集和比賽推動的。從 MNC,F(xiàn)CIS 到 PANet,都是在 COCO instance segmentation track 上拿第一名的方法。Mask R-CNN 是個例外,因為 paper 公開得比較早,所以是 2017 年前幾名隊伍的基本方法。同理可知,Hybrid Task Cascade(HTC)在 COCO 2018 的比賽中也取得了第一名。
概述
級聯(lián)是一種比較經(jīng)典的結(jié)構(gòu),在很多任務(wù)中都有用到,比如物體檢測中的 CC-Net,Cascade R-CNN,語義分割中的 Deep Layer Cascade 等等。然而將這種結(jié)構(gòu)或者思想引入到實例分割中并不是一件直接而容易的事情,如果直接將 Mask R-CNN 和 Cascade R-CNN 結(jié)合起來,獲得的提升是有限的,因此我們需要更多地探索檢測和分割任務(wù)的關(guān)聯(lián)。
在本篇論文中,我們提出了一種新的實例分割框架,設(shè)計了多任務(wù)多階段的混合級聯(lián)結(jié)構(gòu),并且融合了一個語義分割的分支來增強 spatial context。這種框架取得了明顯優(yōu)于 Mask R-CNN 和 Cascade Mask R-CNN 的結(jié)果。
方法
整個框架的演進可以用四張圖來表示,其中 M 表示 mask 分支,B 表示 box 分支,數(shù)字表示 stage,M1 即為第一個 stage 的 mask 分支。
進階準(zhǔn)備:Cascade Mask R-CNN
由于 Cascade R-CNN 在物體檢測上的結(jié)果非常好,我們首先嘗試將 Cascade R-CNN 和 Mask R-CNN 直接進行雜交,得到子代 Cascade Mask R-CNN,如上圖(a)所示。在這種實現(xiàn)里,每一個 stage 和 Mask R-CNN 相似,都有一個 mask 分支 和 box 分支。當(dāng)前 stage 會接受 RPN 或者 上一個 stage 回歸過的框作為輸入,然后預(yù)測新的框和 mask。這也是實驗中我們所比較的 baseline,從實驗表格可以看到其實這個 baseline 已經(jīng)很強了,但是仍然存在明顯的問題,主要在于 Cascade Mask R-CNN 相比 Mask R-CNN 在 box AP 上提高了 3.5 個點,但是在 mask AP 上只提高了 1.2 個點。
進階第一步:Interleaved Execution
Cascade R-CNN 雖然強行在每一個 stage 里面塞下了兩個分支,但是這兩個分支之間在訓(xùn)練過程中沒有任何交互,它們是并行執(zhí)行的。所以我們提出 Interleaved Execution,也即在每個 stage 里,先執(zhí)行 box 分支,將回歸過的框再交由 mask 分支來預(yù)測 mask,如上圖(b)所示。這樣既增加了每個 stage 內(nèi)不同分支之間的交互,也消除了訓(xùn)練和測試流程的 gap。我們發(fā)現(xiàn)這種設(shè)計對 Mask R-CNN 和 Cascade Mask R-CNN 的 mask 分支都有一定提升。
進階第二步:Mask Information Flow
這一步起到了很重要的作用,對一般 cascade 結(jié)構(gòu)的設(shè)計和改進也具有借鑒意義。我們首先回顧原始 Cascade R-CNN 的結(jié)構(gòu),每個 stage 只有 box 分支。當(dāng)前 stage 對下一 stage 產(chǎn)生影響的途徑有兩條:
Bi+1 的輸入特征是 Bi 預(yù)測出回歸后的框通 RoI Align 獲得的;
Bi+1的回歸目標(biāo)是依賴 Bi 的框的預(yù)測的。這就是 box 分支的信息流,讓下一個 stage 的特征和學(xué)習(xí)目標(biāo)和當(dāng)前 stage 有關(guān)。在 cascade 的結(jié)構(gòu)中這種信息流是很重要的,讓不同 stage 之間在逐漸調(diào)整而不是類似于一種 ensemble。
然而在 Cascade Mask R-CNN 中,不同 stage 之間的 mask 分支是沒有任何直接的信息流的,Mi+1 只和當(dāng)前 Bi 通過 RoI Align 有關(guān)聯(lián)而與 Mi 沒有任何聯(lián)系。多個 stage 的 mask 分支更像用不同分布的數(shù)據(jù)進行訓(xùn)練然后在測試的時候進行 ensemble,而沒有起到 stage 間逐漸調(diào)整和增強的作用。為了解決這一問題,我們在相鄰的 stage 的 mask 分支之間增加一條連接,提供 mask 分支的信息流,讓 Mi+1能知道 Mi 的特征。具體實現(xiàn)上如下圖中紅色部分所示,我們將 Mi 的特征經(jīng)過一個 1x1 的卷積做 feature embedding,然后輸入到 Mi+1,這樣 Mi+1 既能得到 backbone 的特征,也能得到上一個 stage 的特征。
進階第三步:Semantic Feature Fusion
這一步是我們嘗試將語義分割引入到實例分割框架中,以獲得更好的 spatial context。因為語義分割需要對全圖進行精細的像素級的分類,所以它的特征是具有很強的空間位置信息,同時對前景和背景有很強的辨別能力。通過將這個分支的語義信息再融合到 box 和 mask 分支中,這兩個分支的性能可以得到較大提升。
在具體設(shè)計上,為了最大限度和實例分割模型復(fù)用 backbone,減少額外參數(shù),我們在原始的 FPN 的基礎(chǔ)上增加了一個簡單的全卷積網(wǎng)絡(luò)用來做語義分割。首先將 FPN 的 5 個 level 的特征圖 resize 到相同大小并相加,然后經(jīng)過一系列卷積,再分別預(yù)測出語義分割結(jié)果和語義分割特征。這里我們使用 COCO-Stuff 的標(biāo)注來監(jiān)督語義分割分支的訓(xùn)練。紅色的特征將和原來的 box 和 mask 分支進行融合(在下圖中沒有畫出),融合的方法我們也是采用簡單的相加。
進階結(jié)果
通過上面的幾步,在使用 ResNet-50 的 backbone 下,相對 Cascade Mask R-CNN 可以有 1.5 個點的 mask AP 提升,相對 Mask R-CNN 可以有 2.9 個點的提升。在 COCO 2017 val 子集上的逐步對比試驗如下表所示。
除了純凈版 HTC 之外,在 paper 里我們還給出了在 COCO Challenge 里面用到的所有步驟和技巧的漲點情況(良心買賣有木有)。
總結(jié)
多任務(wù)多階段的混合級聯(lián)結(jié)構(gòu)
訓(xùn)練時每個 stage 內(nèi) box 和 mask 分支采用交替執(zhí)行
在不同 stage 的 mask 分支之間引入直接的信息流
語義分割的特征和原始的 box/mask 分支融合,增強 spatial context
Code
照例將 release 到 mmdetection (https://github.com/open-mmlab/mmdetection),歡迎 watch。
Arxiv
Hybrid Task Cascade for Instance Segmentationarxiv.org
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。