天天看點

【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation

論文連結: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達到一定閥值就可以認為重疊)的邊框屬于同一個類型,那麼就需要丢棄一個。此時可以依據邊框置信度,留下最大值的,丢棄(抑制)非最大值的重疊區域。

論文實驗模型

  1. 在分類資料集上訓練CNN網絡;
  2. 在實驗資料集上微調CNN網絡;
  3. 輸入圖像,進行 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 分類器中分類并評分;
  4. 丢棄評分低于 score門檻值 s c o r e 阈 值 的區域,同時每個類别按照評分執行非最大值抑制,去除重疊的區域;
  5. 将留下來的區域進行回歸,得到最終的 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)。

【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation

用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網絡作為特征提取器,可以隻進行到池化層。

【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
未經過微調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

【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
經過微調AlexNet提取的特征表示
網絡架構選擇

  如果選擇 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 ) 所示。我們知道,圖像具有空間結構,我們從空間結構提取特征,這樣直接縮放會一定程度的破壞其空間結構。

【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation

各向同性

  作者使用了兩種方法各向同性的方法:⑴ 在原圖上,以選出來的區域為中心,擴充成輸入大小,如上圖 (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 作為篩選回歸資料的過濾器。

【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation

  回歸算法的輸入為 {(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 在驗證集上;在測試時,理論上變換後的邊框區域再去分類的效果比較好,但試驗表明并沒有提升試驗資料,是以在測試時隻進行一次分類和邊框尺度變換,而不疊代。

文中展示比較引起注意的一些檢測結果

【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation
【論文閱讀筆記】Rich feature hierarchies for accurate object detection and semantic segmentation

繼續閱讀