目標檢測綜述_第1頁
目標檢測綜述_第2頁
目標檢測綜述_第3頁
目標檢測綜述_第4頁
目標檢測綜述_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、一、傳統目標檢測方法    如上圖所示,傳統目標檢測的方法一般分為三個階段:首先在給定的圖像上選擇一些候選的區域,然后對這些區域提取特征,最后使用訓練的分類器進行分類。下面我們對這三個階段分別進行介紹。    (1) 區域選擇    這一步是為了對目標的位置進行定位。由于目標可能出現在圖像的任何位置,而且目標的大小、長寬比例也不確定,所以最初采用滑動窗口的策略對整幅圖像進行遍歷,而且需要設置不同的尺度,不同的長寬比。這種窮舉的策略雖然包含了目標所有可能出現的位置,但是缺點也是

2、顯而易見的:時間復雜度太高,產生冗余窗口太多,這也嚴重影響后續特征提取和分類的速度和性能。(實際上由于受到時間復雜度的問題,滑動窗口的長寬比一般都是固定的設置幾個,所以對于長寬比浮動較大的多類別目標檢測,即便是滑動窗口遍歷也不能得到很好的區域)    (2) 特征提取    由于目標的形態多樣性,光照變化多樣性,背景多樣性等因素使得設計一個魯棒的特征并不是那么容易。然而提取特征的好壞直接影響到分類的準確性。(這個階段常用的特征有SIFT、HOG等)    (3) 分類器

3、60;   主要有SVM, Adaboost等。    總結:傳統目標檢測存在的兩個主要問題:一是基于滑動窗口的區域選擇策略沒有針對性,時間復雜度高,窗口冗余;二是手工設計的特征對于多樣性的變化并沒有很好的魯棒性。二、基于Region Proposal的深度學習目標檢測算法    對于傳統目標檢測任務存在的兩個主要問題,我們該如何解決呢?    對于滑動窗口存在的問題,region proposal提供了很好的解決方案。region propos

4、al(候選區域)是預先找出圖中目標可能出現的位置。但由于region proposal利用了圖像中的紋理、邊緣、顏色等信息,可以保證在選取較少窗口(幾千個甚至幾百個)的情況下保持較高的召回率。這大大降低了后續操作的時間復雜度,并且獲取的候選窗口要比滑動窗口的質量更高(滑動窗口固定長寬比)。比較常用的region proposal算法有selective Search和edge Boxes,如果想具體了解region proposal可以看一下PAMI2015的“What makes for effective detection proposals?”   

5、60;有了候選區域,剩下的工作實際就是對候選區域進行圖像分類的工作(特征提取+分類)。對于圖像分類,不得不提的是2012年ImageNet大規模視覺識別挑戰賽(ILSVRC)上,機器學習泰斗Geoffrey Hinton教授帶領學生Krizhevsky使用卷積神經網絡將ILSVRC分類任務的Top-5 error降低到了15.3%,而使用傳統方法的第二名top-5 error高達 26.2%。此后,卷積神經網絡占據了圖像分類任務的絕對統治地位,微軟最新的ResNet和谷歌的Inception V4模型的top-5 error降到了4%以內多,這已經超越人在這個特定任務上的能力。所以目標檢測得到

6、候選區域后使用CNN對其進行圖像分類是一個不錯的選擇。    2014年,RBG(Ross B. Girshick)大神使用region proposal+CNN代替傳統目標檢測使用的滑動窗口+手工設計特征,設計了R-CNN框架,使得目標檢測取得巨大突破,并開啟了基于深度學習目標檢測的熱潮。1. R-CNN (CVPR2014, TPAMI2015)    (Region-based Convolution Networks for Accurate Object detection and Segmentatio

7、n)上面的框架圖清晰的給出了R-CNN的目標檢測流程:    (1)輸入測試圖像 (2)利用selective search算法在圖像中提取2000個左右的region proposal。    (3)將每個region proposal縮放(warp)成227x227的大小并輸入到CNN,將CNN的fc7層的輸出作為特征。    (4)將每個region proposal提取到的CNN特征輸入到SVM進行分類。    上面的框架圖是測試的流程圖,要進行測

8、試我們首先要訓練好提取特征的CNN模型,以及用于分類的SVM:使用在ImageNet上預訓練的模型(AlexNet/VGG16)進行微調得到用于特征提取的CNN模型,然后利用CNN模型對訓練集提特征訓練SVM。   對每個region proposal縮放到同一尺度是因為CNN全連接層輸入需要保證維度固定。    上圖少畫了一個過程對于SVM分好類的region proposal做邊框回歸(bounding-box regression),邊框回歸是對region proposal進行糾正的線性回歸算法,為了讓region

