基於深度學習的計算機視覺應用之目標檢測

目標檢測作為圖像處理和計算機視覺領域中的經典課題,在交通監控、圖像檢索、人機交互等方面有著廣泛的應用。它旨在一個靜態圖像(或動態視頻)中檢測出人們感興趣的目標對象。傳統的目標檢測算法中特徵提取和分類決策分開進行,對特徵選取的要求就更加嚴格,在面對複雜場景的時候很難得到理想效果。自Hinton教授提出深度學習理論,越來越多的研究人員發現在目標檢測領域應用深度學習,可以有效提高檢測效果和性能,於是深度學習在實時視頻的目標檢測開始獲得大規模的應用。時至今日,其檢測效率和精度已經有了極大提高。

一: 傳統檢測算法

傳統的目標檢測一般使用滑動窗口的框架,主要包括三個步驟:先利用不同尺寸的滑動窗口框住圖中的某一部分作為候選區域;然後提取候選區域相關的視覺特徵——比如人臉檢測常用的Harr-like特徵,行人檢測和普通目標檢測常用的HOG(Histogram of Oriented Gradient)、SIFT(Scale Invariant Feature Transform)特徵等;最後利用分類器進行識別,比如常用的SVM模型。

二: 經典傳統檢測算法之DPM

傳統的目標檢測中,多尺度形變部件模型DPM(Deformable Part Model)是出類拔萃的,連續獲得VOC(Visual Object Class)2007到2009的檢測冠軍,2010年其作者Felzenszwalb Pedro被VOC授予“終身成就獎”。DPM把物體看成了多個組成的部件(比如人臉的鼻子、嘴巴等),用部件間的關係來描述物體,這個特性非常符合自然界很多物體的非剛體特徵。DPM可以看做是HOG+SVM的擴展,很好的繼承了兩者的優點,在人臉檢測、行人檢測等任務上取得了不錯的效果,但是DPM相對複雜,檢測速度也較慢,從而也出現了很多改進的方法。

基於深度學習的計算機視覺應用之目標檢測

圖1 DPM檢測流程



三: 目前檢測算法

正當大家熱火朝天改進DPM性能的時候,基於深度學習的目標檢測橫空出世,迅速蓋過了DPM的風頭,很多之前研究傳統目標檢測算法的研究者也開始轉向深度學習。基於深度學習的目標檢測發展起來後,其實效果也一直難以突破。比如C. Szegedy等人提出的基於DNN的檢測算法在VOC 2007測試集合上的mAP只能達到約30%,P. Sermane等人提出的OverFeat在ILSVRC 2013測試集上的mAP只能達到24.3%。2013年R-CNN[8]誕生了,在VOC 2007測試集檢測的mAP大幅提升至48%,隨著研究的不斷深入,各類先進檢測算法不斷湧出。

  1. YOLO

2015年Joseph Redmon提出了一個新的物體檢測方法YOLO(You OnlyLook Once), 顧名思義是指只看一次就可以知道‘是否存在’以及‘在哪兒’,進一步把目標判定和目標識別合二為一,所以識別性能有了很大提升,達到每秒45幀,而在快速版YOLO(Fast YOLO,卷積層更少)中,可以達到每秒155幀。

基於深度學習的計算機視覺應用之目標檢測

圖2 YOLO檢測系統


針對一張圖片,YOLO的處理步驟為:把輸入圖片縮放到448×448大小;運行卷積網絡;對模型置信度卡閾值,得到目標位置與類別。對VOC數據集來說,YOLO就是把圖片統一縮放到448×448,然後每張圖平均劃分為7×7=49個小格子,每個格子預測2個矩形框及其置信度,以及20種類別的概率。捨棄了Region proposal階段,加快了速度,但是定位精度比較低,與此同時帶來的問題是,分類的精度也比較低。在各類數據集上的平均表現大概為54.5%mAP。

基於深度學習的計算機視覺應用之目標檢測

圖3 YOLO模型


2. Faster R-CNN

2015年S Ren等人對R-CNN系列又提出了改進型Faster R-CNN[10],運用一種區域建議網絡RPN(Region Proposal Network),它和檢測網絡共享全圖的卷積特徵,使得區域建議幾乎不花時間。RPN是一個全卷積網絡,在每個位置同時預測目標邊界和客體性得分。將RPN 生成的高質量區域建議框,用於Fast R-CNN[11]來檢測,通過一種簡單的交替運行優化方法,RPN和Fast R-CNN 可以在訓練時共享卷積特徵,應用共享卷積,計算建議框的邊際成本是很小的(例如每個圖像10ms)。這種將一直以來分離的候選區域提取階段和卷積神經網絡分類過程融合到了一起,使用端到端的網絡進行目標檢測,在速度以及精度上都得到了顯著的提高。

基於深度學習的計算機視覺應用之目標檢測

圖4 Fast R-CNN框架

在每個圖像用了300 個建議框的情況下,對於較深的VGG-16 模型[12],Faster R-CNN檢測系統在GPU 上的幀率達到5fps(包含所有步驟),對於較為簡單的模型,幀率可以達到17 fps,在PASCAL VOC 2007 和PASCAL VOC2012 上實現了最高的目標檢測準確率(PASCAL VOC2007:73.2%mAP ,PASCAL VOC2012:70.4%mAP)。

基於深度學習的計算機視覺應用之目標檢測

圖5 Region Proposal Network(RPN)

3. SSD

之後,針對於Faster R-CNN與YOLO網絡中出現的不足,SSD[13]網絡對YOLO 網絡進行了相應的改進。SSD的框架如圖6所示,圖6(a)表示帶有兩個Ground Truth邊框的輸入圖片,圖6(b)和(c)分別表示8×8網格和4×4網格,顯然前者適合檢測小的目標,比如圖片中的貓,後者適合檢測大的目標,比如圖片中的狗。在每個格子上有一系列固定大小的Box(有點類似前面提到的Anchor Box),這些在SSD稱為Default Box,用來框定目標物體的位置,在訓練的時候Ground Truth會賦予給某個固定的Box,比如圖6(b)中的藍框和圖6(c)中的紅框。

基於深度學習的計算機視覺應用之目標檢測

圖6 SSD框架


SSD的網絡分為兩部分,前面的是用於圖像分類的標準網絡(去掉了分類相關的層),後面的網絡是用於檢測的多尺度特徵映射層,從而達到檢測不同大小的目標。SSD和YOLO的網絡結構對比如圖7所示。

基於深度學習的計算機視覺應用之目標檢測

圖7 SSD和YOLO的網絡結構對比

SSD在保持YOLO高速的同時效果也提升很多,主要是借鑑了Faster R-CNN中的Anchor機制,同時使用了多尺度。因Default Box的形狀以及網格大小是事先固定的,那麼對特定的圖片小目標檢測效果較差。

相關項目實戰推薦:

YOLO:https://zhuanlan.zhihu.com/p/29555602

SSD: https://zhuanlan.zhihu.com/p/29586716

Faster R-CNN:https://github.com/endernewton/tf-faster-rcnn


對深度學習感興趣,熱愛Tensorflow的小夥伴,歡迎關注我們的網站http://www.panchuang.net 我們的公眾號:磐創AI。


分享到:


相關文章: