論文連結:https://arxiv.org/abs/1311.2524
作者:Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik
釋出時間:2013年11月釋出,2014年10月最後修改
源碼:https://github.com/rbgirshick/rcnn
前言
該論文是R-CNN系列的第一篇,其截取的區域圖檔(rigion proposals)大小不一,是以需要縮放到統一大小。後面借鑒SPP-NET提取特征的方式,可以處理不同大小的輸入。
該論文的CNN結構提取特征後,分類模型使用的是多重SVM二分類模型,就是class-else模式。
IoU (Intersection over Union)
IoU,交并比,就是兩個對象(這裡是邊框)的的交集與并集的比。
非極大值抑制
對于候選出來的邊框,每個邊框都有一個分數(置信度),如果有重疊(IoU達到一定閥值就可以認為重疊)的邊框屬于同一個類型,那麼就需要丢棄一個。此時可以依據邊框置信度,留下最大值的,丢棄(抑制)非最大值的重疊區域。
論文實驗模型
- 在分類資料集上訓練CNN網絡;
- 在實驗資料集上微調CNN網絡;
- 輸入圖像,進行 rigion proposals r i g i o n p r o p o s a l s ,放入CNN網絡中提取特征,将特征放入 class−special c l a s s − s p e c i a l 的 SVM S V M 分類器中分類并評分;
- 丢棄評分低于 score門檻值 s c o r e 阈 值 的區域,同時每個類别按照評分執行非最大值抑制,去除重疊的區域;
- 将留下來的區域進行回歸,得到最終的 bounding−box b o u n d i n g − b o x (檢測邊框);
從以上程式可以看出,本論文基本是三個子產品:CNN網絡子產品以提取特征,SVM子產品以得到分類,回歸子產品以得到檢測邊框。
概要
該論文前面使用的方法,基本都是從富含“進階圖像特征”的内容上提取出“低級圖像特征”,結合模型進行檢測。該論文使用CNN模型,将Pascal VOC 2012的 mAP m A P (mean average precision)提升至 53.3% 53.3 % (提高了超過30\%)。文章有兩個重點:1) 運用CNN于region proposal;2) 使用遷移學習—-先将網絡用于分類,再進行微調。
引言
在CNN之前,提取特征的方式一般為SIFT(distinctive image feature)和HOG(Histograms of oriented gradients).我們知道識别系統需要發生在幾個階段後(應該是對比人在接收基本資訊後的處理階段),這也意味着可能存在用于計算特征的分層的多階段過程,這些過程對于視覺識别更具資訊性。
當時的CNN在ImageNet分類上已經取得了重大突破,此時的問題就在于CNN能在Pascal VOC目标檢測上能取得怎樣的效果?因為ImageNet的标記資料很多,對比起來目标檢測的已标記資料就很少。
不像分類 ,目标檢測需要在一張圖檔内檢測定位。一種解決方法就是講定位問題看做回歸問題。但是,經過該論文的實驗表明,那不是一個好方法(Deep neural networks for object detection在VOC 2007的mAP為30.5%,該論文達到58.5%)。一個可替代的方法是使用滑動視窗檢測。
區域作為輸入的CNN在目标檢測和語義分割上都取得了成功。
測試時,在每張圖檔上截取 2000 2000 個區域,經過圖檔放射變換成固定大小作為CNN的輸入,經過CNN的特征提取得到固定長度的特征向量(應該是除去softmax分類層的最後一個fc輸出),将特征向量放入 class−else c l a s s − e l s e 的線性二分類SVM分類器中。是以,有了R-CNN(Regions with CNN features)。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2LcVTU61EMnpnT1UkeYhnRzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYvwFd4VGdvwlMvw1ayFWbyVGdhd3PxIjN1kDN1EjMxcDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
用R-CNN進行目标檢測
子產品設計
Region proposals的政策為selective search;候選區域的大小不一,但本論文的政策是無論候選區域的縱橫比如何,都resize成統一的大小;
檢測–測試時
每張圖檔提取2000張有獨立類别的區域,曆經“變形”後,經過CNN結構提取特征向量,對每個區域提取的特征向量使用二分類SVM模型對每個類别單獨進行評分。對同一張圖檔的不同評分區域,對每一個類别進行非最大值抑制操作以丢棄多餘重疊的框。
分析—運作時
本文認為有兩項屬性保證檢測的性能:⑴ CNN參數對于每個類别的區域都是共享的;⑵ 經過CNN結構提取的特征是低維的(對比當時的其他方法)。參數共享的結果保證了提取特征的時間較短,低維向量保證了點積運算時使用的記憶體較小(這能保證泛化到更多的類别上)。
運作時
有監督預訓練
将CNN模型放在分類資料集 ILSVRC 2012 I L S V R C 2012 上
特定領域微調
CNN使用0.001學習率的SGD訓練,分類類别為 (N+1) ( N + 1 ) 個,其中N個為訓練集類别,1個為背景類。如果一個region proposal具有ground-truth box的一半即标位正類,即IoU的門檻值為 0.5 0.5 。統一将32個正樣本,96個負樣本,共128個樣本作為一個小批次。
對象類别分類器
IoU門檻值經過驗證集的選擇(在{0, 0.1, 0.2, 0.3, 0.4, 0.5}的網格搜尋中)後,標明為0.3,對于所有類别都一樣。這個門檻值是對于訓練SVM分類器的。
在附錄B,文章讨論了為什麼在微調SVM訓練時要單獨定義正負類;以及讨論了微調後的SVM與微調後的softmax作為最後分類層的差別。
Visualization, ablation, and modes of error
可視化學習到的特征
卷積層第一層卷積核可以直接可視化,而且容易去了解,它們捕獲的是方向上的邊緣和部件顔色(opponent color)。後面幾層的可視化才是挑戰。 Zeiler和Fergus Z e i l e r 和 F e r g u s 提出了反卷積的方法用于可視化,本文提出一種簡單(和補充complementary)的非參數方法,用于直接顯示網絡所學到的内容。
他們的想法是從網絡中挑選特定單元(特征),把它當做對象探測器。我們在這單元的激活輸出,從大到小排序,執行非最大值抑制,然後顯示得分最高的區域。這樣的方法通過準确觸發輸入,讓所選單元“自己說話”。
Ablation studies
逐層展示性能(Performance),沒有微調
為了明白哪一層特征對對象檢測比較重要,該論文在VOC 2007上分析了CNN的最後三層(AlexNet網絡中,池化層後展開的向量 p5 p 5 9216∗1 9216 ∗ 1 , 全連接配接層 fc6 f c 6 4096∗1 4096 ∗ 1 , softmax前的全連接配接層 fc7 f c 7 4096∗1 4096 ∗ 1 ),由于激活函數都是ReLu,是以這三層的激活結果都大于 0 0 。
這個段落的展示結果是經過預訓練,沒有經過微調的AlexNet網絡(即在ILSVRCILSVRC訓練,沒有在PASCAL上訓練)。結果展示,如果直接将ALexNet作為類似于SIFT、HOG的特征提取器(不經過微調),将提取的特征直接用于分類,那麼 p5 p 5 的精度和 fc6、fc7 f c 6 、 f c 7 差不多,這是令人失望的,因為計算到 p5 p 5 時,隻使用了AlexNet網絡的 6% 6 % 的參數; fc6 f c 6 的精确度比 fc7 f c 7 要高。這表明不經過微調的AlexNet網絡作為特征提取器,可以隻進行到池化層。
逐層展示性能,經過微調
網絡經過微調之後,平均準确率(mAP)提升到了 54.2% 54.2 % 。這個提升主要是來自于 fc6 f c 6 和 fc7 f c 7 ,經過微調之後, fc7 f c 7 做提取的特征效果比 p5、fc6 p 5 、 f c 6 好得多。是以,可以得出一個結論:卷機網絡的卷積層提取的特征是提取的通用特征,類似于SIFT和HOG
網絡架構選擇
如果選擇 VGG16 V G G 16 作為特征提取器, mAP m A P 可以從 58.5% 58.5 % 上升到 66.0% 66.0 % ,但是時間會多消耗很多。作者認為這是一種倒退。
附錄
Object proposal transformations
此時卷積層的輸入是固定的,該網絡結構的輸入大小為 227∗227 227 ∗ 227 ,此時有兩種resize方式可以選擇:⑴ 各向同性縮放;⑵ 各向異性縮放。
各向異性
該方法是不管輸入size如何,直接扭曲圖像成需要的大小,如下圖的 (D) ( D ) 所示。我們知道,圖像具有空間結構,我們從空間結構提取特征,這樣直接縮放會一定程度的破壞其空間結構。
各向同性
作者使用了兩種方法各向同性的方法:⑴ 在原圖上,以選出來的區域為中心,擴充成輸入大小,如上圖 (B) ( B ) 所示;⑵ 用固定背景顔色填充選出來的區域,如上圖 (C) ( C ) 所示。
正負樣本以及Softmax
正負樣本的定義在CNN架構微調時以及訓練SVM時不一樣,前者定義的IoU門檻值為(至少) 0.5 0.5 ,後者定義的IoU門檻值為(至多) 0.3 0.3 。
作者在微調AlexNet網絡時,一開始使用了和後面SVM一樣的 0.3 0.3 門檻值,但沒有現在的 0.5 0.5 門檻值好。作者推斷:如何定義正負類不是原則重要的,造成這個現象的原因是訓練CNN的資料量不夠,資料不夠會造成過拟合。
門檻值不一樣,直覺上就能看出這個資料集不是為了SVM分類標明的,那麼為什麼不直接使用softmax層?
剛開始隻是使用了softmax層,但是 mAP m A P 從 54.2% 54.2 % 下降到了 50.9% 50.9 % 。這性能的下降可能是由于一下幾個因子的共同作用:⑴ 定義正負樣本點的時候不強調精确定位;⑵ 訓練softmax層的時候,不像訓練SVM那般使用“硬負樣本”,而是随機使用負樣本。那麼問題來了,為什麼不直接固定前面的參數,訓練最後一個softmax層?
作者推斷可以通過調整使得不用在微調後多訓練一個SVM分類器也可以達到一樣的性能。如果是真的,那将加速R-CNN的訓練時間而不損失檢測品質。
Bounding-box 回歸
使用 bounding−box b o u n d i n g − b o x 回歸來改善回歸表現。在對每個候選區域(region proposals)進行SVM分類評分之後,通過對每個類别單獨進行 bounding−box b o u n d i n g − b o x 回歸,來預測一個新的 bounding−box b o u n d i n g − b o x .
為什麼要進行Bounding-box回歸?
如下圖所示,有些圖像不需要完整的結構就能預測其類别,是以直接提取的 rigionproposals r i g i o n p r o p o s a l s 可能不太完整。通過資料進行拟合,讓 rigion proposals r i g i o n p r o p o s a l s 提供的 bounding−box b o u n d i n g − b o x 變成較為符合 ground−truth g r o u n d − t r u t h 的 bounding−box b o u n d i n g − b o x 。當然,隻有較為貼近 ground−truth g r o u n d − t r u t h 的區域才是較為有用的資料,與 ground−truth g r o u n d − t r u t h 的 IoU I o U 較低的區域可能成為垃圾資料,本論文選擇 IoU=0.6 I o U = 0.6 作為篩選回歸資料的過濾器。
回歸算法的輸入為 {(Pi,Gi)}i=1,...,N,及其經過CNN結構最後一池化層産生的 p5 特征向量 fi { ( P i , G i ) } i = 1 , . . . , N , 及 其 經 過 C N N 結 構 最 後 一 池 化 層 産 生 的 p 5 特 征 向 量 f i ,其中 Pi=(Pix,Piy,Piw,Pih) P i = ( P x i , P y i , P w i , P h i ) 表示第 i i 個 rigion proposalrigion proposal 的中心點 (x,y) ( x , y ) 和長寬 (w,h) ( w , h ) ; Gi G i 同理。下面進行推導運算時,丢棄上标 i i ,那麼我們想要做的就是從P到GP到G的回歸。則有以下公式:
平移:
Gx^=Pw ∗ wTx⋅fi+Px G x ^ = P w ∗ w x T ⋅ f i + P x
Gy^=Ph ∗ wTy⋅fi+Py G y ^ = P h ∗ w y T ⋅ f i + P y
尺度縮放: Gw^=Pw ∗ exp(wTw⋅fi) G w ^ = P w ∗ exp ( w w T ⋅ f i )
Gh^=Ph ∗ exp(wTh⋅fi) G h ^ = P h ∗ exp ( w h T ⋅ f i )
優化的目标函數: w∗=argminw∗^∑iN(ti∗−w^T∗⋅fi)2+λ∥w^∗∥ w ∗ = a r g m i n w ∗ ^ ∑ i N ( t ∗ i − w ^ ∗ T ⋅ f i ) 2 + λ ‖ w ^ ∗ ‖
其中, t∗ t ∗ 就是精确變換目标尺度,定義如下: tx=Gx−PxPw t x = G x − P x P w
ty=Gy−PyPh t y = G y − P y P h
tw=logGwPw t w = log G w P w
th=logGhPh t h = log G h P h
經過試驗鑒定,正則化尺度竟然高達 λ=1000 λ = 1000 在驗證集上;在測試時,理論上變換後的邊框區域再去分類的效果比較好,但試驗表明并沒有提升試驗資料,是以在測試時隻進行一次分類和邊框尺度變換,而不疊代。