孟祥澤
(吉林建筑大學電氣與計算機學院,吉林長春 130118)
圖像目標檢測是計算機視覺當中關鍵的研究領域,其中目標分類與目標定位是評判圖像目標檢測的重要標準。目前卷積神經網絡(CNN)發展突飛猛進,成為當前圖像分類的主流研究方法,C N N 通過多層神經網絡提取出圖像中大量特征信息,進行目標分類,具有極強的魯棒性與泛化能力,對于多尺度多目標的檢測具有重大意義。圖像目標檢測的研究熱點也就在于, 如何使用更高效的C N N 對圖像目標進行分類,如何在一張圖片上快速準確的定位一個目標。
卷積神經網絡(CNN)建立在認知機(Neocognitron)[1]基礎上,把卷積運算和采樣操作引入到人工神經網絡,使提取出的特征具備一定的空間不變性。C N N 的核心設計思想包括以下幾點[2,3]。
(1)局部連接。CNN具有很強的視覺局部性,即兩像素點距離越近關聯性越強,距離越遠關聯性就會越弱,CNN在對圖像做處理時,只對局部鄰域做稠密連接。(2)權重共享。C N N 采用卷積核做卷積處理,在局部連接中,每個神經元對應的卷積核參數相同。(3)多層卷積與池化。CNN通常由卷積層后面追加一個池化層,這種組合會重復多次,用以提取出圖像的特征,通過邊界擴充保證輸入與輸出的尺寸不發生變化進而還可以強化邊緣特征。
為了提高網絡精度前人學者進行大量研究以優化CNN,Lin等人[4]提出網中網(NIN)模型采用多層感知層(MLP)[5]代替傳統CNN的卷積過程以提取圖像當中高度抽象的特征。Zeiler等人[6]提出的反卷積神經網絡模型,這是一種可視化的過程用來驗證各層提取到的特征圖,并在此基礎上提高網絡精度。Jaderberg等人[7]提出了空間變換網絡(STN),能夠自適應地將數據進行空間變換和對齊保持不變性,如今也有將卷積核參數放在神經網絡當中一同訓練得到一個提取特征能力更強大的卷積核。
Alexnet模型[8]在每一層卷積之后,都做了局部響應歸一化(LRN),池化層采用最大池化法,使用ReLu激活函數來代替tanh函數,采用雙GPU訓練,引入Dropout隨機失活[9]在訓練階段隨機刪除掉一些節點,減少神經元復雜的共同適應性,減緩了過擬合問題。
VGG模型[10]于2014年提出,其核心思想是利用較小的卷積核不斷堆疊增加網絡深度,以此提升整個網絡架構性能。利用較小的卷積核代替更大的卷積核可以保證感受野范圍不變的同時又減少了參數量,提高了訓練速度[11]。
2014年出現了Inception系列,進一步使用更小的卷積核,更多的神經網絡層,Inception-v1也就是GoogleNet通過引入Inception模塊提取出不同尺寸的圖像特征,并且為了防止深層而出現的梯度消失問題引入了SoftMax輔助分類網絡[12]。
Google在GoogleNet的基礎之上提出了BN-Inception[13]在每個卷積層后加入BN層(Batch Normalization),避免梯度消失問題。Inception-v3進一步將一個n*n的卷積核劃分成了1*n和n*1的卷積核這種非對稱的拆分方式,減少參數的數量,增加特征的多樣性,進一步提高了分類精度。
以上的模型大多從增加神經網絡的層數來提高精度,然而網絡的層數并非越多越好,深度神經網絡隨著網絡層數的增加會導致神經網絡的退化,使誤差非常大。為了解決網絡退化問題,2015年何凱明等人提出了深度殘差網絡(ResNet)[14],解決了網絡退化的問題,使得增加神經網絡的層數已不是問題,現如今的C N N 也一直在更新但都是基于ResNet,ResNet的提出極大的提高了系統的準確率,是圖像分類領域的重大突破。
在使用C N N 解決給定圖片只有單個物體時的分類問題可以發揮很好的效果,但是一張圖片往往有很復雜的背景包含數十種物體,CNN難以有所成效。所以需要目標檢測算法將圖像中的物體檢測出來在交給C N N 進行分類。現今而言, 目標檢測算法大致可分為三類, 一階段(one-stage)檢測算法,二階段(two-stage)檢測算法,anchor-free檢測算法。two-stage的檢測過程分為兩個步驟。首先由算法生成若干個候選框,再通過C N N 對候選框當中的物體進行分類。one-stage則是對目標的邊界框和類別概率進行回歸,相對來說精度有所損失,但速度較twostage模式的算法更快。

