幾種深度學(xué)習(xí)目標(biāo)檢測算法的介紹及優(yōu)缺點

常見的目標(biāo)檢測算法

(1)R-CNN

將CNN方法引入目標(biāo)檢測領(lǐng)域,大大提高了目標(biāo)檢測效果。R-CNN算法分為4個步驟:一張圖像生成1K~2K個候選區(qū)域;對每個候選區(qū)域,使用深度網(wǎng)絡(luò)提取特征;特征送入每一類的SVM分類器,判別是否屬于該類;使用回歸器精細修正候選框位置。

image

圖1 R-CNN方法步驟

(2)Fast-RCNN

Fast-RCNN與RCNN同樣使用最大規(guī)模的網(wǎng)絡(luò),F(xiàn)ast RCNN和RCNN相比,訓(xùn)練時間從84小時減少為9.5小時,測試時間從47秒減少為0.32秒。

基本的網(wǎng)絡(luò)結(jié)構(gòu)如下圖。其中roi_pool層將每個候選區(qū)域均勻分成M×N塊,對每塊進行max pooling。將特征圖上大小不一的候選區(qū)域轉(zhuǎn)變?yōu)榇笮〗y(tǒng)一的數(shù)據(jù),送入下一層。

image

圖2 Fast-RCNN網(wǎng)絡(luò)結(jié)構(gòu)圖

(3)Faster-RCNN

Faster-RCNN可將簡單網(wǎng)絡(luò)目標(biāo)檢測速度達到17fps,在PASCAL VOC訓(xùn)練集上準(zhǔn)確率為59.9%;復(fù)雜網(wǎng)絡(luò)達到5fps,準(zhǔn)確率78.8%。Faster-RCNN相比于R-CNN、Fast-RCNN將目標(biāo)檢測的四個基本步驟(候選區(qū)域生成,特征提取,分類,位置精修)終于被統(tǒng)一到一個深度網(wǎng)絡(luò)框架之內(nèi)。

Faster-RCNN實現(xiàn)的基本思路是在提取好的特征圖上,對所有可能的候選框進行判別。由于后續(xù)還有位置精修步驟,所以候選框?qū)嶋H比較稀疏。 原始特征提取包含若干層conv+relu,直接套用ImageNet上常見的分類網(wǎng)絡(luò)之后再進行候選區(qū)域,窗口分類和位置精修。

(4)YOLO

針對R-CNN與Fast-RCNN速度慢的問題,YOLO直接在輸出層回歸bounding box的位置和bounding box所屬的類別即將整張圖作為網(wǎng)絡(luò)的輸入,把 Object Detection 的問題轉(zhuǎn)化成一個 Regression問題。

大致流程如下:

image

圖 3 YOLO網(wǎng)絡(luò)算法流程

image

圖4卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)

算法步驟:1.將一幅圖像分成S*S個網(wǎng)格(grid cell),如果某個object的中心 落在這個網(wǎng)格中,則這個網(wǎng)格就負責(zé)預(yù)測這個object。

2.每個網(wǎng)格要預(yù)測B個bounding box,每個bounding box除了要回歸自身的位置之外,還要附帶預(yù)測一個confidence值。這個confidence代表了所預(yù)測的box中含有object的置信度和這個box預(yù)測的置信度這兩重信息。

3.每個bounding box要預(yù)測(x, y, w, h)和confidence共5個值,每個網(wǎng)格還要預(yù)測一個類別信息,記為C類。則SS個網(wǎng)格,每個網(wǎng)格要預(yù)測B個bounding box還要預(yù)測C個categories。輸出就是SS*(5*****B+C)維度的張量。

(5)SSD

SSD算法沒有生成 proposal 的過程,檢測速度高。針對不同大小的目標(biāo)檢測,傳統(tǒng)的做法是先將圖像轉(zhuǎn)換成不同大?。▓D像金字塔),然后分別檢測,最后將結(jié)果綜合起來(NMS)。而SSD算法則利用不同卷積層的 feature map 進行綜合也能達到同樣的效果。算法的主網(wǎng)絡(luò)結(jié)構(gòu)是VGG16,將最后兩個全連接層改成卷積層,并隨后增加了4個卷積層來構(gòu)造網(wǎng)絡(luò)結(jié)構(gòu)。對其中5種不同的卷積層的輸出(feature map)分別用兩個不同的3×3的卷積核進行卷積,一個輸出分類用的confidence,每個default box生成21個類別confidence;一個輸出回歸用的 localization,每個 default box生成4個坐標(biāo)值(x, y, w, h)。

此外,這5個feature map還經(jīng)過PriorBox層生成prior box(生成的是坐標(biāo))。最后將前面三個計算結(jié)果分別合并然后傳給loss層。SSD算法的網(wǎng)絡(luò)模型如下圖。

image

圖5 SSD模型結(jié)構(gòu)圖

各算法對比與總結(jié)

(1)R-CNN

R-CNN是針對區(qū)域提取特征的目標(biāo)檢測模型。通過selective search的方式從圖片中提取可能的目標(biāo)的候選窗口,將窗口warp到同一個尺寸,通過卷積網(wǎng)絡(luò)從warp之后的候選窗口提取特征,將特征送給分類器進行分類,最后再加上bounding box regression等操作得到更準(zhǔn)確的目標(biāo)位置。總結(jié)起來就是先訓(xùn)練SVM分類器,后進行bounding box的regression操作。

特點:

1:獲取區(qū)域目標(biāo)比較費時。

