計算機視覺目標檢測算法綜述


計算機視覺目標檢測算法綜述

 版權聲明:轉載請注明出處 https://blog.csdn.net/qq_16525279/article/details/81698684

傳統目標檢測三步走:區域選擇、特征提取、分類回歸

遇到的問題:

1.區域選擇的策略效果差、時間復雜度高

2.手工提取的特征魯棒性較差

深度學習時代目標檢測算法的發展:

Two-Stage:

R-CNN

論文地址:Rich feature hierarchies for accurate object detection and semantic segmentation

地位:是用卷積神經網絡(CNN)做目標檢測的第一篇,意義影響深遠。

核心思想:

1.區域選擇不再使用滑窗,而是采用啟發式候選區域生成算法(Selective Search)

2.特征提取也從手工變成利用CNN自動提取特征,增強了魯棒性。

流程步驟:

1.使用Selective Search算法從待檢測圖像中提取2000個左右的區域候選框

2.把所有侯選框縮放成固定大小(原文采用227×227)

3.使用CNN(有5個卷積層和2個全連接層)提取候選區域圖像的特征,得到固定長度的特征向量

4.將特征向量輸入到SVM分類器,判別輸入類別;送入到全連接網絡以回歸的方式精修候選框

優點:

1.速度
傳統的區域選擇使用滑窗,每滑一個窗口檢測一次,相鄰窗口信息重疊高,檢測速度慢。R-CNN 使用一個啟發式方法(Selective Search),先生成候選區域再檢測,降低信息冗余程度,從而提高檢測速度。

2.特征提取
傳統的手工提取特征魯棒性差,限於如顏色、紋理等低層次(Low level)的特征。

不足:

1.算力冗余
先生成候選區域,再對區域進行卷積,這里有兩個問題:其一是候選區域會有一定程度的重疊,對相同區域進行重復卷積;其二是每個區域進行新的卷積需要新的存儲空間。

2.圖片縮放

候選區域中的圖像輸入CNN(卷積層並不要求輸入圖像的尺寸固定,只有第一個全連接層需要確定輸入維度,因為它和前一層之間的權重矩陣是固定大小的,其他的全連接層也不要求圖像的尺寸固定)中需要固定尺寸(227 * 227),會造成物體形變,導致檢測性能下降。

3.訓練測試不簡潔

候選區域生成、特征提取、分類、回歸都是分開操作,中間數據還需要單獨保存。

SPP Net

論文地址:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

優點:

1.將提取候選框特征向量的操作轉移到卷積后的特征圖上進行,將R-CNN中的多次卷積變為一次卷積,大大降低了計算量,不僅減少存儲量而且加快了訓練速度。

2.在最后一個卷積層和第一個全連接層之間做一些處理,引入了Spatial Pyramid pooling層,對卷積特征圖像進行空間金字塔采樣獲得固定長度的輸出,可對特征層任意長寬比和尺度區域進行特征提取。

Spatial Pyramid pooling具體做法:

在得到卷積特征圖之后,對卷積特征圖進行三種尺度的切分:4*4,2*2,1*1,對於切分出來的每個小塊進行max-pooling下采樣,之后再將下采樣的結果全排列成一個列向量,送入全連接層。

Spatial Pyramid pooling操作示意圖:

例如每個候選區域在最后的512張卷積特征圖中得到了512個該區域的卷積特征圖,通過spp-net下采樣后得到了一個512×(4×4+2×2+1×1)維的特征向量,這樣就將大小不一的候選區的特征向量統一到了一個維度。

總結:不僅減少了計算冗余,更重要的是打破了固定尺寸輸入這一束縛。

Fast R-CNN

論文地址:Fast R-CNN

結構創新:將原來的串行結構改成並行結構。

網絡創新:加入RoI pooling layer,它將不同大小候選框的卷積特征圖統一采樣成固定大小的特征。ROI池化層的做法和SPP層類似,但只使用一個尺度進行網格划分和池化。

