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