R-CNN 論文筆記(翻譯)

準備將R-CNN,Fast R-CNN,Mask-CNN論文研讀一番,翻譯並記下部分重點,此爲開篇。

論文原文下載:

《Rich feature hierarchies for accurate object detection and semantic segmentation》

論文

摘要

基於PASCAL VOC數據集的物體檢測效果近幾年已經停滯不前。最好的方法是將低維的圖像特徵與高維的圖像背景融合在一起。而我們提出的算法的平均準確率(mAP)超過了之前在voc 2012上的最好的結果,提高了30%,達到了53.3。有兩個關鍵的地方:(1)我們可以將能力強的CNNs應用於從底至上的建議窗口,來實現定位於分割物體;(2)當訓練數據很少時,預先在豐富數據集上的監督學習可以作爲輔助,然後進行特定區域的優化。

1.介紹

特徵是很重要的。之前流行的SIFT 和 HOG,近幾年進展很慢。SIFT 和 HOG是區塊導向的直方圖(blockwise orientation histograms),我們可以把它想成靈長類視覺通道上第一個皮質層V1上的複雜的細胞。但是識別發生在接下來的幾個階段,我們便想到也許會有更有更有層次性、多階段的過程,來處理在視覺識別中含有更多信息的特徵。

2012年ImageNet的結果,讓大家思考:ImageNet上CNNs分類的取得的成果在多大程度上能應用於PASCAL VOC挑戰。我們通過消除圖片分類與物理檢測的差別來回答這個問題。這篇文章第一次證明了CNN可以獲得比基於更簡單的類似HOG的特徵的系統更優越的性能。爲了做到這個,我們關注兩個問題:用深層神經網絡定位物體和用少量的標記的物理檢測的數據來訓練高質量的網絡。

與圖像分類不同,檢測要求定位圖像中(可能很多)的物體。有人將它處理爲迴歸問題然而效果並不好;此外還有建立一個滑動的窗口,然而爲了保持高的空間分辨率,這些方法中的CNNs一般只有兩個卷積層與池化層。

而我們利用“”利用區域的識別”(recognition using regions)的範例來解決CNN定位的問題[21],這一技術已經在物體檢測與識別中取得了成功。在測試的時候,我們首先爲輸入的圖片生成2000個類別獨立的建議窗口,中間經過圖片大小的處理(後面會提到),然後利用CNN網絡提取出固定長度的特徵向量,然後通過線性SVMs進行分類。下圖展示了方法的大體流程:

                       

檢測的第二個難題是標記的數據很少,目前有的數據不足夠來訓練一個大型的CNN.。傳統的方法是先用預先的非監督的訓練,然後進行監督學習的優化。這篇文章的第二個貢獻就是展現出這種方法是可行的。

我們的系統是很特別的。分類的運算只有合適大小的矩陣乘積與貪心的非最大值抑制算法(greedy non-maximum)suppression。運算的優勢來源於所有類別都可以在一個或幾個特徵向量中表示出來。

其他人對我們的改進有:一個簡單的區域框迴歸(bounding-box regeression)可以極大地減少錯誤定位。

2.R-CNN 用於物體檢測

2.1 模塊設計

建議窗口:不關心這部分的方法,直接使用選擇搜索(selective search)方便與以前的檢測的工作作對比

特徵提取:我們利用Krizhevsky的CNN(i)從每個建議窗口提取出4096維的特徵向量。227乘227的圖片減去平均值後,經過5個卷積層與2個全連接層得到。輸入的圖片必須是227乘227(所使用CNNs的規定),因此圖片需要經過預處理,我們簡單的直接將圖片拉伸到227乘227(wrap)。此外,拉伸之前,我們還在圖片的四周填充P(我們使用16)的像素點的圖片背景。處理方法見下圖。A列爲得到的建議窗口。圖片,D列爲使用wrap後的圖片,每一張圖片的上一行圖片是未經填充然後變形的圖片,下一行是先填充再變形的圖片。B、C列是其他的處理方式,見原文appendix A。

                                 

2.2 測試時間分析

運行時間分析:兩點使我們的運算效率高。第一,所有類別分享着CNN的參數。第二,與其他方法相比,CNNs得出的特徵向量維數很低。分享參數的好處是花在處理一張建議窗口上的時間被均攤在所有類別上了,而分類的運算只有合適大小的矩陣乘積與貪心的非最大值抑制算法(greedy non-maximum)suppression。所以,R-CNN可以應用於成千上萬的物體分類任務中,而不用使用近似的方法,如hashing。

2.3 訓練

監督式的預訓練:我們在一個大型輔助的數據集(ILSVRC2012 分類)上提前訓練我們的CNN,數據集只有圖像級別的標註(只有類別,沒有窗口的類別標記)

特定區域的調優:只利用拉伸的建議窗口訓練,使用SGD訓練CNN。除了把ImageNet模型的1000個類別改爲了N+1個類別(N爲我們使用的類別數目,背景加1),ImageNet的模型結構並沒有改變。我們將與最標準的窗口有\geq0.5IoU重疊的建議窗口作爲那個類別的正例,其他作爲反例(背景)。一開始我們SGD的學習率爲0.001(預訓練學習率的十分之一),以在上一步的參數基礎上實現優化。在每一輪SGD的迭代中,我們均使用32個正例窗口(從所有類別中隨機選擇)和96個背景窗口組成128的mini-batch。我們傾向於提高正例窗口,因爲與背景相比它們很稀少。

物體分類:建設檢測一輛車,若一個窗口完全包圍了這輛車,那麼顯然它爲正例。但若只是與這輛車部分重疊呢?我們使用與標準正例IoU重疊閾值來處理這個問題。我們使用的0.3是從{0,0.1....0.5}網格搜索中得來的,低於0.3則爲反例。標準正例就是每個類別的最標準的窗口。特徵向量被提取,訓練數據被標記好後,我們對每一個類使用SVM。由於訓練的數據太大不能放在內存裏,我們使用standard hard negative mining method(就是多找一些容易看成正樣本的負樣本放入訓練集的方法)。這種方法收斂很快,實際中mAP在遍歷所有圖像一輪後便停止增長了。Appendix B談論了爲什麼調優與SVM分類正例的定義不一樣,以及使用SVM的得失。

Appendix.B Positive. vs negative examples and softmax

爲什麼CNN優化與SVMs訓練中正反例的定義不一樣呢?CNN優化中,先找出一個建議窗口,看它與哪一個標準的正例窗口有最大的IoU,如果這個IoU大於0.5,則把它標記爲匹配的標準窗口類別的正例。否則被標記爲背景(所有類別的反例)。SVMs中,只有標準正例窗口才是正例,把與某一類物體實例正例窗口IoU小於0.3的建議窗口標記爲這個類別的反例。其他建議窗口則被忽視了。

這有着歷史的原因,一開始我們直接用預訓練的CNN網絡得到的結果經過SVMs(只是單純的分類)。我們發先SVM的設置這樣是最優的。

我們猜測CNN優化中正例反例的設置並不重要,因爲優化的數據有限。但我們傾向於使用這些處於中間值的圖片(IoU在0.5~1之間),獲得更多的數據防止過擬合。也因爲如此,定位做的不是那麼好。

所以爲什麼要使用SVM呢?若將SVM用softmax代替,mAP從54.2%降到50.9%,這可能來自於幾個因素,如CNN優化過程中正例的定義導致定位不準確,softmax是在隨機的負例上訓練的,而SVM是hard negative數據集上訓練的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章