9、proposal提取到的窗口跟目標真實窗口更吻合。因為region proposal提取到的窗口不可能跟人手工標記那么準,如果region proposal跟目標位置偏移較大,即便是分類正確了,但是由于IoU(region proposal與Ground Truth的窗口的交集比并集的比值)低于0.5,那么相當于目標還是沒有檢測到。    小結:R-CNN在PASCAL VOC2007上的檢測結果從DPM HSC的34.3%直接提升到了66%(mAP)。如此大的提升使我們看到了region proposal+CNN的巨大優勢。  &#

10、160; 但是R-CNN框架也存在著很多問題:    (1) 訓練分為多個階段,步驟繁瑣: 微調網絡+訓練SVM+訓練邊框回歸器    (2) 訓練耗時,占用磁盤空間大:5000張圖像產生幾百G的特征文件   (3) 速度慢: 使用GPU, VGG16模型處理一張圖像需要47s。    針對速度慢的這個問題,SPP-NET給出了很好的解決方案。2. SPP-NET (ECCV2014, TPAMI2015)

11、    (Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition)    先看一下R-CNN為什么檢測速度這么慢,一張圖都需要47s!仔細看下R-CNN框架發現,對圖像提完region proposal(2000個左右)之后將每個proposal當成一張圖像進行后續處理(CNN提特征+SVM分類),實際上對一張圖像進行了2000次提特征和分類的過程!    有沒有方法提速呢?好

12、像是有的,這2000個region proposal不都是圖像的一部分嗎,那么我們完全可以對圖像提一次卷積層特征,然后只需要將region proposal在原圖的位置映射到卷積層特征圖上,這樣對于一張圖像我們只需要提一次卷積層特征,然后將每個region proposal的卷積層特征輸入到全連接層做后續操作。(對于CNN來說,大部分運算都耗在卷積操作上,這樣做可以節省大量時間)?,F在的問題是每個region proposal的尺度不一樣,直接這樣輸入全連接層肯定是不行的,因為全連接層輸入必須是固定的長度。SPP-NET恰好可以解決這個問題:    上圖

13、對應的就是SPP-NET的網絡結構圖,任意給一張圖像輸入到CNN,經過卷積操作我們可以得到卷積特征(比如VGG16最后的卷積層為conv5_3,共產生512張特征圖)。圖中的window是就是原圖一個region proposal對應到特征圖的區域,只需要將這些不同大小window的特征映射到同樣的維度,將其作為全連接的輸入,就能保證只對圖像提取一次卷積層特征。SPP-NET使用了空間金字塔采樣(spatial pyramid pooling):將每個window劃分為4*4, 2*2, 1*1的塊,然后每個塊使用max-pooling下采樣,這樣對于每個window經過SPP層之后都得到了一

14、個長度為(4*4+2*2+1)*512維度的特征向量,將這個作為全連接層的輸入進行后續操作。    小結:使用SPP-NET相比于R-CNN可以大大加快目標檢測的速度,但是依然存在著很多問題:    (1) 訓練分為多個階段,步驟繁瑣: 微調網絡+訓練SVM+訓練訓練邊框回歸器    (2) SPP-NET在微調網絡的時候固定了卷積層,只對全連接層進行微調,而對于一個新的任務,有必要對卷積層也進行微調。(分類的模型提取的特征更注重高層語義,而目標檢測任務除

15、了語義信息還需要目標的位置信息)    針對這兩個問題,RBG又提出Fast R-CNN, 一個精簡而快速的目標檢測框架。3. Fast R-CNN(ICCV2015)    有了前邊R-CNN和SPP-NET的介紹,我們直接看Fast R-CNN的框架圖:    與R-CNN框架圖對比,可以發現主要有兩處不同:一是最后一個卷積層后加了一個ROI pooling layer,二是損失函數使用了多任務損失函數(multi-task loss),將邊框回歸直接加入到CNN網絡中訓

16、練。   (1) ROI pooling layer實際上是SPP-NET的一個精簡版,SPP-NET對每個proposal使用了不同大小的金字塔映射,而ROI pooling layer只需要下采樣到一個7x7的特征圖。對于VGG16網絡conv5_3有512個特征圖,這樣所有region proposal對應了一個7*7*512維度的特征向量作為全連接層的輸入。    (2) R-CNN訓練過程分為了三個階段,而Fast R-CNN直接使用softmax替代SVM分類,同時利用多任務損失函數邊框回歸也加入到了網