2:由于各區(qū)域不共享特征,重復(fù)計算,訓(xùn)練過程比較費時。

3:分類器采用SVM,而SVM的存儲是需要將數(shù)據(jù)存儲在磁盤空間中,需要額外考慮這點。

4:訓(xùn)練比較麻煩,首先需要先訓(xùn)練分類模型網(wǎng)絡(luò),進而對bounding box進行回歸計算。

(2)Fast-RCNN

通過引入roi_pooling解決針對區(qū)域提取特征造成的重復(fù)計算的情況,它允許輸入具有任何尺度,經(jīng)過ROI將box分為44、88等同樣數(shù)量的網(wǎng)格,然后對每個網(wǎng)格通過max,avg等操作計算相應(yīng)的特征,就可以將不同尺寸的box轉(zhuǎn)化為相同維度的特征,在最后的損失函數(shù)層使用了多任務(wù)損失函數(shù)(multi-task loss),同時進行分類和位置框的回歸。

特點:

1:實現(xiàn)端到端的訓(xùn)練,除了proposal提取階段,同時進行分類與回歸過程。

2:所有的特征都暫存在顯存中,就不需要額外的磁盤。在最后將分類器換成兩個softmax分類器,一個針對區(qū)域的分類(包含背景),一個針對bounding box的微調(diào)。

3:提出了一個ROI_pooling層,ROI不僅完成了特征圖的映射關(guān)系,并且將特征圖固定到單個尺寸。

4:整張圖上的proposal共享特征提取層,訓(xùn)練速度顯著提升。

5:由于SS方法獲取區(qū)域目標(biāo),只能在CPU上進行,比較費時。

(3)Faster-RCNN

為了解決獲取區(qū)域目標(biāo)速度慢的問題,提出了RPN網(wǎng)絡(luò),RPN的核心思想是使用卷積神經(jīng)網(wǎng)絡(luò)直接產(chǎn)生region proposal,使用的方法本質(zhì)上就是滑動窗口。RPN的設(shè)計比較巧妙,RPN只需在最后的卷積層上滑動一遍,并在每個位置引入多尺度多長寬比的anchor窗口來捕捉未知尺寸和ratio rate的目標(biāo)。

特點:

1:提出一個全卷積網(wǎng)絡(luò)作為region proposal網(wǎng)絡(luò)(RPN),解決了獲取proposal耗時的問題。

2:由于faster-RCNN訓(xùn)練過程實際上分成了兩個階段,proposal生成階段與detection階段,所以速度上還是不能夠滿足實時的要求。

(4)YOLO

使用回歸的思想,給定輸入圖像,直接在圖像的多個位置上回歸出這個位置的目標(biāo)邊框以及目標(biāo)類別,將檢測過程整個成一個single deep neural network。給定一個輸入圖像,將其劃分為77的網(wǎng)格,對于每一個網(wǎng)格,預(yù)測2個box,包括每個邊框是目標(biāo)的置信度以及每個邊框區(qū)域在多個類別上的概率,接著預(yù)測出77*2個目標(biāo)窗口,隨后根據(jù)閾值去除可能性比較低的目標(biāo)窗口,最后NMS去除冗余窗口即可,可以看到整個過程非常簡單,不需要中間的proposal生成網(wǎng)絡(luò),直接回歸便完成了位置和類別的判定。

特點:

1:YOLO將目標(biāo)檢測任務(wù)轉(zhuǎn)換成一個回歸問題,大大加快了檢測的速度,使得YOLO可以每秒處理45張圖像。而且由于每個網(wǎng)絡(luò)預(yù)測目標(biāo)窗口時使用的是全圖信息,使得false positive比例大幅降低。

2:YOLO采用全圖信息進行預(yù)測。與滑動窗口、region proposals不同,YOLO在訓(xùn)練、預(yù)測過程中利用全圖信息。Fast R-CNN方法錯誤地將背景塊檢測為目標(biāo),原因在于Fast R-CNN方法在檢測時無法看到全局圖像。相比于Fast R-CNN,YOLO可以將背景預(yù)測錯誤率降低一半。

3:YOLO可以學(xué)習(xí)到目標(biāo)的概括信息。YOLO比其他目標(biāo)檢測算法的準(zhǔn)確率高很多。

4:針對小目標(biāo)的檢測、相互靠近物體的檢測效果會不太好。

(5)SSD

SSD則是Faster-RCNN與YOLO的結(jié)合,結(jié)合了yolo中的回歸思想,同時又結(jié)合了Faster-RCNN中的anchor box機制,SSD將輸出一系列離散化(discretization)的bounding boxes,這些bounding boxes是在不同層次上的feature maps上生成的,計算出每一個default box中的物體,其屬于每個類別的可能性,即score,得分。同時,要對這些bounding boxes的shape進行微調(diào),以使得其符合物體的外接矩形。還有就是,為了處理相同物體的不同尺寸的情況,SSD結(jié)合了不同分辨率的feature maps的predictions。SSD方法完全取消了proposals generation、pixel resampling或者feature resampling這些階段。這樣使得SSD更容易去優(yōu)化訓(xùn)練,也更容易地將檢測模型融合進系統(tǒng)之中。

特點:

SSD與YOLO一樣,對于小目標(biāo)的檢測率很低,這是由于SSD對輸入圖像進行了預(yù)處理,經(jīng)過較深的卷積層后,對于本身比較小的目標(biāo),小目標(biāo)可能已經(jīng)丟失了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容