Fast R-CNN針對R-CNN和SPPNet在訓練時是多階段的和訓練的過程中很耗費時間空間的問題進行改進。設計了多任務損失函數(multi-task loss),將分類任務和邊框回歸統一到了一個框架之內。

Faster R-CNN

論文地址:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

在Faster R-CNN之前,生成候選區域都是用的一系列啟發式算法(Selective Search),基於Low Level特征生成區域。

存在的問題:

1.生成區域的靠譜程度隨緣,而Two Stage算法正是依靠生成區域的靠譜程度——生成大量無效區域則會造成算力的浪費、少生成區域則會漏檢;

2.生成候選區域的算法(Selective Search)是在 CPU 上運行的,而訓練在GPU上面,跨結構交互必定會有損效率。

革新:提出Region Proposal Network(RPN)網絡替代Selective Search算法,利用神經網絡自己學習去生成候選區域。

這種生成方法同時解決了上述的兩個問題,神經網絡可以學到更加高層、語義、抽象的特征,生成的候選區域的可靠程度大大提高。

使得整個目標識別真正實現了端到端的計算,將所有的任務都統一在了深度學習的框架之下,所有計算都在GPU內進行,使得計算的速度和精度都有了大幅度提升。

從上圖看出RPN和RoI pooling共用前面的卷積神經網絡——將RPN嵌入原有網絡,原有網絡和RPN一起預測,大大地減少了參數量和預測時間。

Faster R-CNN在做下采樣和RoI Pooling時都對特征圖大小做了取整操作。

整體思路:首先對整張圖片進行卷積計算,得到卷積特征,然后利用RPN進行候選框選擇,再返回卷積特征圖取出候選框內的卷積特征利用ROI提取特征向量最終送入全連接層進行精確定位和分類,總之:RPN+Fast R-CNN=Faster R-CNN。

RPN網絡

在RPN中引入了anchor的概念,feature map中每個滑窗位置都會生成 k 個anchor,然后判斷anchor覆蓋的圖像是前景還是背景,同時回歸Bounding box(Bbox)的精細位置,預測的Bbox更加精確。

解釋:為了提取候選框,作者使用了一個小的神經網絡也即就是一個n×n的卷積核(文中采用了3×3的網絡),在經過一系列卷積計算的特征圖上進行滑移,進行卷積計算。每一個滑窗計算之后得到一個低維向量(例如VGG net 最終有512張卷積特征圖,每個滑窗進行卷積計算的時候可以得到512維的低維向量),得到的特征向量,送入兩種層:一種是邊框回歸層進行定位,另一種是分類層判斷該區域是前景還是背景。3*3滑窗對應的每個特征區域同時預測輸入圖像3種尺度(128,256,512),3種長寬比(1:1,1:2,2:1)的region proposal,這種映射的機制稱為anchor。所以對於40*60圖圖,總共有約20000(40*60*9)個anchor,也就是預測20000個region proposal。

總結:Faster R-CNN可以說是真正意義上的深度學習目標檢測算法。Faster R-CNN將一直以來分離的region proposal和CNN分類融合到了一起,使用端到端的網絡進行目標檢測,無論在速度上還是精度上都得到了不錯的提高。然而Faster R-CNN還是達不到實時的目標檢測,預先獲取region proposal,然后在對每個proposal分類計算量還是比較大。

小結:

一開始的串行到並行,從單一信息流到兩條信息流。

總的來說,從R-CNN, SPP NET, Fast R-CNN, Faster R-CNN一路走來,基於深度學習目標檢測的流程變得越來越精簡,精度越來越高,速度也越來越快。可以說基於region proposal的R-CNN系列目標檢測方法是當前目標最主要的一個分支。

One-Stage:

盡管Faster R-CNN在計算速度方面已經取得了很大進展,但是仍然無法滿足實時檢測的要求,因此有人提出了基於回歸的方法直接從圖片中回歸出目標物體的位置以及種類。具有代表性的兩種方法是YOLO和SSD。

YOLO

