用於目標檢測和語義分割的豐富特征層次結構的提取
1、摘要
過去幾年,在權威數據集PASCAL上,物體檢測的效果已經達到一個穩定水平。效果最好的方法是融合了多種圖像低維特征和高維上下文環境的復雜結合系統。在這篇論文里,我們提出了一種簡單並且可擴展的檢測算法,可以將mAP在VOC2012最好結果的基礎上提高30%以上,也就是達到了53.3%。我們的方法結合了兩個關鍵的因素:
- 為了實現目標檢測和語義分割,將大型卷積神經網絡用於圖像的候選區域。
-
由於帶標簽數據稀少,我們先針對輔助任務使用了監督性的預訓練,然后再對特征任務進行微調,實驗證明產生了明顯的性能提升。
因為我們采用了帶CNN的候選區域篩選法,我們就把我們的方法叫做R-CNN:Regions with CNN features.我們也把RCNN效果跟Overfit比較了下(OverFeat是最近提出的在與我們相似的CNN特征下采用滑動窗口進行目標檢測的一種方法),結果發現RCNN在200類ILSVRC2013檢測數據集上性能明顯優於OVerFeat。本文完整系統源碼在:http://www.cs.berkeley.edu/˜rbg/rcnn。
2、介紹
特征很重要。在過去幾十年,不同視覺檢測任務基本都建立在對SIFT和HOG特征的使用。但是如果我們回看在權威視覺檢測任務比賽PASCAL VOC的性能變化,我們必須得承認在2010-2012年期間這個進展是很慢的,很多方法基本上都是通過建立復雜融合系統並且在已有成功方法上做一點小改變。
SIFT和HOG是塊方向的直方圖特征,一種類似V1層(靈長類視覺通道的第一塊皮質區域)的表示辦法。但是我們也知道視覺辨認是發生在多個下游階段,這就暗示了視覺辨認信息可能是層次性的,需要多階段過程來計算更富有信息的特征。
Fukushima的neocognitron,一種用於模式識別的受生物啟發多層次性和平移不變模型,算是這方面最早的嘗試。然而neocognitron缺少監督性訓練算法。之后Lecun等人的工作證明了基於反向傳播的隨機梯度算法可以用於訓練卷積神經網絡(一種被認為是繼承neocognitron的模型)。
CNN在1990年代被廣泛使用,但是之后由於支持向量機的崛起慢慢淡出研究者的視野。而后在2012年Krizhevshy在imagenet視覺識別挑戰賽的優異表現重燃了人們對於CNN的興趣。他們的成功是因為在120萬帶標簽的數據集上訓練了一個大型的CNN,並且對Lecun的CNN進行了一些改造,比如使用了RELU和Dropout。
ImageNet比賽結果的重要性在ILSVRC2012的workshop上得到熱烈的討論。核心問題可以提煉成以下:CNN在ImageNet數據集的分類結果在何種程度上可以應用在PASCAL VOC目標檢測的挑戰賽上?
本文回答了這個問題,消除了圖像分類和目標檢測的隔閡。這篇論文是第一篇表示:對比簡單的HOG特征形成的檢測系統,CNN可以在PASCL VOC數據集上帶來大幅度效果提升。為了實現這個效果,我們主要集中在兩個問題,第一是用深度網絡進行物體定位,第二是用少量帶標簽檢測數據訓練一個大型模型。
與圖像分類不同的是,檢測需要定位圖像中很多物體。有一種方法是把檢測當做回歸問題。然而和我們同時進行的Szegedy研究結果表明這個策略可能在實踐表現得不是很好(在VOC2007比賽中他們實現了30.5\%的mAP,然而我們的方法實現了58.5\%的mAP)。另一種方法是建立滑動窗口檢測器。在過去幾十年里,CNNs基本都在用這個方法,主要是在特定物體類別檢測上,比如人臉或者行人。為了保持高維空間分辨率,這些CNNs通常只使用兩個卷積層和池化層。我們也考慮用滑動窗口檢測器。然而,我們網絡層數很多。我們有五層卷積層,輸入層有很大的感受野($195\times195$像素)和步長($32\times32$像素),這讓使用滑動窗口方法進行精確定位成為了一項開放的技術挑戰。
所以我們采用了“recognition using regions”方法進行CNN定位問題的處理,這種方法已經被證明在物體檢測和圖像分割領域獲得成功。在測試階段,我們的方法在輸入圖像上產生了大概2000個類別獨立的候選區域並且使用了CNN在每個候選區域提取了固定長度的特征向量,之后采用特定類別線性SVM對每個候選區域進行物體類別分類。我們使用了一項簡單的技術(image wrap)來產生固定大小的CNN輸入尺寸,無論候選區域的形狀多大。圖1展示了我們方法的大概模型和一些實驗結果。由於我們的系統結合了帶有候選區域的CNN,所以我們就把我們的方法叫做R-CNN:Regions with CNN features。
在這篇更新版本的論文中,我們在ILSVRC2013檢測任務上,將我們的方法和最近提出的OverFeat方法進行對比。OverFeat使用了滑動窗口的CNN用於檢測並且是目前ILSVRC22013檢測任務的最好方法。我們表明:RCNN遠遠超過了Overfeat,mAP具體表現為:RCNN--31.4% OverFeat--24.3%。
在檢測問題的另一個挑戰是帶標簽的數據太少並且現階段可以用的數據量不足以訓練一個大型的CNN。解決這個問題的傳統方法是使用非監督性預訓練,然后采用監督性地微調。這篇文章第二個主要貢獻是表明在數據集稀少情況下,通過在大型輔助數據集ILSVRC上進行預訓練而后通過在小數據集PASCAL上進行微調是一種有效學習高維CNN特征的方法。在我們的實驗中,通過對檢測任務進行微調能夠把mAP提高8個百分點。在微調之后,我們的系統在VOC2010上實現了54%的mAP,作為對比,之前同樣調優基於HOG特征的系統DPM的mAP是33%。我們同時建議讀者去閱讀DOnahue同期工作,在那篇論文里他展示了Krizhevshy的CNN可以在不用微調前提下用作一個特征提取的黑箱子,可以應用在幾個識別任務比如場景分類,細粒度的子分類和領域適應等方面,並且表現很不錯。
我們的系統也很高效。唯一特定類型的計算是小型矩陣向量點乘和貪婪非極大值抑制。這個計算特性主要是因為特征是跨類別共享的,這使得計算復雜度比之前使用區域特征小了2個數量級的維度。
了解我們方法的失敗例子對於提高我們的方法有很重要的作用,所以我們借助Hoiem的檢測分析工具進行結果分析。作為分析的直接結果,我們發現一個簡單的框回歸方法可以明顯減少誤定位率,而誤定位率正是我們系統的主要誤差來源。
在進行技術分析之前,我們提醒大家由於RCNN是在區域上進行操作,所以它很自然可以移植到語義分割任務上。只需要微小的改動,我們也可以在PASCAL VOC分割任務上實現有競爭性的結果,平均在VOC2011測試集上達到47.9%的精確度。