17、絡中,這樣整個的訓練過程是端到端的(除去region proposal提取階段)。   (3) Fast R-CNN在網絡微調的過程中,將部分卷積層也進行了微調,取得了更好的檢測效果。    小結:Fast R-CNN融合了R-CNN和SPP-NET的精髓,并且引入多任務損失函數,使整個網絡的訓練和測試變得十分方便。在Pascal VOC2007訓練集上訓練,在VOC2007測試的結果為66.9%(mAP),如果使用VOC2007+2012訓練集訓練,在VOC2007上測試結果為70%(數據集的擴充能大幅提高目標檢

18、測性能)。使用VGG16每張圖像總共需要3s左右。    缺點:region proposal的提取使用selective search,目標檢測時間大多消耗在這上面(提region proposal 23s,而提特征分類只需0.32s),無法滿足實時應用,而且并沒有實現真正意義上的端到端訓練測試(region proposal使用selective search先提取處來)。那么有沒有可能直接使用CNN直接產生region proposal并對其分類?Faster R-CNN框架就是符合這樣需要的目標檢測框架。4. Faster R-CNN(NIPS2

19、015)    (Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks)    在region proposal + CNN分類的這種目標檢測框架中,region proposal質量好壞直接影響到目標檢測任務的精度。如果找到一種方法只提取幾百個或者更少的高質量的預選窗口,而且召回率很高,這不但能加快目標檢測速度,還能提高目標檢測的性能(假陽例少)。RPN(Region Proposal Networks)網絡應

20、運而生。    RPN的核心思想是使用卷積神經網絡直接產生region proposal,使用的方法本質上就是滑動窗口。RPN的設計比較巧妙,RPN只需在最后的卷積層上滑動一遍,因為anchor機制和邊框回歸可以得到多尺度多長寬比的region proposal。    我們直接看上邊的RPN網絡結構圖(使用了ZF模型),給定輸入圖像(假設分辨率為600*1000),經過卷積操作得到最后一層的卷積特征圖(大小約為40*60)。在這個特征圖上使用3*3的卷積核(滑動窗口)與特征圖進行卷積,最后一層卷積層共有256個f

21、eature map,那么這個3*3的區域卷積后可以獲得一個256維的特征向量,后邊接cls layer和reg layer分別用于分類和邊框回歸(跟Fast R-CNN類似,只不過這里的類別只有目標和背景兩個類別)。3*3滑窗對應的每個特征區域同時預測輸入圖像3種尺度(128,256,512),3種長寬比(1:1,1:2,2:1)的region proposal,這種映射的機制稱為anchor。所以對于這個40*60的feature map,總共有約20000(40*60*9)個anchor,也就是預測20000個region proposal。    

22、;這樣設計的好處是什么呢?雖然現在也是用的滑動窗口策略,但是:滑動窗口操作是在卷積層特征圖上進行的,維度較原始圖像降低了16*16倍(中間經過了4次2*2的pooling操作);多尺度采用了9種anchor,對應了三種尺度和三種長寬比,加上后邊接了邊框回歸,所以即便是這9種anchor外的窗口也能得到一個跟目標比較接近的region proposal。    NIPS2015版本的Faster R-CNN使用的檢測框架是RPN網絡+Fast R-CNN網絡分離進行的目標檢測,整體流程跟Fast R-CNN一樣,只是region proposal現在是用R

23、PN網絡提取的(代替原來的selective search)。同時作者為了讓RPN的網絡和Fast R-CNN網絡實現卷積層的權值共享,訓練RPN和Fast R-CNN的時候用了4階段的訓練方法:    (1) 使用在ImageNet上預訓練的模型初始化網絡參數,微調RPN網絡;    (2) 使用(1)中RPN網絡提取region proposal訓練Fast R-CNN網絡;    (3) 使用(2)的Fast R-CNN網絡重新初始化RPN

24、, 固定卷積層進行微調;    (4) 固定(2)中Fast R-CNN的卷積層,使用(3)中RPN提取的region proposal微調網絡。    權值共享后的RPN和Fast R-CNN用于目標檢測精度會提高一些。    使用訓練好的RPN網絡,給定測試圖像,可以直接得到邊緣回歸后的region proposal,根據region proposal的類別得分對RPN網絡進行排序,并選取前300個窗口作為Fast R-CNN的輸入進行目標檢測,使用VOC07+

25、12訓練集訓練,VOC2007測試集測試mAP達到73.2%(selective search + Fast R-CNN是70%), 目標檢測的速度可以達到每秒5幀(selective search+Fast R-CNN是23s一張)。    需要注意的是,最新的版本已經將RPN網絡和Fast R-CNN網絡結合到了一起將RPN獲取到的proposal直接連到ROI pooling層,這才是一個真正意義上的使用一個CNN網絡實現端到端目標檢測的框架。    小結:Faster R-CNN將一直以來分離的region

