何國忠
(云南大學軟件學院 云南昆明 650504)
計算機視覺的一個重要任務是目標檢測。目標檢測主要是對輸入圖像中的物體類別和位置進行判斷,實質(zhì)上是圖像分類和目標定位的結(jié)合,是復雜或高級視覺任務的基礎,如圖像分割、目標跟蹤、事件檢測和活動識別[1]。廣泛應用于人臉識別、無人駕駛等領域。目標檢測算法主要分為傳統(tǒng)檢測算法和基于深度學習的檢測算法。現(xiàn)如今,機器學習技術的發(fā)展?jié)u漸成為主流,人們廣泛關注于基于深度學習的目標檢測算法,出現(xiàn)了很多結(jié)構(gòu)簡單、運行速度快、檢測精度高的網(wǎng)絡模型,使得這些算法能得到大規(guī)模應用[2]。
在深度學習算法發(fā)展起來之前,傳統(tǒng)目標檢測技術處理流程通常劃分為三個階段:首先是進行圖像中目標物體的候選區(qū)域選擇,接著使用Haar[3]、HOG[4]等特征提取算法提取得到圖像目標特征,最后是運用支持向量機等常用分類器對候選區(qū)域提取到的特征進行目標類別的劃分,傳統(tǒng)目標檢測技術處理流程如圖1所示。

圖1 傳統(tǒng)目標檢測算法處理流程
近年來,隨著機器學習技術的大力發(fā)展,基于神經(jīng)網(wǎng)絡的深度學習檢測方法得到了廣泛應用,運用深度學習技術的目標檢測算法通常根據(jù)對檢測速度和精度的需求不同被劃分為兩類:一類是以R-CNN為代表的雙階段(two stage)目標檢測算法;另一類是以YOLO、SSD為代表的單階段(one stage)目標檢測算法。
Girshick團隊提出第一個基于深度學習的目標檢測算法R-CNN,通過驗證,在VOC07數(shù)據(jù)集上,mAP達到了66%的水平。該算法步驟為:1.使用選擇性搜索(SS)算法,于一張檢測圖像中得到數(shù)個候選框(一般為兩千個);2.每個候選區(qū)域框中把特征圖縮放至同一尺度,使用卷積神經(jīng)網(wǎng)絡(CNN)提取特征;3.將提取出的特征信息送入SVM分類器,判斷是否屬某個特定類;4.使用回歸器來繼續(xù)改變圖像待選區(qū)域框位置。
YOLO的網(wǎng)絡結(jié)構(gòu)延續(xù)了GoogleNet的核心思想,利用卷積層來提取圖片特征,利用全連接層來得到最后的檢測結(jié)果[5]。YOLO將輸入圖像分成SxS個網(wǎng)格,每個網(wǎng)格負責檢測中心落在該網(wǎng)格的物體。在YOLO算法中雖然每個檢測網(wǎng)格只預測1個邊框,但其中包含了一組類別概率預測值。最后只選擇IOU最高的檢測邊框作為輸出結(jié)果。如果一個網(wǎng)格中包含多個物體,YOLO只能檢測出其中一個物體。
SSD借鑒了Faster R-CNN中的anchor機制,在特征圖上生成一系列不同大小和長寬比的默認框,同時采用困難樣本挖掘方法對負樣本進行采樣使得訓練過程中正負樣本的比例維持在1∶3。SSD對每一個默認框輸出相應的位置偏移以及類別置信度。SSD的檢測速度比R-CNN快,檢測精度相比較YOLO來說有提升,但是對小物體的檢測效果仍然不夠理想。
隨著計算機技術的發(fā)展,運用深度學習技術來實現(xiàn)目標檢測的算法開發(fā)獲得了突飛猛進的進步[6-7]。從R-CNN、YOLO、SSD發(fā)展到現(xiàn)如今,基于深度學習技術的圖像目標檢測算法流程變得愈發(fā)簡潔快速,同時檢測準確度也在逐漸提高。