論文理解 R-FCN:基於區域的全卷積網絡來檢測物體

本文轉載自:

http://blog.csdn.net/shadow_guo/article/details/51767036


原文標題爲“R-FCN: Object Detection via Region-based Fully Convolutional Networks ”,作者代季峯 1,14年畢業的清華博士到微軟亞洲研究院的視覺計算組,CVPR 16 兩篇一作的會議主持人~ ╰(°▽°)╯ 同時公佈了源碼~ 2

後面主要內容爲原文隨便的翻譯或概括。必有不緊貼原文原意之處,曲解請指出,否則求放過~

1. 簡介

物體檢測的深度網絡按感興趣區域 (RoI) 池化層分爲兩大主流:共享計算的全卷積子網絡 (每個子網絡與 RoI 無關) 和 不共享計算的作用於各自 RoI 的子網絡。工程分類結構 (如 Alexnet 和 VGG Nets) 造成這樣的分流。而工程上的圖像分類結構被設計爲兩個子網絡——1個後綴1個空間池化層的卷積子網絡和多個全連接層。因此,圖像分類網絡中最後的空間池化層自然變成了物體檢測網絡中的 RoI 池化層。

近年來,諸如殘差網絡和 GoogLeNets 等先進的圖像分類網絡爲全卷積網絡。類似地,自然會想到用在物體檢測中用全卷積網絡 (隱藏層不包含作用於 RoI 的子網絡)。然而,物體檢測工作中的經驗表明,這樣天真的解決方案的檢測效果遠差於該網絡的分類效果。 爲彌補尷尬,更快 R-CNN 檢測器不自然地在兩卷積層間插入RoI 池化層,這樣更深的作用於各 RoI 的子網絡雖精度更高,但各個 RoI 計算不共享所以速度慢。

尷尬在於:物體分類要求平移不變性越大越好 (圖像中物體的移動不用區分),而物體檢測要求有平移變化。所以,ImageNet 分類領先的結果證明儘可能有平移不變性的全卷積結構更受親睞。另一方面,物體檢測任務需要一些平移變化的定位表示。比如,物體的平移應該使網絡產生響應,這些響應對描述候選框覆蓋真實物體的好壞是有意義的。我們假設圖像分類網絡的卷積層越深,則該網絡對平移越不敏感。

我曾看到的尷尬包括:

a) Kaggle 中的白鯨身份識別。剛開始很多人嘗試從圖像到座標的直接回歸,到後面有幾位心善的大哥分享了自己手動標定後白鯨的圖像座標,後來顯著的進展大多是因爲把白鯨的位置檢測和身份識別問題簡化爲白鯨的身份識別問題。 
b) Caffe 用於物體檢測時的均值收斂問題。

消除尷尬,在網絡的卷積層間插入 RoI 池化層。這種具體到區域的操作在不同區域間跑時不再有平移不變性。然而,該設計因引入相當數目的按區域操作層 (region-wise layers) 而犧牲了訓練和測試效率。

本文,我們爲物體檢測推出了基於區域的全卷積網絡 (R-FCN),採用全卷積網絡結構作爲 FCN,爲給 FCN 引入平移變化,用專門的卷積層構建位置敏感分數地圖 (position-sensitive score maps)。每個空間敏感地圖編碼感興趣區域的相對空間位置信息。 在FCN上面增加1個位置敏感 RoI 池化層來監管這些分數地圖。

2. 方法

(1) 簡介

效仿 R-CNN,採用流行的物體檢測策略,包括區域建議和區域分類兩步。不依賴區域建議的方法確實存在 (SSD 和 Yolo 弟兄),基於區域的系統在不同 benchmarks 上依然精度領先。用更快 R-CNN 中的區域建議網絡 (RPN) 提取候選區域,該 RPN 爲全卷積網絡。效仿更快 R-CNN,共享 RPN 和 R-FCN 的特徵。

這裏寫圖片描述

RPN 給出感興趣區域,R-FCN 對該感興趣區域分類。R-FCN 在與 RPN 共享的卷積層後多加1個卷積層。所以,R-FCN 與 RPN 一樣,輸入爲整幅圖像。但 R-FCN 最後1個卷積層的輸出從整幅圖像的卷積響應圖像中分割出感興趣區域的卷積響應圖像。

這裏寫圖片描述

