天天看點

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 的特征。

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

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

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

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

R-FCN 最後用位置敏感 RoI 池化層,給每個 RoI 1個分數。選擇性池化圖解:看上圖的橙色響應圖像 ( top−left ),摳出橙色方塊 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.” 這句話應對應下圖 (對應後面效果圖的黃色虛線部分):

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

對1個大小為 w×h 的 RoI,1個桶 (bin) 的大小為 wk×hk ,最後1個卷積層為每類産生 k2 個分數圖。對第 (i,j) 個桶 ( 0≤i,j≤k−1 ),定義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,c 為 k2(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 位置範圍内最強。

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

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。微軟的視覺計算組其實每年在領先的成果上改進了一點點,但原理簡單,分析角度又新,實驗規模也不小。該團隊不僅明星雲集,且力往一塊使,容易出大片~ ( ̄﹏ ̄)

繼續閱讀