【R-CNN目標檢測系列】四、R-CNN論文詳解

寫在前面

**這兩週由於實習公司事情較多,來不及寫博客。【計算機視覺——RCNN目標檢測系列】的第三篇文章【非極大抑制和IoU】的文字材料已經準備好了,但是相關代碼放在某服務器上,但是服務器配置出了點問題,需要時間解決。因此先暫時放棄第三篇文章的上傳,最近幾天把服務器問題解決了立馬上線第三篇博客以保證文章的連貫性。 **

在上一篇博客:【計算機視覺——RCNN目標檢測系列】三、IoU與非極大抑制
主要講解了IoU與非極大抑制相關概念與python實現,接下來在這篇博客中主要講解了R-CNN論文中模型結構及其相關技術細節。


一、R-CNN總體概括

R-CNN在2014年橫空出世,作者是目標檢測領域的大神Ross Girshick,Ross Girshick也是其後序迭代版本Fast RCNN和Faster RCNN聯名作者。RCNN屬於是目標檢測中two-stage(兩階段)算法中的鼻祖,其最終迭代版本——Faster RCNN更是成爲了two-stage算法的標杆。

R-CNN在這篇論文裏,Ross Girshick提出了一種簡單並且可擴展的檢測算法,在權威數據集PASCAL VOC2012上,RCNN將mAP提高了30%以上,達到了—53.3%。這也使得RCNN成爲了第一個工業級的目標檢測算法。之所以R-CNN能得到如此優秀的效果,主要得益於如下兩個方面:

  1. 在候選區域(Region proposal)上自下而上使用大型卷積神經網絡(CNNs)進行提取圖像特徵,之後用於定位和分割物體
  2. 當帶標籤的訓練數據不足時,先針對輔助任務進行有監督預訓練,再進行特定任務的調優,即微調(fine-tuning),就可以產生明顯的性能提升;

在這篇論文中,作者將Region proposal和CNNs結合起來,所以該方法被稱爲R-CNN:Regions with CNN features。我們也把R-CNN效果跟OverFeat比較了下(OverFeat是R-CNN之前目標檢測性能最好算法),結果發現R-CNN在200類ILSVRC2013檢測數據集上的性能明顯優於OverFeat。


二、論文相關工作

在目標檢測中,提取出圖像中有效特徵是最關鍵的一步工作。在R-CNN提出之前近十年時間裏,SHIFT和HOG特徵是各種視覺任務的基礎。但是SIFT和HOG是塊方向直方圖(blockwise orientation histograms),一種類似大腦初級皮層V1層複雜細胞的表示方法。但我們知道識別發生在多個下游階段,即我們是先看到了一些特徵,然後才意識到這是什麼東西。也就是說對於視覺識別來說,更有價值的信息,是層次化的多階段特徵

這也就導致了在2010-2012年目標檢測進展緩慢,取得的微小進步都是通過構建一些集成系統和採用一些成功方法的變種才達到的。因此,傳統的人工特徵並不能適應於當前海量數據的目標檢測問題,必須採用由淺入深、多層次自動提取深層特徵的CNN來作爲目標檢測中核心特徵提取器。

目標檢測的第二個挑戰是標籤數據太少,可獲得的數據遠遠不夠用來訓練一個大型卷積神經網絡。傳統方法多是採用無監督與訓練,再進行有監督調優。但是在R-CNN提出之前,ImageNet數據集因AlexNet高出第二名15%的分類精度而變得受人關注。因此在R-CNN中,大型卷積神經網絡是在輔助數據集(ILSVRC)上進行有監督預訓練,再在小數據集上針對特定問題進行調優。即首先R-CNN網絡的初始參數是已經在ILSVRC數據集上已經訓練好的網絡參數,之後利用小樣本的PASCAL VOC數據集對參數進行調優(微調,fine-tuning),使得R-CNN能夠充分實現分類與定位兩項任務。

首先進行有監督預訓練,之後在特定數據集下進行微調的訓練方式被稱作爲遷移學習。遷移學習是在訓練數據稀少的情況下一個非常有效的訓練大型卷積神經網絡的方法。在R-CNN論文的實驗中,針對目標檢測的調優將mAP提高了8%。調優後,R-CNN在VOC2010數據集上達到了54%的mAP,遠遠超過高度優化的基於HOG的可變性部件模型(deformable part model,DPM)。

R-CNN模型的架構如下圖所示。從圖中可以看出,R-CNN首先在輸入圖像中提取接近2000個目標框(區域),之後將這些區域送入CNN中進行提取深度特徵,最後利用這些深度特徵進行目標的分類與定位兩大任務。由於該模型結合了推薦區域(Region proposals)和CNN,所以起名爲R-CNN:Regions with CNN features
在這裏插入圖片描述


