CNN结构:用于检测的CNN结构进化-分离式方法
前言:
???????? 原文鏈接:基于CNN的目標檢測發展過程?????? 文章有大量修改,如有不適,請移步原文.
????? ?? 參考文章:圖像的全局特征--用于目標檢測?????????????????????????????????
????? ? 目標的檢測和定位中一個很困難的問題是,如何從數以萬計的候選窗口中挑選包含目標物的物體。只有候選窗口足夠多,才能保證模型的 Recall。傳統機器學習方法應用,使用全局特征+級聯分類器的思路仍然被持續使用。常用的級聯方法有haar/LBP特征+Adaboost決策樹分類器級聯檢測 和HOG特征 + SVM分類器級聯檢測。
??????? DPM方法為08年提出的一種可進行級聯(2010)的圖像目標檢測方法,RBG闡述,“Deformable Part Models are Convolutional Neural Networks”(http://arxiv.org/abs/1409.5403),可以視為CNN檢測方法的前驅。
????? 目標檢測的幾個階段:分類 、分類+定位 、多目標檢測、語義分割
??????
引言
??????? 圖像的全局特征:HOG特征和DPM模型......
???? ?? 孔濤在知乎上這樣寫到。
????? ? 目前,基于CNN的目標檢測框架主要有兩種:
??????? 一種是 one-stage ,例如 YOLO、SSD 等,這一類方法速度很快,但識別精度沒有 two-stage 的高,其中一個很重要的原因是,利用一個分類器很難既把負樣本抑制掉,又把目標分類好。
??????? 另外一種目標檢測框架是 two-stage ,以 Faster RCNN 為代表,這一類方法識別準確度和定位精度都很高,但存在著計算效率低,資源占用大的問題。
???????
預訓練模型-用于分類的CNN
??????? 大多數模型并非一開始就設計網絡結構,使用數據進行訓練網絡結構,而使用ImageNet上訓練好的CNN結構。R-CNN文獻paper給我們證明了一個理論,如果你不進行fine-tuning,也就是你直接把Alexnet模型使用于工程,類似于HOG、SIFT一樣做特征提取,說明使用ImageNet訓練過的CNN結構已經在特征提取方面達到了HOG的效果。
??????? 文章這樣說:不針對特定的任務。然后把提取的特征用于分類,結果發現p5的精度竟然跟f6、f7差不多,而且f6提取到的特征還比f7的精度略高;如果你進行fine-tuning了,那么f7、f6的提取到的特征最會訓練的svm分類器的精度就會飆漲。
Two-Stage方法
??????? Two-Stage方法為Region proposal和CNN分離的方法,把檢測問題分解為原始的尋找框和目標分類兩步問題。先后出現R-CNN、SPP-NET、Fast R-CNN、Faster R-CNN、R-FCN、Mask RCNN。
??????? Two-Stage方法主要問題是從大量框選取候選框問題,使用的方法有:objectness [1],selective search [39],category-independent object proposals [14], constrained parametric min-cuts (CPMC) [5], multi-scale combinatorial grouping [3], and Cires?an et al. [6], who detect mitotic cellsby applying a CNN to regularly-spaced square crops, which are a special case of region proposals.
????? ? While R-CNN is agnostic to the particular region proposal method, we useselective search to enable a controlled comparison with prior detection work (e.g., [39, 41]).。R-CNN使用了selective search方法,下圖為一個評測。
????????
??????? 參考文章:基于CNN的目標檢測發展過程?????
??????? 參考文章:基于R-CNN的物體檢測 ? 看一下即可? ? ??
R-CNN方法
?? ? ?? 2014年CVPR上的經典paper:《Rich feature hierarchies?for?Accurate Object Detection and Segmentation》,這篇文章的算法思想又被稱之為:R-CNN(Regions with Convolutional Neural Network Features),是物體檢測領域曾經獲得state-of-art精度的經典文獻。
? ????? 這篇paper的思想,改變了物體檢測的總思路,現在好多文獻關于深度學習的物體檢測的算法,基本上都是繼承了這個思想,比如:《Spatial Pyramid Pooling in Deep Convolutional?Networks for Visual Recognition》。
??? ? ? R-CNN的檢測步驟:
??????
分別在選框和CNN兩個步驟進行了優化。
?????? 步驟一:預訓練(或者下載)一個分類模型(比如AlexNet);
??? ?? 步驟二:對該模型做fine-tuning: 將分類數從1000改為20;去掉最后一個全連接層(使用SVM分類);
???? ? 步驟三:1.特征提取
? ?? ? 提取圖像的所有候選框(選擇性搜索-selective search)
? ?? ? 對于每一個區域:修正區域大小以適合CNN的輸入,做一次前向運算,將第五個池化層的輸出(就是對候選框提取到的特征)存到硬盤
???? ? 步驟四:2.訓練一個SVM分類器(二分類)來判斷這個候選框里物體的類別
???????????? ? 每個類別對應一個SVM,判斷是不是屬于這個類別,是就是positive,反之nagative
?????? 步驟五:3.使用回歸器精細修正候選框位置:對于每一個類,訓練一個線性回歸模型去判定這個框是否框得完美。
????????
??????????????????????? R-CNN使用精細調整選定框的方法實現了較高的檢測性能。mAP和IOU都達到了一個很高的標準。
????? ???? 使用的selective search方法,參考:"Selective search for object recognition." International journal of computer vision, 104(2) (2013): 154-171.此文必看:selective search方法。
?? 這一步可以看做是對圖像的過分割,都是過分割,本文SS方法的過人之處在于預先劃分的區域什么大小的都有(滿足目標多尺度的要求),而且對過分割的區域還有一個合并的過程(區域的層次聚類),最后剩下的都是那些最可能的候選區域,然后在這些已經過濾了一遍的區域上進行后續的識別等處理,這樣的話,將會大大減小候選區域的數目,提供了算法的速度。參考超像素分割聚類過程。
舉例一般合并規則:
優先合并以下四種區域:
- 顏色(顏色直方圖)相近的
- 紋理(梯度直方圖)相近的
- 合并后總面積小的
- 合并后,總面積在其BBOX中所占比例大的
第三條,保證合并操作的尺度較為均勻,避免一個大區域陸續“吃掉”其他小區域。
例:設有區域a-b-c-d-e-f-g-h。較好的合并方式是:ab-cd-ef-gh -> abcd-efgh -> abcdefgh。
不好的合并方法是:ab-c-d-e-f-g-h ->abcd-e-f-g-h ->abcdef-gh -> abcdefgh。
第四條,保證合并后形狀規則。
例:左圖適于合并,右圖不適于合并。
SPP Net
??????? SPP:Spatial Pyramid Pooling(空間金字塔池化)
??????? 參考文章:SPP-Net:CNNs添加一尺度不變特征-神經元層??????????????????????????????
它的特點有兩個:
??????? 1. 結合空間金字塔方法實現CNNs的對尺度輸入的可變性;? 2. 只對原圖提取一次卷積特征。
??????? 空間金字塔池化:一般CNN后接全連接層或者分類器,他們都需要固定的輸入尺寸,因此不得不對輸入數據進行crop或者warp,這些預處理會造成數據的丟失或幾何的失真。SPP Net的第一個貢獻就是將金字塔思想加入到CNN,實現了數據的多尺度輸入。
? ? ? ???????
??????? 一次性卷積特征提取:在R-CNN中,每個候選框先resize到統一大小,然后分別作為CNN的輸入,這樣是很低效的。
??????? 所以SPP Net根據這個缺點做了優化:只對原圖進行一次卷積得到整張圖的feature map,然后找到每個候選框zaifeature map上的映射patch,將此patch作為每個候選框的卷積特征輸入到SPP layer和之后的層。節省了大量的計算時間,比R-CNN有一百倍左右的提速。
?
?????? ? RCNN的缺點:一、沒有共享卷積運算;二、即使使用了selective search等預處理步驟來提取潛在的bounding box作為輸入,但是RCNN仍會有嚴重的速度瓶頸,原因也很明顯,就是計算機對所有region進行特征提取時會有重復計算,Fast-RCNN正是為了解決這個問題誕生的。
??????? ?
Fast R-CNN? 和Faster R-CNN
?????? R-CNN的進階版Fast R-CNN就是在RCNN的基礎上采納了SPP Net方法,對RCNN作了改進,使得性能進一步提高。成功的讓人們看到了Region Proposal+CNN這一框架實時檢測的希望,原來多類檢測真的可以在保證準確率的同時提升處理速度,也為后來的Faster-RCNN做下了鋪墊。
?????? Faster R-CNN的主要貢獻是設計了提取候選區域的網絡RPN,代替了費時的選擇性搜索,使得檢測速度大幅提高。加入一個提取邊緣的神經網絡,也就說找到候選框的工作也交給神經網絡來做了。此外RPN網絡和識別網絡共享卷積層,加快數據forward速度。做這樣的任務的神經網絡叫做Region Proposal Network(RPN)。
????? 具體做法:
? 將RPN放在最后一個卷積層的后面;
? RPN直接訓練得到候選區域。怎么訓練?
???? ?? 具體方案還要好好看看論文:Faster R-CNN Towards Real-Time Object Detection with Region Proposal Networks。
算法總結:
RCNN:
1. 在圖像中選擇約1000-2000個候選框 (使用selective search);2. 每個候選框內圖像塊縮放至相同大小,并輸入到CNN內進行特征提取 ;3. 對候選框中提取出的特征,使用分類器判別是否屬于一個特定類 ;4. 對于屬于某一特征的候選框,用回歸器進一步調整其位置。
Fast RCNN:
?????? 添加SPP層,
1. 在圖像中確定約1000-2000個候選框 (使用選擇性搜索);2. 對整張圖片輸進CNN,得到feature map;3. 找到每個候選框在feature map上的映射patch,將此patch作為每個候選框的卷積特征輸入到SPP layer和之后的層;4. 對候選框中提取出的特征,使用分類器判別是否屬于一個特定類 ;5. 對于屬于某一特征的候選框,用回歸器進一步調整其位置。
Faster RCNN:
1. 對整張圖片輸進CNN,得到feature map;2. 卷積特征輸入到RPN,得到候選框的特征信息;3. 對候選框中提取出的特征,使用分類器判別是否屬于一個特定類 ;4. 對于屬于某一特征的候選框,用回歸器進一步調整其位置。
??????? 值得注意的是,盡管RPN與fast rcnn 共享卷積層,但是在模型訓練的過程中,需要反復訓練RPN網絡和fast rcnn 網絡(兩個網絡的核心卷積層是共享的),不能有所偏頗,網絡共享主要作用還是推進forward的速度。
總結
以上是生活随笔為你收集整理的CNN结构:用于检测的CNN结构进化-分离式方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 烟雨江湖须弥寺在哪里
- 下一篇: CNN结构:用于检测的CNN结构进化-一