論文地址:You Only Look Once: Unified, Real-Time Object Detection

區別於R-CNN系列為代表的兩步檢測算法,YOLO舍去了候選框提取分支(Proposal階段),直接將特征提取、候選框回歸和分類在同一個無分支的卷積網絡中完成,使得網絡結構變得簡單,檢測速度較Faster R-CNN也有近10倍的提升。這使得深度學習目標檢測算法在當時的計算能力下開始能夠滿足實時檢測任務的需求。

網絡結構:

首先將圖片resize到固定尺寸(448 * 448),然后通過一套卷積神經網絡,最后接上全連接直接輸出結果,這就他們整個網絡的基本結構。

更具體地做法,是將輸入圖片划分成一個S*S的網格,每個網格負責檢測網格里面的物體是啥,並輸出Bbox Info和置信度。這里的置信度指的是該網格內含有什么物體和預測這個物體的准確定。

更具體的是如下定義:

從這個定義得知,當框中沒有物體的時候,整個置信度都會變為 0 。

這個想法其實就是一個簡單的分而治之想法,將圖片卷積后提取的特征圖分為S*S塊,然后利用優秀的分類模型對每一塊進行分類,將每個網格處理完使用NMS(非極大值抑制)的算法去除重疊的框,最后得到我們的結果。

YOLO模型:

圖片描述:

(1) 給個一個輸入圖像,首先將圖像划分成7*7的網格。

(2) 對於每個網格,我們都預測2個邊框(包括每個邊框是目標的置信度以及每個邊框區域在多個類別上的概率)。

(3)根據上一步可以預測出7*7*2個目標窗口,然后根據閾值去除可能性比較低的目標窗口,最后非極大值抑制去除冗余窗口即可。

可以看到整個過程非常簡單,不需要中間的region proposal在找目標,直接回歸便完成了位置和類別的判定。

SSD

論文地址:SSD: Single Shot MultiBox Detector

YOLO 這樣做的確非常快,但是問題就在於這個框有點大,就會變得粗糙——小物體就容易從這個大網中漏出去,因此對小物體的檢測效果不好。

所以 SSD 就在 YOLO 的主意上添加了 Faster R-CNN 的 Anchor 概念,並融合不同卷積層的特征做出預測。

上圖是SSD的一個框架圖,首先SSD獲取目標位置和類別的方法跟YOLO一樣,都是使用回歸,但是YOLO預測某個位置使用的是全圖的特征,SSD預測某個位置使用的是這個位置周圍的特征(感覺更合理一些)。

假如某一層特征圖大小是8*8,那么就使用3*3的滑窗提取每個位置的特征,然后這個特征回歸得到目標的坐標信息和類別信息(圖c)。不同於Faster R-CNN,這個anchor是在多個feature map上,這樣可以利用多層的特征並且自然的達到多尺度(不同層的feature map 3*3滑窗感受野不同)。

特點:

1.基於多尺度特征圖像的檢測:在多個尺度的卷積特征圖上進行預測,以檢測不同大小的目標,一定程度上提升了小目標物體的檢測精度。

2.借鑒了Faster R-CNN中的Anchor思想,在不同尺度的特征圖上采樣候選區域,一定程度上提升了檢測的召回率以及小目標的檢測效果。

還有一個重大的進步是結合了不同尺寸大小 Feature Maps 所提取的特征,然后進行預測。

這個嘗試就大大地提高了識別的精度,且高分辨率(尺寸大)的 Feature Map 中含有更多小物體的信息,也是因為這個原因 SSD 能夠較好的識別小物體。

總結:和 YOLO 最大的區別是,SSD 沒有接 FC 減少了大量的參數量、提高了速度。

小結:

SSD和YOLO采用了回歸方法進行目標檢測使得目標檢測速度大大加快,SSD引入Faster R-CNN的anchor機制使得目標定位和分類精度都較YOLO有了大幅度提高。基於回歸方法的目標檢測基本達到了實時的要求,是目標檢測的另一個主要思路。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM