CNN应用之基于R-CNN的物体检测-CVPR 2014-未完待续
轉載自:
深度學習(十八)CNN應用之基于R-CNN的物體檢測-CVPR 2014-未完待續 - hjimce的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/hjimce/article/details/50187029
基于R-CNN的物體檢測
原文地址:http://blog.csdn.net/hjimce/article/details/50187029
作者:hjimce
一、相關理論
? ??本篇博文主要講解2014年CVPR上的經典paper:《Rich feature hierarchies?for?Accurate Object Detection and Segmentation》,這篇文章的算法思想又被稱之為:R-CNN(Regions with Convolutional Neural Network Features),是物體檢測領域曾經獲得state-of-art精度的經典文獻,2013年ILSVRC2013的冠軍,一口氣把原來的物體檢測的精度從40%提高到了53%,引用率非常高。所以如果你搞物體檢測方面,肯定會接觸到這個算法。
? ?這篇paper的思想,改變了物體檢測的總思路,現在好多文獻關于深度學習的物體檢測的算法,基本上都是繼承了這個思想,比如:《Spatial Pyramid Pooling in Deep Convolutional?Networks for Visual Recognition》,所以學習經典算法,有助于我們以后搞物體檢測的其它paper。
? ? 之前剛開始接觸物體檢測算法的時候,老是分不清deep learning中,物體檢測和圖片分類算法上的區別,弄得我頭好暈,終于在這篇paper上,看到了解釋。物體檢測和圖片分類的區別:圖片分類不需要定位,而物體檢測需要定位出物體的位置,也就是相當于把物體的bbox檢測出來。圖片分類標注好的訓練數據非常多,但是物體檢測的標注數據卻很少,如何用少量的標注數據,訓練高質量的模型,這就是文獻最大的創新點,這篇paper采用遷移學習的思想,對CNN模型進行參數初始化,精度飆漲,具體后面在講,讓大家先知道這篇paper最值得我們學的思想就是無監督預訓練,這也是我我覺得最早利用無監督學習方法應用于CNN中,之前雖然有看到一些圖片的無監督訓練(反卷積算法),但是感覺好像不頂用,引用的人也非常少。
二、算法實現
開始講解算法前,我們需要算法的總體思路,把握總體思路,才容易理解paper的算法。
1、算法總體思路?
? 圖片分類與物體檢測不同,物體檢測需要定位出物體的位置,這種就相當于回歸問題,求解一個包含物體的方框。而圖片分類其實是邏輯回歸。這種方法對于單物體檢測還不錯,但是對于多物體檢測就……因此paper采用的方法是:
首先輸入一張圖片,我們先定位出2000個物體候選框,然后采用CNN提取每個候選框中圖片的特征向量,特征向量的維度為4096維,接著采用svm算法對各個候選框中的物體進行分類識別。也就是總個過程分為三個程序:a、找出候選框。b、利用CNN提取特征向量 c、利用SVM進行特征向量分類。具體的流程如下圖片所示:
2、算法實現細節
(1)候選框搜索
讓我們輸入一張圖片時,我們要搜索出所有是物體的區域,這個采用的方法是傳統文獻的算法:《search for object recognition》,這個我們搜索出2000個候選框。然后我們從上面的總流程圖中可以看到,我們搜出的候選框,是矩形的,而且是大小各不相同。但是我們知道CNN對輸入圖片的大小是有固定的,如果把搜索到的矩形選框不做處理,就扔進CNN中,肯定不行。因此對于每個輸入的候選框都需要縮放到固定的大小,當然paper的縮放很簡單,就是不管圖片的長寬比例,管它是否扭曲,進行縮放就是了,全部縮放到CNN輸入的大小227*227。(這個時候其實我們可以想到,一張矩形圖片,如果強制把它縮放到227*227的正方形圖片,肯定會發生扭曲,就像上面總流程圖中的圖3,這個方法可定會識別精度,所以在后來的另外一篇paper中:《Spatial Pyramid Pooling in Deep Convolutional?Networks for Visual Recognition》才改進了這個輸入圖片的扭曲問題,在這篇博文中,我們暫且不考慮圖片是否發生扭曲)
(2)CNN特征提取
a、網絡設計
CNN的網絡結構方面與Alexnet網絡相同(除了最后一層的softmax層之外),圖片輸入的大小是227*227,如果還不知道Alexnet的,還是先好好學習經典paper《ImageNet Classification with Deep Convolutional》,這是入門必學的文章。Alexnet特征提取部分包含了5個卷積層、2個全連接層。通過這個網絡,我們每個輸入候選框圖片都能得到一個4096維的特征向量。
b、網絡訓練
物體檢測的一個難點在于,物體標簽訓練數據少,如果要直接采用隨機初始化CNN參數的方法,那么目前的訓練數據量是遠遠不夠的。這種情況下,最好的是采用無監督學習的方法進行預訓練,然后在進行有監督的參數微調。這個應該是深度學習的靈魂了,之前看過DBM,稀疏自編碼、RBM等,聽過這種思路,但是在CNN里面怎么用,卻一直不知道,這下子我又學了一招。我覺得這篇paper,最值得我們學的地方就是提出采用無監督訓練參數初始化的方法,最后在進行有監督微調。所以上面paper在設計網絡結構的時候,是直接用Alexnet的網絡,然后連參數也是直接采用它的參數,作為初始的參數值。
然而我們知道CNN可以用于提取特征,我們可以利用AlexNet的前面幾層,訓練好的模型,進行特征提取。
未完待續,敬請期待……
SVM分類的權值矩陣為4096*N,N為分類的個數,4096便是我們通過CNN提取到的特征向量
總結
以上是生活随笔為你收集整理的CNN应用之基于R-CNN的物体检测-CVPR 2014-未完待续的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Faster R-CNN
- 下一篇: CNN应用之SPP(基于空间金字塔池化的