基於深度學習的計算機視覺應用之目標檢測
目標檢測作為圖像處理和計算機視覺領域中的經典課題,在交通監控、圖像檢索、人機交互等方面有著廣泛的應用。它旨在一個靜態圖像(或動態視頻)中檢測出人們感興趣的目標對象。傳統的目標檢測演算法中特徵提取和分類決策分開進行,對特徵選取的要求就更加嚴格,在面對複雜場景的時候很難得到理想效果。自Hinton[1]教授提出深度學習[2]理論,越來越多的研究人員發現在目標檢測領域應用深度學習,可以有效提高檢測效果和性能,於是深度學習在實時視頻的目標檢測開始獲得大規模的應用。時至今日,其檢測效率和精度已經有了極大提高。
一、傳統檢測演算法
傳統的目標檢測一般使用滑動窗口的框架,主要包括三個步驟:先利用不同尺寸的滑動窗口框住圖中的某一部分作為候選區域;然後提取候選區域相關的視覺特徵——比如人臉檢測常用的Harr-like特徵,行人檢測和普通目標檢測常用的HOG(Histogram of Oriented Gradient)[3]、SIFT(Scale Invariant Feature Transform)[4]特徵等;最後利用分類器進行識別,比如常用的SVM模型。
經典傳統檢測演算法之DPM:
傳統的目標檢測中,多尺度形變部件模型DPM(Deformable Part Model)[5]是出類拔萃的,連續獲得VOC(Visual Object Class)2007到2009的檢測冠軍,2010年其作者Felzenszwalb Pedro被VOC授予「終身成就獎」。DPM把物體看成了多個組成的部件(比如人臉的鼻子、嘴巴等),用部件間的關係來描述物體,這個特性非常符合自然界很多物體的非剛體特徵。DPM可以看做是HOG+SVM的擴展,很好的繼承了兩者的優點,在人臉檢測、行人檢測等任務上取得了不錯的效果,但是DPM相對複雜,檢測速度也較慢,從而也出現了很多改進的方法。
二、目前檢測演算法
正當大家熱火朝天改進DPM性能的時候,基於深度學習的目標檢測橫空出世,迅速蓋過了DPM的風頭,很多之前研究傳統目標檢測演算法的研究者也開始轉向深度學習。基於深度學習的目標檢測發展起來後,其實效果也一直難以突破。比如C. Szegedy等人[6]提出的基於DNN的檢測演算法在VOC 2007測試集合上的mAP只能達到約30%,P. Sermane等人[7]提出的OverFeat在ILSVRC 2013測試集上的mAP只能達到24.3%。2013年R-CNN[8]誕生了,在VOC 2007測試集檢測的mAP大幅提升至48%,隨著研究的不斷深入,各類先進檢測演算法不斷湧出。
1. YOLO
2015年Joseph Redmon提出了一個新的物體檢測方法YOLO(You Only Look Once)[9], 顧名思義是指只看一次就可以知道『是否存在』以及『在哪兒』,進一步把目標判定和目標識別合二為一,所以識別性能有了很大提升,達到每秒45幀,而在快速版YOLO(Fast YOLO,卷積層更少)中,可以達到每秒155幀。
針對一張圖片,YOLO的處理步驟為:把輸入圖片縮放到448×448大小;運行卷積網路;對模型置信度卡閾值,得到目標位置與類別。對VOC數據集來說,YOLO就是把圖片統一縮放到448×448,然後每張圖平均劃分為7×7=49個小格子,每個格子預測2個矩形框及其置信度,以及20種類別的概率。捨棄了Region proposal階段,加快了速度,但是定位精度比較低,與此同時帶來的問題是,分類的精度也比較低。在各類數據集上的平均表現大概為54.5%mAP。
1. 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)。這種將一直以來分離的候選區域提取階段和卷積神經網路分類過程融合到了一起,使用端到端的網路進行目標檢測,在速度以及精度上都得到了顯著的提高。
在每個圖像用了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)。
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)中的紅框。
SSD的網路分為兩部分,前面的是用於圖像分類的標準網路(去掉了分類相關的層),後面的網路是用於檢測的多尺度特徵映射層,從而達到檢測不同大小的目標。SSD和YOLO的網路結構對比如圖7所示。
SSD在保持YOLO高速的同時效果也提升很多,主要是借鑒了Faster R-CNN中的Anchor機制,同時使用了多尺度。因Default Box的形狀以及網格大小是事先固定的,那麼對特定的圖片小目標檢測效果較差。
寫在最後:計算機視覺領域技術更新很快,本次只對三個熱門目標檢測演算法做了簡單介紹。想了解更多計算機視覺相關最新技術更新請持續關注公眾號:磐創AI。
【注】:文中所用相關文獻(已打包),請關注微信公眾號磐創AI索要:基於深度學習的計算機視覺應用之目標檢測
相關項目實戰推薦: YOLO:https://zhuanlan.zhihu.com/p/29555602
SSD: https://zhuanlan.zhihu.com/p/29586716
Faster R-CNN:https://github.com/endernewton/tf-faster-rcnn
推薦閱讀:
TAG:深度學習DeepLearning | 計算機視覺 | 目標檢測 |