三、R-CNN模型詳解

接下來我們也將圍繞目標框的提取、深度特徵的提取和分類定位幾個方面全面解讀R-CNN。

3.1 推薦區域提取

首先來看下目標框即推薦區域的提取。在2014年R-CNN被提出之前,目標框的提取主要分爲三種。

第一種就是滑動窗口。滑動窗口本質上就是窮舉法,利用不同的尺度和長寬比把所有可能的大大小小的塊都窮舉出來,然後送去識別,識別出來概率大的就留下來。很明顯,這樣的方法複雜度太高,產生了很多的冗餘候選區域,在現實當中不可行。

第二種是規則塊。在窮舉法的基礎上進行了一些剪枝,只選用固定的大小和長寬比。但是對於普通的目標檢測來說,規則塊算法依然需要訪問很多的位置,複雜度高。

第三種是選擇性搜索(selective search,ss)。從機器學習的角度來說,前面的方法召回是不錯了,但是精度差強人意,所以問題的核心在於如何有效地去除冗餘候選區域。其實冗餘候選區域大多是發生了重疊,選擇性搜索利用這一點,自底向上合併相鄰的重疊區域,從而減少冗餘。

因此在R-CNN中選取了選擇性搜索算法來生成後序後續送入CNN的推薦區域(Region Proposal)。

3.2 特徵提取

在利用選擇性搜索算法獲取到原始圖像中的推薦區域之後,R-CNN將這些推薦區域送入到CNN中來提取深度特。在2014年R-CNN提出之前,AlexNet奪得了ImageNet競賽的冠軍,展現出了強大的圖像特徵提取能力。因此,R-CNN採用了AlexNet作爲提取圖像特徵的主幹網絡。不同的是,我們將AlexNet最後的ImageNet專用的1000-way分類層捨棄,採用了一個21維的分類層(20個目標分類+1個背景)。

同時由於AlexNet對於輸入圖像必須要求是227*227的RGB彩色圖像,因此在R-CNN中,作者是將選擇性搜索得到的推薦區域的圖像尺寸首先進行了區域的轉化成227 x 227

3.3 訓練階段

由於分類與定位兩大任務在訓練和測試階段有所區別,因此這兩部分我們將分別在訓練和測試兩個任務中進行描述。首先我們來看下訓練階段。訓練階段AlexNet的模型訓練採用的有監督預訓練和特定領域內參數微調的訓練方式。梯度下降算法採用的SGD,學習率爲0.001,小批量樣本規模是128,其中正例32個(包括所有類別的推薦區域以及真實框),反例96個(即背景)。區分正例與反例的標準爲目標框與真實框(Ground Truth)之間的IoU>=0.5,即IoU>=0.5則記作正例,反之記作反例(即背景)。

在提取特徵完成之後,我們要做的還有就是訓練每個類別SVM分類器將提取得到的特徵向量用於優化每個類別的SVM二分類器。這個時候每個目標框標籤的就要從物體分類的多變量one-hot標籤轉化成二分類的0/1標籤。標籤制定標準爲目標框與真實框之間IoU是否大於0.3。若IoU<0.3則記作負樣本即標籤爲0,真實框作爲正例,其餘的全部捨棄。

R-CNN不僅要完成AlexNet、SVM的訓練,而且還要完成定位任務。在這裏我們將AlexNet獲得特徵向量按類別送入x,y,w,h這四個分量回歸器,利用梯度下度算進行訓練每個分量回歸器的權重,在這裏特徵向量的選擇必須是與真實框(Ground Truth)之間IoU大於0.6的對應推薦區域提取出來的特徵向量。R-CNN的訓練流程圖如下圖所示。
在這裏插入圖片描述

3.4 測試階段

在測試階段我們,我們首先使用選擇性搜索進行獲取目標檢測框,並將目標框填充至正方形然後轉換尺寸到227*277,之後通過AlexNet進行提取特徵,然後利用每個類別訓練好的SVM二分類器對AlexNet提取得到的特徵向量的每個類別進行打分。接下來分別將每個類別的特徵向量送入已經訓練好的每個類別的邊界框迴歸器進行定位預測。得到分類打分和定位信息之後,可能會出現多個目標框之間IoU較高,即產生了目標框重疊,因此我們需要利用非極大抑制(NMS)算法進行去除IoU大於閾值的重複目標框。測試階段的流程圖如下圖所示。
在這裏插入圖片描述

3.5 重要問題

上述4小節主要講述了R-CNN模型主體框架及其訓練和測試階段的流程。接下來我們相關重點問題進行解釋。

