宋祥龍,李心慧
(山東科技大學計算機科學與工程學院,山東青島 266590)
行人檢測在汽車自動駕駛領域具有很大的應用前景,是近年來是模式識別領域研究的熱點課題之一[1]。隨著深度學習相關理論的快速發(fā)展,硬件計算能力不斷加強,相應數(shù)據(jù)集不斷構建,深度神經網絡在不同的視覺任務中取得了巨大成功,深度網絡模型也被廣泛應用于行人檢測領域,并逐步成為計算機視覺領域的研究熱點之一。
傳統(tǒng)行人檢測方法在進行行人檢測任務時所用到的特征是通過人工提取的,但這種方式存在特征維度高、泛化能力差的缺點,對傳統(tǒng)方法的改進通常是建立在梯度直方圖(HOG)、Haar 特征、局部二值模式(LBP)等基礎上。
目前,目標檢測主流算法主要基于深度學習模型,分為以下兩類:
(1)區(qū)域提名檢測算法[2]。此類算法包括兩個階段,首先產生候選區(qū)域,在此基礎上利用卷積神經網絡對候選區(qū)域進行分類[3],通常具有很高的精度。這類算法的代表是R-CNN 系列算法,如Fast R-CNN[4]、Faster R-CNN[5]、Mask R-CNN[6]等。
(2)端到端檢測算法[7]。除去產生候選區(qū)域階段,直接得出物體位置坐標值及類別概率,犧牲了一定的檢測精度,但提升了檢測速度,代表算法有YOLO 和SSD。
現(xiàn)有的目標檢測算法中,R-CNN 系列算法檢測精度高,但檢測實時性較差,很難推廣到實際場景中加以運用。YOLO 系列算法在不斷改進后,在檢測的實時性方面表現(xiàn)優(yōu)異,但是訓練環(huán)境對硬件要求較高,一般需要GPU 顯存大于4GB,資源消耗巨大,在部署方面具有一定難度。
Tiny-yolov3[8]是YOLOv3[9]的簡化版本,網絡卷積層的數(shù)量比YOLOv3 少得多,這意味著Tiny-yolov3 不需要占用大量顯存,減少了對硬件的依賴。較為簡單的網絡結構極大加快了檢測速度,但卻損失了部分檢測精度。本文在Ti?ny-yolov3 的基礎上加以改進,更好地權衡了檢測速度與檢測精度,使其更加適用于實時檢測場景。首先對輸入圖像作隨機旋轉和隨機扭曲HSV 顏色空間模型操作,增強網絡泛化性,并根據(jù)行人尺寸特征改變圖片輸入尺寸,方便更好地提取行人特征;然后使用K 均值聚類算法[10]篩選預測框,提高模型對數(shù)據(jù)集的學習能力;最后,在Tiny-yolov3 的基礎上優(yōu)化網絡結構,增強目標特征提取能力,提高檢測精度。
Tiny-yolov3 算法將輸入的固定大小圖像平均劃分成S×S 的小網格,每個網格使用3 個錨框對其中的目標進行預測,輸出為S×S×3×(5+C1)。S 是劃分單元格數(shù)量,5 指檢測框的中心坐標、寬高和置信度,C1 指類別的數(shù)量。最后通過非極大抑制[11]去除多余錨框,找到最佳行人檢測位置。
置信度計算如式(1)和式(2)所示。
其中,C 代表置信度,Pr(object) 表示預測框中檢測到目標的概率,I表示預測框與真實框的區(qū)域交并比。
Tiny-yolov3 算法是YOLOv3 的簡化版,是一個輕量級網絡。由7 個大小為3×3 的卷積(Convolution)層[12]、6 個最大池化(max pooling)層、1 個上采樣層和兩個yolo 層組成。Tiny-yolov3 總計只有24 層網絡,比YOLOv3 少107 層,減少了模型訓練過程中的內存占用,加快了行人目標檢測速度,更能滿足實時檢測需求。具體網絡結構如圖1 所示。
神經網絡中,輸入圖像尺寸大小不同,最終得到的輸出大小也不同,提取到的特征信息量也不同。在深度7 學習中較為淺層的神經網絡可以很好地表征小的物體,而深層神經網絡可以很好地表征大的物體[13]。Tiny-yolov3 就是采用了這種思想,運用兩種尺寸的預測機制對目標物體進行檢測[14]。①在主干提取網絡之后再連接一個卷積層,得到13×13 的檢測尺寸,該尺度適合對大物體目標進行檢測[15];②在倒數(shù)第二層進行上采樣,再與上一層維度為26×26 的特征進行特征融合,得到26×26 的檢測尺寸,該尺度適合對中小物體目標進行檢測[16]。
為了更好地提取行人特征,本文從輸入圖像著手,作出如下改進:
(1)為了減少由于光照帶來的明暗程度對模型的影響,本文借鑒文獻[17]中的方法,對輸入圖像進行圖片隨機扭曲HSV 顏色空間模型操作。HSV 是一種比較直觀的顏色模型,相當于改變了行人的明暗程度,不僅增強了數(shù)據(jù)集的豐富度,也使網絡模型具有更好的泛化性[18]。根據(jù)后續(xù)實驗得出的結果可知,使用強化行人特征模塊后,模型檢測準確率和召回率均有所提高。
(2)行人檢測研究表明,行人特征信息在垂直方向上分布較多,在水平方向上分布相對較少。本文對圖像的輸入尺寸進行調整,選擇288×512 的圖像尺寸作為網絡輸入,使行人的縱向信息得到更好的表達。同時,調整后的輸入尺寸像素數(shù)與原來416×416 的輸入尺寸像素數(shù)相近,對檢測速度影響很小。
(1)多尺度預測。Tiny-yolov3 有兩個目標檢測尺度,分別是13×13 和26×26。13×13 的檢測尺度適合對大尺度行人目標進行檢測,26×26 的檢測尺度適合對中尺度行人目標進行檢測,因此當行人目標在圖像中較小時,很容易發(fā)生漏檢現(xiàn)象。針對模型存在的上述問題,本文決定增加一個52×52 的檢測尺度。經過分析,淺層網絡提取的特征對小尺度行人目標定位能力好,但是語義表征能力弱。深層網絡提取的特征包含豐富的語義信息,但是丟失了小尺度行人目標的定位信息[19]。綜合考慮,本文通過上采樣將深層網絡特征維度放大,然后與相同特征維度的淺層特征進行特征融合,幫助提升模型對小尺度行人目標的檢測能力,從而最大程度地減少行人漏檢,提升模型檢測精度。具體網絡結構如圖2 所示。
(2)改進網絡結構。Tiny-yolov3 的主干網絡只有7 個卷積層和6 個池化層,很難對目標特征有較好的提取效果。一般而言,網絡結構層數(shù)越深,對目標特征的提取效果會越好。常用的卷積核大小有3 種類型:3×3、5×5 和7×7,但是5×5 和7×7 的卷積核不適用于行人檢測。因此,本文針對Tiny-yolov3 網絡卷積層少的問題,在原有網絡基礎上選取3×3 卷積核對網絡進行加深,加深的網絡可以更好地提取行人特征,提高檢測精度。
雖然更深層次的網絡結構可以提高檢測精度,但是模型參數(shù)也會隨之呈幾何增長,這會極大增加計算量,占用內存資源,降低檢測速度。本文借鑒Resnet 思想,引入大小為1×1 卷積核。一方面,它可以對卷積核通道數(shù)進行降維,在計算量大時降低計算復雜度,節(jié)省內存資源;另一方面,可增加非線性激勵函數(shù),增加網絡特征提取能力,提高檢測精度。改進的Tiny-yolov3 網絡結構如圖2 所示。
Fig.1 Tiny-yolov3 network structure圖1 Tiny-yolov3 網絡結構
Fig.2 Improved Tiny-yolov3 network architecture圖2 改進的Tiny-yolov3 網絡結構
Anchor Box 機制[20]首先在Faster-RCNN 和SSD 中被提出,但是Anchor Box 的大小通常由人工設置,這導致網絡在訓練過程中收斂緩慢,而且容易出現(xiàn)局部優(yōu)化問題。Tiny-yolov3 借鑒了Faster-RCNN 的Anchor Box 機制,對Tiny-yolov3 算法在Anchor Box 方面作出調整,通過維度聚類確定最優(yōu)Anchor Box 個數(shù)及寬高維度。傳統(tǒng)的K 均值聚類算法使用歐式距離函數(shù),但這意味著較大的Anchor Box 要比較小的Anchor Box 具有更多的錯誤聚類,并且聚類結果可能會產生偏差。為此,本文采用IOU(生成的候選框與原始標記框的重疊率)評分來評價聚類結果,從而避免了由于框的尺度而引起的誤差。距離函數(shù)計算公式如式(3)所示。
其中,box 是樣本,centriod 是聚類的中心點,IOU(box,centriod)是聚類框與中心框的重疊比例。本文從混合數(shù)據(jù)集共計4 287 個框中,采用改進的K 均值聚類方法比較不同K 值下的IOU 得分??紤]到模型的復雜性,最終選擇K值為9,采取每層分配3 個Anchor Box 的策略。得到的聚類結果為:(19,81)、(33,161)、(71,198)、(46,314)、(77,384)、(136,272)、(114,452)、(171,465)、(265,511)。
為了防止過擬合,加速網絡收斂速度,本文在訓練中引入遷移學習機制。Tiny-yolov3_voc.weights 文件是Tinyyolov3 模型在PASCAL VOC 2007 數(shù)據(jù)集中進行30 000 次迭代訓練得到的權重文件,保留了前15 層卷積層的參數(shù)。從Tiny-yolov3_voc.weights 權重文件中進行提取,得到改進Tiny-yolov3 算法的訓練模型文件Tiny-yolov3.conv.22,然后在混合數(shù)據(jù)集上進行訓練。采用遷移學習機制,不但可以使模型在訓練過程中更快地收斂,而且能夠避免模型因數(shù)據(jù)量較少而產生的過擬合[21]。
本文實驗平臺配置如表1 所示。
Table 1 Hardware and software configuration of the experimental platform表1 實驗平臺軟硬件配置
INRIA 行人檢測數(shù)據(jù)集的行人數(shù)據(jù)人體姿態(tài)復雜、光照條件多變,適合進行行人檢測。其圖片庫被分為只有車、只有人、有車有人和無車無人4 個類別,數(shù)據(jù)集由訓練集和測試集兩部分組成。訓練集中包含了正負樣本,其中正樣本614 張,負樣本1 218 張;測試集中包含正樣本288張,負樣本453 張。本文提取INRIA 行人檢測數(shù)據(jù)集中902 張正樣本圖像,并將其轉化為Pascal VOC 數(shù)據(jù)格式。由于INRIA 數(shù)據(jù)集訓練樣本較少,本文數(shù)據(jù)集還加入了1 000 張實際生活中拍攝的圖片,這些圖片根據(jù)Pascal VOC 的標簽標注標準,使用Labelling 標注工具,生成訓練所需要的xml 文件,每一個圖片名對應一個label.xml。
本實驗在深度學習框架Darknet 上搭建改進的Tinyyolov3 模型。Darknet 是應用廣泛的框架,對多種格式的輸入圖片均適用。
超參數(shù)的選擇對模型訓練效果起到了至關重要的作用,合理地設置網絡參數(shù)可以極大提高模型訓練和檢測效果。為了加速網絡系數(shù)訓練,首先加載預訓練模型,然后設置batch=64,subdivisions=16,每輪迭代會從所有訓練集中隨機抽取64 個樣本進行訓練,這64 個樣本被平均分成16 組,送入網絡進行訓練,極大減輕了內存占用壓力。整個訓練過程中采用的參數(shù)如下:動量(momentum)為0.9、權重衰減(decay)系數(shù)為0.001、初始學習率為0.001、最大迭代次數(shù)為30 000 次,在迭代次數(shù)為24 000 次和27 000 次時將學習率減小10 倍。在此基礎上利用行人數(shù)據(jù)集進行模型訓練并保存日志文件。
訓練好的網絡模型,需要一套合理的評價指標進行評價。本文選擇mAP[22]值作為測試結果精度指標,Recall[23]為召回率(查全率)的評價指標,IOU[8]為定位精度評價指標,F(xiàn)PS 為實時檢測速度指標。
mAP(mean average precision)的定義公式如式(4)所示,含義是h 類目標物體平均精度的均值。
召回率(Recall)的定義如式(5)所示,表示測試數(shù)據(jù)集全部目標中被檢測到的數(shù)量所占比例。
平均交并比(IOU)的定義如式(6)所示,表示兩個候選框的重疊程度,將真實框記為A,預測框記為B。SA代表A框的面積,SB代表B 框的面積,SA∩B代表A 框與B 框交集部分的面積,IOU 的值取0~1。通常而言,值越接近于1代表重疊度越高,相應的候選框更精確。
FPS 是圖像領域中的定義,是指畫面每秒傳輸?shù)膸瑪?shù),F(xiàn)PS 值反映了保存以及顯示動態(tài)視頻的信息數(shù)量。FPS 越大,表示每秒鐘的幀數(shù)越多,所顯示的視頻就越流暢。
3.5.1 強化行人特征圖像處理模塊測試
對加入強化行人特征模塊的模型進行訓練和測試,并將測試結果與未加入強化模塊的原始模型作對比,實驗結果如表2 所示。結果表明,本文提出的方法使mAP 值提高了2.1 個百分點,召回率提高了3 個百分點。
Table 2 Test results after strengthening the pedestrian feature processing module表2 強化行人特征處理模塊測試結果
3.5.2 損失函數(shù)曲線分析
算法損失變化曲線如圖3 所示。觀察可知,兩種模型的損失值在前2 000 次迭代內均迅速降低,但改進的Tinyyolov3 算法明顯比Tiny-yolov3 更快。Tiny-yolov3 在2 500次迭代以后,損失值從一開始的6 下降到1.5 附近,之后開始緩慢下降,最終在25 000 次迭代后,損失值趨于穩(wěn)定。本文提出的改進Tiny-yolov3 算法在2 500 次迭代以后,損失值就從6 迅速下降到了1 附近,之后開始平穩(wěn)下降,大約在20 000 次迭代后趨于穩(wěn)定。分析比較可知,在訓練過程中,改進后的Tiny-yolov3 算法較Tiny-yolov3 算法損失值下降更迅速,網絡更加穩(wěn)定且收斂較快,穩(wěn)定之后的損失值也更小,說明本文提出的改進Tiny-yolov3 算法優(yōu)于原算法。
Fig.3 Loss curve圖3 損失變化曲線
3.5.3 模型檢測結果分析
為了對改進后算法的檢測精度進行更加嚴謹?shù)脑u估,本文引入了Tiny-yolov2 算法作對比分析。對3 種算法在測試集中的識別結果進行統(tǒng)計,具體結果如表3 所示。
Table 3 The test results of three algorithms on the test set表3 3 種算法在測試集上的測試結果
根據(jù)表3 中的數(shù)據(jù)可以發(fā)現(xiàn),改進Tiny-yolov3 算法的mAP 值比Tiny-yolov2 算法提高了18.76 百分點,相較于Tiny-yolov3 算法提高了7.25 百分點。與此同時,改進后的Tiny-yolov3 算法的召回率相較于Tiny-yolov2 算法提升了17 百分點,相較于Tiny-yolov3 算法提升了9 百分點??偠灾?,改進后的Tiny-yolov3 算法在mAP 值和召回率方面,相較于前兩種算法均有所提升。
為了評價改進Tiny-yolov3 網絡的定位精度,利用平均交并比作為指標進行評測。根據(jù)表3 測試結果表明,相較于Tiny-yolov2 網絡,改進的Tiny-yolov3 網絡平均交并比提高了15.39 百分點,相較于Tiny-yolov3 網絡提高了8.91百分點。這說明,改進的Tiny-yolov3 網絡產生的預測框與原標記框重疊率更高,對行人定位精度更好。
根據(jù)表3 測試結果得到的FPS 數(shù)據(jù),可以看到改進的Tiny-yolov3 檢測模型達到了62 幀,由于本文對其加深了網絡結構,相較于Tiny-yolov3 下降了5 幀,但仍可以滿足實時性需求。
為了驗證改進后的Tiny-yolov3 算法在實際應用中的效果,本文將測試集分別輸入到Tiny-yolov3 和改進的Ti?ny-yolov3 兩種網絡模型作對比分析,分別得到兩種目標檢測算法在測試集上的測試結果,部分測試結果如圖4 和圖5 所示。
Fig.4 Tiny-yolov3 pedestrian target detection results圖4 Tiny-yolov3 行人目標檢測結果
Fig.5 Improved Tiny-yolov3 pedestrian target detection results圖5 改進的Tiny-yolov3 行人目標檢測結果
根據(jù)上面兩組測試結果可以發(fā)現(xiàn),當在圖像中有大量行人且存在目標重疊時,Tiny-yolov3 存在識別精度不高和明顯漏檢現(xiàn)象,而改進的Tiny-yolov3 表現(xiàn)良好。對于檢測目標所處環(huán)境光線較暗的情況,Tiny-yolov3 漏檢嚴重,改進的Tiny-yolov3 加入了強化行人特征模塊,極大降低了光線對目標檢測的影響,表現(xiàn)優(yōu)異。當行人目標在圖像中較小時,改進的目標檢測算法由于增加了檢測尺度,而在檢測精度上明顯高于Tiny-yolov3。分析可知,改進的Tinyyolov3 算法泛化能力更好,抗干擾能力更強,對于各種復雜情形的目標檢測都有良好表現(xiàn),相較于Tiny-yolov3 提升明顯。
本文基于Tiny-yolov3 目標檢測算法,針對目前目標檢測算法存在的實時性差、檢測精度不高、對硬件過度依賴的問題,給出了一系列優(yōu)化方案。實驗結果表明,本文提出的改進算法相較于Tiny-yolov3 效果提升明顯,無論在檢測精度還是實際場景的泛化能力方面都有不錯的表現(xiàn)。
雖然相較于原算法模型有了明顯提升,但是改進的模型在檢測精度上仍有待提高。下一步考慮從優(yōu)化訓練集圖像質量和進一步優(yōu)化網絡結構兩方面著手,在保證算法檢測實時性的基礎上,進一步提高檢測精度。