栗佩康 袁芳芳 李航濤
摘 要:目標檢測是計算機視覺領域中的重要問題,是人臉識別、車輛檢測、路網提取等領域的理論基礎。隨著深度學習的快速發展,與基于滑窗以手工提取特征做分類的傳統目標檢測算法相比,基于深度學習的目標檢測算法無論在檢測精度上還是在時間復雜度上都大大超過了傳統算法,本文將簡單介紹目標檢測算法的發展歷程。
關鍵詞:目標檢測;機器學習;深度神經網絡
目標檢測的目的可分為檢測圖像中感興趣目標的位置和對感興趣目標進行分類。目標檢測比低階的分類任務復雜,同時也是高階圖像分割任的重要基礎;目標檢測也是人臉識別、車輛檢測、路網檢測等應用領域的理論基礎。
傳統的目標檢測算法是基于滑窗遍歷進行區域選擇,然后使用HOG、SIFT等特征對滑窗內的圖像塊進行特征提取,最后使用SVM、AdaBoost等分類器對已提取特征進行分類。手工構建特征較為復雜,檢測精度提升有限,基于滑窗的算法計算復雜度較高,此類方法的發展停滯,本文不再展開。近年來,基于深度學習的目標檢測算法成為主流,分為兩階段和單階段兩類:兩階段算法先在圖像中選取候選區域,然后對候選區域進行目標分類與位置精修;單階段算法是基于全局做回歸分類,直接產生目標物體的位置及類別。單階段算法更具實時性,但檢測精度有損失,下面介紹這兩類目標檢測算法。
1 基于候選區域的兩階段目標檢測方法
率先將深度學習引入目標檢測的是Girshick[1]于2014年提出的區域卷積神經網絡目標檢測模型(R-CNN)。首先使用區域選擇性搜索算法在圖像上提取約2000個候選區域,然后使用卷積神經網絡對各候選區域進行特征提取,接著使用SVM對候選區域進行分類并利用NMS回歸目標位置。與傳統算法相比,R-CNN的檢測精度有很大提升,但缺點是:由于全連接層的限制,輸入CNN的圖像為固定尺寸,且每個圖像塊輸入CNN單獨處理,無特征提取共享,重復計算;選擇性搜索算法仍有冗余,耗費時間等。
基于R-CNN只能接受固定尺寸圖像輸入和無卷積特征共享,He[2]于2014年參考金字塔匹配理論在CNN中加入SPP-Net結構。該結構復用第五卷積層的特征響應圖,將任意尺寸的候選區域轉為固定長度的特征向量,最后一個卷積層后接入的為SPP層。該方法只對原圖做一次卷積,共享卷積層的計算過程,極大提高了速度。SPP-Net的優點:不同尺度候選區域輸入能夠提高檢測精度,共享不同候選區域SPP層前序的計算,提升檢測效率。
Girshick[3]于2015年在R-CNN的基礎上提出了Fast R-CNN,使用ROI(感興趣區域)池化層代替SPP。原圖經過卷積后產生特征響應圖,然后從每個ROI池化層中提取定長特征向量,每個特征向量輸入到全連接層,分支兩個輸出層,一個是softmax分類器用來預測類別,另一個用作物體位置定位框回歸預測。除候選區域提取外該框架是一種端到端的基于多任務損失函數的一階段訓練過程,節省了存儲空間,減少了訓練及預測時間且提升了檢測精度。但候選區域提取仍沿用老算法,耗費時間,成為瓶頸。
基于Fast R-CNN中前序候選區域提取時仍使用區域選擇性搜索算法成這點,Ren[4]提出Faster R-CNN模型,使用區域選擇網絡(RPN)來產生候選區域框,與檢測網絡共享卷積特征響應,大大減少了計算量,提高檢測速度,這也使得Faster R-CNN成為第一個基于深度學習的端到端目標檢測算法,在GPU上運行達到5fps的檢測速率,具有一定的實時性。但該模型也存在一些缺點,如RPN網絡的訓練較為耗時;RPN不擅于處理一些極端尺度及形狀的目標物體檢測。
此外還有R-FCN、FPN、Mask R-CNN等由以上算法衍生的更為優秀的兩階段目標檢測算法,本文不再展開。
2 基于全局回歸分類的單階段目標檢測方法
兩階段的目標檢測算法,雖然檢測精度指標較好,但即使實現端到端的Faster R-CNN,也無法滿足實時性要求,因此單階段目標檢測算法旨在提升檢測實時性。2016年Redmon[5]提出了YOLO,圖像經過一個神經網絡即可完成目標位置及其所屬類別的預測,檢測速度達到45fps,但檢測精度不高。后續Redmon[6]提出了YOLOv2,與YOLO相比卷積層后加入了批歸一化、去掉全連接層進行多尺度訓練、加入先驗框等,使得能夠檢測種類更多、精度更高且時間更快。2018年,Redmon[7]提出了YOLOv3,該框架使用新的網絡結構Darknet-53,利用多尺度進行目標檢測,使用邏輯回歸代替softmax分類器,使檢測精度較之前版本提高,且對小目標的檢測效果比前述版本好。最近,Bochkovskiy[8]提出了YOLOv4,加入SPP block來改善感受域大小,使用PANet代替FPN進行多通道特征融合,選用CSPDarknet53作為主干網絡,使得檢測精度與速度進一步提升。
此外還有SSD、FPN、RefineDet、RetinaNet、CornerNet等優秀的單階段目標檢測算法,本文不再展開。
3 結語
本文作為一篇目標檢測方法的簡要綜述,首先介紹了該研究的背景與意義,后分為兩階段和單階段的基于深度學習的目標檢測方法進行介紹。現階段后者的實時性明顯優于前者,檢測精度也在不斷提升,但前者在檢測精度上仍有優勢,檢測效率也在不斷優化,不同應用場景可分別嘗試這兩類算法進行對比和應用。
參考文獻:
[1]R.Girshick et al.,“Rich feature hierarchies for accurate object detection and semantic segmentation,”in Proc.CVPR,2014,pp.580-587.
[2]K.He et al.,“Spatial pyramid pooling in deep convolutional networks for visual recognition,”IEEE TPAMI.,vol.37,no.9,pp.1904-1916,Sep.2015.
[3]R.Girshick,“Fast R-CNN,”in Proc.ICCV,2015,pp.1440-1448.
[4]S.Ren et al.,“Faster R-CNN:Towards real-time object detection with region proposal networks,”in Proc.NIPS,2015,pp.91-99.
[5]J.Redmon et al.,“You only look once:Unifified,real-time object detection,”in Proc.CVPR,2016,pp.779-788.
[6]J.Redmon et al.,“YOLO9000:Better,faster,stronger,”in CVPR,2017,pp.7263-7271.
[7]J.Redmon et al.,“YOLOv3:An Incremental Improvement,”2018.
[8]A.Bochkovskiy et al.,“YOLOv4:Optimal speed and accuracy of Object Detection,”2020.