R-FCN 最後1個卷積層在整幅圖像上爲每類生成k2個位置敏感分數圖,有C類物體外加1個背景,因此有k2(C+1)個通道的輸出層。k2個分數圖對應描述位置的空間網格。比如,k×k=3×3,則9個分數圖編碼單個物體類的 {topleft,topcenter,topright,...,bottomright}。

R-FCN 最後用位置敏感 RoI 池化層,給每個 RoI 1個分數。選擇性池化圖解:看上圖的橙色響應圖像 (topleft),摳出橙色方塊 RoI,池化橙色方塊 RoI 得到橙色小方塊 (分數);其它顏色的響應圖像同理。對所有顏色的小方塊投票 (或池化) 得到1類的響應結果。

選擇性池化是跨通道的,投票部分的池化爲所有通道的池化。而一般池化都在通道內。

R-FCN 最後1個卷積層的輸出爲什麼會具有相對空間位置這樣的物理意義 (top-left,top-center,…,bottom-right)?

原文爲“With end-to-end training, this RoI layer shepherds the last convolutional layer to learn specialized position-sensitive score maps.”。所以,假設端到端訓練後每層真有相對位置的意義,那麼投票前的輸入一定位置敏感。投票後面的內容用作分類。

端到端訓練先自行腦補: 
假設已知原圖像與真實物體的邊界框中心座標和寬高,把1個物體的邊界框中心座標分成k2個網格的中心座標,寬高縮放爲物體寬高的1k倍,得到每個網格的掩碼。用原圖像和每類物體的網格在整幅圖像中的掩碼端到端訓練全卷積網絡。挺像圖像分割~

(2) 基礎結構

ResNet-101 網絡有100個卷積層,1個全局平均池化層和1個1000類的全連接層。僅用ImageNet預訓練的該網絡的卷積層計算特徵圖。

(3) 位置敏感分數圖

對 R-FCN 的卷積響應圖像按 RPN 的結果分割出來感興趣區域,對單通道的感興趣區域分成k×k個網格,每個網格平均池化,然後所有通道再平均池化。 
其實不是這樣的~ 因爲 RoI 覆蓋的所有面積的橙色方片都是左上位置的響應。

“To explicitly encode position information into each RoI, we divide each RoI rectangle into k×k bins by a regular grid.” 這句話應對應下圖 (對應後面效果圖的黃色虛線部分):

這裏寫圖片描述

對1個大小爲w×h的 RoI,1個桶 (bin) 的大小爲wk×hk,最後1個卷積層爲每類產生k2個分數圖。對第(i,j)個桶 (0i,jk1),定義1個位置敏感 RoI 池化操作: 

rc(i,j|Θ)=1n(x,y)bin(i,j)zi,j,c(x+x0,y+y0|Θ)

其中,rc(i,j|Θ)爲第c類第(i,j)個箱子的池化響應,zi,j,ck2(C+1)個分數圖中的輸出,(x0,y0)爲 RoI 的左上角座標,n爲桶裏的像素總數,且Θ爲網絡的參數。

桶對應後面效果圖的黃色實線部分,1個桶只摳了每類的每個相對空間位置通道中 RoI 的對應相對空間位置的分數圖,其它的部分丟棄。

(4) 分類

對該 RoI 每類的所有相對空間位置的分數平均池化 (或投票)。 

rc(Θ)=i,jrc(i,j|Θ)

Softmax 迴歸分類。

(5) 定位

k2(C+1)維的卷積層後,增加1個4k2維的卷積層來回歸邊界框。每個 RoI 產生的4k2維向量經平均投票後,用快速 R-CNN 的參數化得到1個4維向量(tx,ty,tw,th)

(6) 訓練

每個 RoI 的損失函數爲交叉熵損失與邊界框迴歸損失的和。

L(s,tx,y,w,h)=Lcls(sc)+λ[c>0]Lreg(t,t)=log(erc(Θ)Cc=0erc(Θ))+λ[c>0]Lreg(t,t)

其中,c=0說明 RoI 的真實標籤爲背景。Lreg與快速 R-CNN 中的邊界框損失迴歸相同。RPN 產生的區域建議當 RoI 與 真實邊框的 IoU 超過0.5時,標定爲正樣本。

在線難例挖掘 (OHEM)。假設每個圖像前向產生N個區域建議,計算所有建議的損失。按損失排序所有 RoIs,選擇損失最高的B個 RoIs 3