圖1 R-CNN 流程圖Fig.1 R-CNN flow chart
首先介紹目標檢測算法的評價指標:(1)IoU(交并比)指由目標檢測算法產生的候選框與真正的標記框之間的重疊程度,也就是它們之間的交集和并集的比值,最理想的情況下IoU=1指完全重疊,通常而言IoU0.5認為定位比較準確。(2)mAP(mean Average Precession,平均精度均值)用來評價由目標檢測算法對一張圖片做出候選框的正確率。
2014年Girshick等人[15]利用CNN提取圖像特征替代傳統的圖像處理技術,并采用聚類搜索的Selective Search算法[16]代替滑動窗口提取候選區域,R-CNN處理流程比較復雜大概分成以下幾步。(1)候選區域的提取,通過Selective Search從輸入圖像上提取2000個左右的候選區域。(2)特征提取,將所有區域裁剪或縮放到固定的227×227維度,利用C N N 提取特征,并輸出到緊連的兩個全連接層。(3)分類,使用SVM(Support Vector Machine,支持向量機)對特征進行分類,對于每一個類別都有一個SVM。(4)去掉冗余框,一個物體可能被多個不同的框選中,采用NMS(Non-Maximum Supression,非極大值抑制)[17]去掉冗余框。(5)邊界框的回歸,使用線性回歸修正邊界框的位置和大小,每一個邊界框都要單獨設置一個回歸器,RC N N 算法流程如圖1。
R-C N N 在圖像目標檢測領域取得了重大突破,但其仍存在缺點:輸入圖像經過剪裁和變形后會導致信息丟失和位置信息扭曲,從而影響了識別精度;由于R-N N 有大量的重復計算,需要對每張圖片中的上千個變形后的區域反復調用C NN,計算非常耗時,速度較慢;S V M 更適用于小樣本,在這個場景中效率準確率并不理想。