第一個問題就是爲什麼必須選用各向異性縮放與填充的圖像尺度變換?

作者在附錄中指出:

  1. 各向同性縮放1:直接在原始圖片中,把推薦區域的邊界進行擴展延伸成正方形,然後再進行裁剪;如果已經延伸到了原始圖片的外邊界,那麼就用推薦區域中的顏色均值填充;結果如下圖第二列;
  2. 各向同性縮放2:先把推薦區域圖片裁剪出來,然後用固定的背景顏色填充成正方形圖片(背景顏色也是採用推薦區域的像素顏色均值),結果如下圖第三列;
  3. 各向異性縮放:簡單粗暴對圖像就行縮放至227×227的結果如下圖第四列;
  4. 變形前先進行邊界像素填充(padding)處理,即向外擴展建議框邊界,以上三種方法中分別採用padding=0,如下圖第一行,padding=16如下圖第二行;
    在這裏插入圖片描述
    經過作者一系列實驗表明採用padding=16的各向異性縮放即下圖第二行第四列效果最好,能使mAP提升3-5%。

第二個問題是爲什麼微調時和訓練SVM時所採用的正負樣本閾值不一致?

微調階段是由於CNN對小樣本容易過擬合,那麼需要大量訓練數據,故對IoU限制寬鬆。在微調時,Ground Truth+與Ground Truth相交IoU>0.5的建議框爲正樣本,否則爲負樣本。SVM則是適用於小樣本訓練,故對樣本IoU限制嚴格:Ground Truth爲正樣本,與Ground Truth相交IoU<0.3的建議框爲負樣本。換句話說,微調階段屬於寬粒度訓練,需要大量訓練樣本,IoU閾值設置寬鬆,但是SVM則屬於強分類器,適合小樣本訓練,因此對IoU閾值設置嚴格。

第三個問題是爲什麼不直接在微調結束後,在AlexNet後直接加上21維的Softmax分類層而是採用SVM進行分類?

作者在附錄中指出,因爲微調時和訓練SVM時所採用的正負樣本閾值不同,微調階段正樣本定義並不強調精準的位置,而SVM正樣本只有Ground Truth;並且微調階段的負樣本是隨機抽樣的,而SVM的負樣本是經過hard negative mining方法篩選的;導致在採用SoftMax會使PSACAL VOC 2007測試集上mAP從54.2%降低到50.9%。
加粗樣式
第四個問題是爲什麼必須利用特定領域的數據集進行微調?直接使用AlexNet預訓練的網絡參數進行特徵提取進而訓練SVM不可以嗎?

作者設計了沒有進行微調的對比實驗,分別就AlexNet的pool5、fc6、fc7層進行特徵提取,將提取的特徵輸入SVM進行訓練,這相當於把AlexNet CNN網絡當做類似於HOG、SIFT一樣的特徵提取器,不針對特定提取任務。實驗結果發現f6層提取的特徵比f7層的mAP還高,pool5層提取的特徵與f6、f7層相比mAP差不多; 在PASCAL VOC 2007數據集上採取了微調後fc6、fc7層特徵較pool5層特徵用於SVM訓練提升mAP十分明顯。

由此作者得出結論:不針對特定任務進行微調,而將CNN當成特徵提取器,pool5層得到的特徵是基礎(共性)特徵,從fc6和fc7等全連接層中所學習到的特徵是針對特徵任務特定樣本的特徵。

因此在有監督預訓練(遷移學習)之後利用特定任務特定樣本對網絡參數進行微調時非常有必要的。


四、R-CNN缺點

顯然R-CNN存在以下幾個缺點:

  1. 很明顯,最大的缺點是對一張圖片的處理速度慢,這是由於一張圖片中由選擇性搜索算法得出的約2000個推薦區域都需要經過變形處理後再由AlexNet提取深度特徵,這約2000個推薦區域可能出現大量重複區域,產生了大量重複計算。
  2. R-CNN的訓練過程不是連續的,分成了兩個部分。一個是AlexNet模型參數的微調,另一個是SVM的訓練和邊界框迴歸的訓練。這樣就導致無法共享權重,訓練過程不連續。同時訓練過程的不連續必然導致特徵存儲和磁盤空間浪費的情況。
  3. 每次都需要計算不同圖片中不同建議框CNN特徵,無法共享同一張圖的CNN特徵,訓練速度很慢。
  4. 整個測試過程很複雜,要先提取推薦區域,之後提取每個推薦區域CNN特徵,再用SVM分類,做非極大值抑制,最後做邊界框迴歸才能得到圖片中物體的分類以及定位信息。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章