(7) 可視化

RoI 分類的可視化。RPN 剛好產生包含 person 類的 RoI。經過 R-FCN 的最後1個卷積層後產生9個相對空間位置的分數圖,對 person 類的每個相對空間位置通道內的 RoI 桶平均池化得到3×3的池化分數,投票後送入分類器判斷屬於 person 類。當分類正確時,該類通道的位置敏感分數圖 (中間) 的大多數橙色實線網格內的響應在整個 RoI 位置範圍內最強。

這裏寫圖片描述

3. 相關工作

R-CNN 證實用深度網絡產生區域建議是有效的。R-CNN 在剪切變形的區域上評價卷積網絡,區域間不共享計算。SPP 網絡,快速 R-CNN 和更快速 R-CNN 爲”半卷積” (卷積子網絡在整幅圖像上共享計算,另1個子網絡評價各個區域)。

一些物體檢測器被認爲是”全卷積“模型。OverFeat 在共享卷積特徵圖上滑窗操作來檢測物體。類似地,快速 R-CNN 等也用滑動窗口,它們的1個單尺度的滑動窗口可看作1個卷積層。更快 R-CNN 的 RPN 部分爲1個預測關於多尺寸參考盒 (錨) 的邊界框的全卷積檢測器。更快 R-CNN 的 RPN 未知區域建議的類,但 SSD 該部分已知特定的類。

另一類物體檢測器採用全連接層,在整個圖像上產生整體物體的檢測結果。

4. 實驗

(1) PASCAL VOC

訓練VOC 07 trainval 和 VOC 12 trainval,測試VOC 07 test

a. 與其它全卷積策略比較

樸素更快 R-CNN 
ResNet-101 的共享特徵圖,最後1個卷積層後用 RoI 池化。每個 RoI 上用21類全連接層。 
ResNet-101 (conv4 與 conv5 間插入 RoI 池化層),樸素更快 R-CNN (conv5 後插入 RoI 池化層)。mAP 升 7.5%。。經驗證實更快 R-CNN 系統的卷積層間插入 RoI 池化層能提高相關空間信息的重要性。

特定類 RPN 
訓練 RPN 與 更快 R-CNN 部分相同,2類卷積分類層 (物體或背景) 改爲 21類卷積分類層 (20類物體+1背景)。 
特定類 RPN 類似於快速 R-CNN 的特殊形式 (用稠密的滑窗替換區域建議)。mAP 跌 8.8%。效果不如2類 RPN。

無位置敏感的 R-FCN 
k=1時,位置不敏感。相當於每個 RoI 全局池化。 
位置敏感的 R-FCN 相對於 ResNet-101,mAP 升0.02 %~

b. 與用 ResNet-101 的更快 R-CNN 比較

所要比較的檢測器爲各大 Benchmark 上的最強競爭者。名字太長,後面簡稱暫時最強檢測器。

原作者的意思可能是這樣:結合 MS COCO 訓練後,R-FCN 僅需多尺度訓練 mAP 就能到 82%,而暫時最強檢測器,除了多尺度訓練,還要迭代盒迴歸和上下文才比 R-FCN 多 2.0% 和 1.8%;而且,即使不帶 MS COCO 訓練,沒有上述附加的”+++”工作,R-FCN 也比暫時最強檢測器的 mAP 還要至少高 3%。而且,R-FCN 快得多。

帶 MS COCO 訓練數據後,mAP 大漲~ P.S. 該數據集由微軟發起~

c. 深度的影響

深度爲50~101時 mAP 會增加,到152層時飽和。

d. 區域建議的影響

RPN 即使用選擇搜索和邊緣盒 (Edge Boxes) 也有 77% 以上的 mAP。

(2) MS COCO

IoU 爲0.5時,R-FCN和暫時最強檢測器的 mAP 僅有剛過50%。說明 MS COCO 與 PASCAL VOC 相比有更大的挑戰性~

5. 小結

R-FCN 在數據集 VOC 07 和 12 上的 mAP 分別爲 83.6% 和 82%,測試時每張圖像耗時 170ms。微軟的視覺計算組其實每年在領先的成果上改進了一點點,但原理簡單,分析角度又新,實驗規模也不小。該團隊不僅明星雲集,且力往一塊使,容易出大片~ ( ̄﹏ ̄)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章