圖2 RPN 結構Fig.2 RPN structure
基于R-CNN的問題Girshick等人又提出了Fast RCNN[18],相對于R-CNN主要進行了三方面改進。直接對原始圖像做卷積操作,而不再是對每個候選區域都做一次卷積,減少了大量的重復計算;同時引入了ROI Pooling(Region of Interest Pooling,感興趣區域池化),根據映射關系可以將不同尺寸的候選區域對應到固定尺寸的特征圖,然后放入到全連接層中做處理;使用了SoftMax層代替了SVM進行分類。但是Fast R-CNN沿用此前的Selective Search的方法挑選候選區域,仍舊耗費時間,對于實時性要求很高的場景Fast R-CNN無法滿足。
為了解決Fast R-CNN無法滿足實時性要求的缺陷,也就在于如何更高效的生成候選區域,在2016年Ren等人[19]提出了Faster R-CNN,在原有的Fast R-CNN基礎上結合了區域候選網絡(Region Proposal Network,RPN)。R P N 通過共享卷積層特征。
RPN通過滑動窗口輸出一個256維的向量,然后兵分兩路做處理,一路走cls層,該層由一個1*1的卷積和一個SoftMax構成,用SoftMax來判斷候選框是前景還是背景,另一路走reg層做邊界框回歸來調整邊界框大小和位置,如此便可快速確定候選區域。在有了RPN之后,Faster RC N N 首先輸入圖片經過C N N 得到特征圖,通過R P N 快速得到候選區域,在通過R O I 以及全連接輸出最終分類結果。利用滑動窗口方法,采用錨框機制(anchor box)和邊界框回歸方法快速獲得多尺度的候選區域RP N的結構如圖2所示。
two-stage目標檢測算法不斷向前發展還出現了FPN[20],深層特征和淺層特征融合提升了檢測小目標物體精度。Mask R-CNN[21]在Faster R-CNN基礎上使用ROI Align替換ROI Pooling增加了目標掩膜輸出支路進行像素級的預測,其在實例分割,關鍵點檢測有很大應用。Cascade R-CNN[22]使用多個不同的IOU閾值,訓練多個級聯的檢測器,其mAp達到了50.9%。TridentNet[23]利用空洞卷積構建的一個三分支網絡,相比之前的算法如FPN,更好地解決了多尺度檢測問題。
為了使檢測速度更快, 學者們提出了一階段檢測器,舍棄了二階段檢測器中的提取候選區域費時的步驟。其核心思想是將目標檢測問題轉換為回歸問題求解,利用權重參數將分類和目標框的預測相關聯,進行回歸分析。
一階段檢測算法的先河之作就是YOLO(You Only Look Once)[24],主要思想就是把目標檢測問題轉換為直接邊界框選取和類別概率的問題,省去了候選框的選取,YOLO的運行速度可以達到45f/s,真正實現了端到端的目標檢測算法,可以滿足實時性的要求。
2017年Redmon等人[25]提出了YOLOv2,大致做了以下幾點改進:(1)對于每一個卷積層都使用了BN操作,舍棄Dropout操作,使模型收斂性顯著提高。(2)采用錨框來預測邊界框。(3)使用Darknet-19(19個卷積層和5個最大池化層構成)作為YOLOv2主干網絡并用用1*1卷積替換YOLO中的全連接層。
2018年Redmon等人[26]又提出了YOLOv3,大致做了以下幾點改進:(1)參考FPN采用了3個不同尺度的特征圖進行目標檢測。(2)使用Darknet-53(借鑒ResNet設計,精度與ResNet-101相當)作為YOLOv2主干網絡。(3)使用多標簽分類器代替SoftMax進行分類。(4)改進YOLO的損失函數,采用了二元交叉熵作為損失函數進行訓練,實現了對同一個邊界框進行多個類別的預測。
2020年Bochkovskiy等人[27]提出了YOLOv4使用CSPDarknet53作為主干網絡,通過引入Mosaic數據增強方法與使用GA算法選擇最優超參數,并且使用PANet網絡代替FPN,提高小目標檢測物體的檢測效果。YOLOv4其在COCO數據集上的檢測精度達到了43.5%。
無論是one-stage還是two-stage都采用錨框機制,生成的錨框較多而目標物體卻很少。就會造成正負錨框失衡,增加訓練時間。錨框的使用會引入了很多超參數,當與多尺度目標檢測結合使用時會變得更加復雜。自CornerNet開始,目標檢測已邁入anchor-free時代。
2019年提出CenterNet[28],該算法首先通過全卷積神經網絡得到熱點圖找到目標中心點,再基于目標中心點回歸得到目標尺寸、3D坐標方向、姿態信息等。該算法通過三個網絡(Rsenet-18、DLA-34、Hourglass-104)來輸出預測值,整個過程舍棄了錨框機制,NMS操作,大大減少了網絡的計算量和訓練時間。同年提出一種基于全卷積神經網絡的逐像素目標檢測算法FCOS[29],與基于錨框的算法不同的是其直接對特征圖的每個位置與原圖邊框進行回歸。為了提高檢測精度,引入center-ness(中心度) 用于降低檢測效果不理想的目標框權重, 通過N M S 確定最終檢測結果。在檢測時由于目標真實框重疊,可能會出現的語義模糊情況,FCOS采用多級預測方法解決語義模糊問題。同樣不引入錨框機制,節省了大量時間。
在2019年9月,北京大學和紐約州立大學石溪分校的研究者提出CBNet(Composite Backbone Network)[30],其思想就是通過多個相同且彼此相鄰的主干網絡(backbone)相互連接構成的一個性能更優的主干網絡來對特征圖進行目標檢測。這種集成的主干網絡的初始化僅需要單個主干網絡的預訓練即可完成,而單個主干網絡的預訓練如Re sNe t等早已研究透徹。對于前述的各種目標檢測算法在使用C B N e t 后在C O C O 數據集上m A P 提升大概1.5%~3%,截止到2020年基于CBNet改進后的Cascade Mask R-CNN算法已是最優。
本文首先簡單介紹在C N N 發展歷程當中具有里程碑意義的AlexNet,VGG,Inception,Resnet等網絡結構。隨后從候選框提取,回歸,anchor-free三個方面綜述目前基于C N N 的目標檢測算法,最后簡單介紹了逐漸火熱起來的CBNet模型,可以看到圖像目標檢測在未來仍然具有很大的發展潛力和提升空間。
CNN在訓練時需要占用大量的內存,耗費大量時間,隨著移動互聯網技術的不斷發展,用戶對便攜性設備的需求量增加單獨使用某種CN N網絡結構進行分類時可能會存在一定的局限性。為了提高目標檢測在特殊環境下的識別率,如在目標與背景顏色一致,多個目標又重疊在一起,要識別的目標被嚴重遮擋等極端情況下,可將不同的卷積神經網絡技術相結合,充分利用各自的優點,同時針對不同物體的特殊結構設計相應的神經網絡,來提高極端情況下的目標檢測精度。