26、 proposal和CNN分類融合到了一起,使用端到端的網絡進行目標檢測,無論在速度上還是精度上都得到了不錯的提高。然而Faster R-CNN還是達不到實時的目標檢測,預先獲取region proposal,然后在對每個proposal分類計算量還是比較大。比較幸運的是YOLO這類目標檢測方法的出現讓實時性也變的成為可能。    總的來說,從R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN一路走來,基于深度學習目標檢測的流程變得越來越精簡,精度越來越高,速度也越來越快??梢哉f基于region proposal的R-CNN

27、系列目標檢測方法是當前目標最主要的一個分支。三、基于回歸方法的深度學習目標檢測算法    Faster R-CNN的方法目前是主流的目標檢測方法,但是速度上并不能滿足實時的要求。YOLO一類的方法慢慢顯現出其重要性,這類方法使用了回歸的思想,既給定輸入圖像,直接在圖像的多個位置上回歸出這個位置的目標邊框以及目標類別。1. YOLO (CVPR2016, oral)    (You Only Look Once: Unified, Real-Time Object Detection)  

28、0; 我們直接看上面YOLO的目標檢測的流程圖:    (1) 給個一個輸入圖像,首先將圖像劃分成7*7的網格    (2) 對于每個網格,我們都預測2個邊框(包括每個邊框是目標的置信度以及每個邊框區域在多個類別上的概率)    (3) 根據上一步可以預測出7*7*2個目標窗口,然后根據閾值去除可能性比較低的目標窗口,最后NMS去除冗余窗口即可。   可以看到整個過程非常簡單,不需要中間的region pr

29、oposal在找目標,直接回歸便完成了位置和類別的判定。    那么如何才能做到直接在不同位置的網格上回歸出目標的位置和類別信息呢?上面是YOLO的網絡結構圖,前邊的網絡結構跟GoogLeNet的模型比較類似,主要的是最后兩層的結構,卷積層之后接了一個4096維的全連接層,然后后邊又全連接到一個7*7*30維的張量上。實際上這7*7就是劃分的網格數,現在要在每個網格上預測目標兩個可能的位置以及這個位置的目標置信度和類別,也就是每個網格預測兩個目標,每個目標的信息有4維坐標信息(中心點坐標+長寬),1個是目標的置信度,還有類別數20(VOC上20個類別),

30、總共就是(4+1)*2+20 = 30維的向量。這樣可以利用前邊4096維的全圖特征直接在每個網格上回歸出目標檢測需要的信息(邊框信息加類別)。    小結:YOLO將目標檢測任務轉換成一個回歸問題,大大加快了檢測的速度,使得YOLO可以每秒處理45張圖像。而且由于每個網絡預測目標窗口時使用的是全圖信息,使得false positive比例大幅降低(充分的上下文信息)。但是YOLO也存在問題:沒有了region proposal機制,只使用7*7的網格回歸會使得目標不能非常精準的定位,這也導致了YOLO的檢測精度并不是很高。2. SSD  &#

31、160;  (SSD: Single Shot MultiBox Detector)    上面分析了YOLO存在的問題,使用整圖特征在7*7的粗糙網格內回歸對目標的定位并不是很精準。那是不是可以結合region proposal的思想實現精準一些的定位?SSD結合YOLO的回歸思想以及Faster R-CNN的anchor機制做到了這點。     上圖是SSD的一個框架圖,首先SSD獲取目標位置和類別的方法跟YOLO一樣,都是使用回歸,但是YOLO預測某個位置使用的是全圖的特征,SSD預測某個

32、位置使用的是這個位置周圍的特征(感覺更合理一些)。那么如何建立某個位置和其特征的對應關系呢?可能你已經想到了,使用Faster R-CNN的anchor機制。如SSD的框架圖所示,假如某一層特征圖(圖b)大小是8*8,那么就使用3*3的滑窗提取每個位置的特征,然后這個特征回歸得到目標的坐標信息和類別信息(圖c)。    不同于Faster R-CNN,這個anchor是在多個feature map上,這樣可以利用多層的特征并且自然的達到多尺度(不同層的feature map 3*3滑窗感受野不同)。    小結:SSD結合了YOLO中的回歸思想和Faster R-CNN中的anchor機制,使用全圖各個位置的多尺度區域特征進行回歸,既保持了YOLO速度快的特性,也保證了窗口預測的跟Faster R-CNN一樣比較精準。SSD在VOC2007上mAP可以達到72.1%,速度在GPU上達到58幀每秒。    

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論