張立旗,肖秦琨,韓澤佳
(西安工業大學 電子信息工程學院,西安710021)
行人檢測長期以來一直是計算機視覺與圖像處理領域的一個重要研究課題,在無人駕駛、視頻監控、智能安檢、智能機器人等領域有著廣泛的應用。目前針對行人檢測問題,國內外學者已經提出了一系列行人檢測算法,但是在復雜環境下都不能達到理想的檢測效果。
近年來,隨著計算機性能的不斷提高,基于深度學習的行人檢測算法也取得了突破性成果?;谏疃葘W習的檢測算法主要分為2 種類型:基于候選區域選擇(兩階段)的檢測方法和基于邏輯回歸(一階段)的檢測方法?;诤蜻x區域(兩階段)檢測方法通過利用滑動窗口獲取目標建議,然后再通過卷積神經網絡進行特征提取,最后利用分類器對特征進行分類識別,典型方法有R-CNN[1]、Fast-R-CNN。這類算法雖然有較高的檢測精度,但是檢測速度較慢,無法滿足實時性要求。基于邏輯回歸(一階段)的檢測算法通過預先設置錨框,直接對輸入圖像通過卷積進行特征提取,然后對卷積圖中的錨框進行回歸和分類,其典型算法包括SSD 算法[2]和YOLO 系列算法。YOLO 采用雷德蒙 (Redmon)在2015年提出的OverFeat 算法,實現了端到端的訓練。YOLOv2 和YOLOv3 在原有的基礎上對網絡進行了改進,取得了更優的檢測結果。YOLOv3 算法仍然存在檢測精度低的問題,并且文獻[3]~文獻[8]中改進方案并未達到較好的檢測效果。此外,當前的相關研究仍然無法同時兼顧檢測準確率和速度的提升。
綜上所述,本文基于YOLOv3 算法為基礎,針對小尺度目標漏檢率高和檢測速率慢的問題提出以下改進:①精簡YOLOv3 骨干特征提取網絡冗余結構,提出Darknet-41 骨干網絡,解決因網絡層加深導致的過擬合問題,同時也減少參數量和計算量,提升了對目標的檢測速率;②設計新的特征融合結構,在多尺度特征融合的基礎上,增強對淺層特征的融合;③改進損失函數以回歸更加精確的預測框的信息;④采用改進的非極大值抑制算法Adaptive NMS,自適了對遮擋目標的檢測能力。
YOLOv3 算法的基本原理就是利用邏輯回歸思想獲取邊界框的位置信息和所屬類別信息[3]。YOLOv3 整體網絡結構如圖1所示。

圖1 YOLOv3 網絡結構Fig.1 YOLOv3 network structure
YOLOv3 網絡結構是由特征提取網絡Darknet53和檢測網絡層兩部分組成,其中Darknet53 是由53個卷積層和23 個跳躍連接構成[4];檢測網絡則引入了FPN (Feature Pyramid Networks for Object De tection) 思想,在3 個不同尺度的特征圖上進行檢測,提升了對不同尺度目標的檢測能力。
YOLOv3 算法將輸入的圖像數據通過特征提取網絡的卷積操作劃分為S×S 的網格,1 個網格通過3 個錨框對落入其中的目標進行預測,網絡的輸出大小為S×S×3×(4+1+C)[5],包含預測框的中心坐標和高寬、置信度以及C 個類別概率,最后使用NMS(非極大值抑制) 確定檢測目標的坐標信息和類別的預測值。置信度定義如下:

式中:confidence 為預測框的置信度;Pr(object)為網格中某目標的類別概率;為預測框和真實框的交并比。
YOLOv3 采用的Darknet-53 骨干網絡,共有23個殘差塊,共53 層卷積層,其利用Resnet 使網絡層不斷加深來提高準確率,但過深的網絡會導致冗余參數、梯度消失和退化等問題,造成網絡訓練速率較慢和檢測精度較低。針對上述問題,本文對骨干網絡進行了適當精簡。首先通過消融實驗對Darknet-53 網絡層次敏感值進行分析,然后裁剪敏感值較低的網絡層,最后在原網絡的基礎上裁剪了12 層,并將改進后的骨干網絡命名為Darknet-41。改進后的網絡結構如圖2所示。

圖2 Darknet-41 網絡結構圖Fig.2 Darknet-41 network structure diagram
YOLOv3 檢測網絡采用了FPN(Feature Pyramid Networks for Object Detection)方法,輸出3 個不同尺度的特征圖,用于不同尺度的目標檢測。在目標檢測過程中,淺層特征有利于小尺度目標的檢測,而深層特征則更有利于大尺度目標檢測,由于YOLOv3 算法的檢測網絡層并沒有充分利用淺層特征,因此造成對小目標的檢測精度較低。針對上述問題,本文設計了新的檢測網絡層,加強了對檢測目標淺層特征信息的融合。改進的YOLOv3 網絡如圖3所示。

圖3 改進的YOLOv3 網絡Fig.3 Improved YOLOv3 network
YOLOv3 會輸出3 個檢測特征圖,其中52×52×256 輸出特征圖是用來檢測小尺度目標,但是由于其沒有充分利用淺層特征,導致對小尺度目標的檢測精度較低。因此本文引入了第二個Residual Block 提取的淺層特征。首先通過將原輸出特征層52×52×256 通過上采樣與淺層104×104×256 進行融合,并將104×104×256 作為輸出特征圖,用于對小目標的檢測。通過實驗表明通過融入檢測目標的淺層特征,提升了對小目標的檢測精度。
YOLOv3 中采用的是非極大值抑制(NMS)來剔除冗余檢測框[6],但是非極大值抑制(NMS)會粗略地將目標重疊率比較高的邊界框刪除,因此會造成有遮擋的行人檢測精度較低。針對這一個問題,本文提出了一種Adaptive NMS(自適應非極大值抑制),通過自適應調整閾值的辦法,對預測框的選擇和提取工作進行自適應調整,減少遮擋目標的漏檢問題。改進的Adaptive NMS(自適應非極大值抑制)定義如下:
一個檢測框Bi的密度標簽定義如下:

根據這個定義,利用以下策略更新修剪步驟:

式中:NM為自適應NMS 閾值;dm表示檢測框M 的擁擠度;ci表示臨近檢測框Bi的得分。
YOLOv3 的原始損失函數包含三部分:預測框坐標損失、置信度損失和分類損失,其中邊框損失函數采用的是均方誤差(Mean Square Error,MSE)損失函數[7]。但是由于MSE 無法準確表達邊框之間的IoU 關系,而且不具有尺度不變性,因此本文引進了DIoU loss(Distance IoU loss),其將目標與預測框之間的距離、重疊率和制度都考慮進去,使得邊框回歸變得更加穩定,并且在與目標框不重疊的時候仍然可以提供有效的收斂方向。LDIoU計算公式如下:

式中:d=ρ(b,bgt)表示預測框與真實框中心點之間的距離;c 表示的是能同時覆蓋預測框和真實框的最小矩形的對角線。
由于改進的YOLOv3 算法只檢測行人,因此本文提出的算法就直接去掉預測類別損失,從而減少網絡輸出維度,降低計算量。與此對應,損失函數分別由兩部分組成,其計算公式:

式中:Ecoordi表示位置損失;Econfi表示置信度損失函數。
因此通過上述的改進之后的總損失函數如下:

本文搭建的實驗平臺:電腦配置為8 核Intel(R)Core(TM)i7-8750HCPU@2.20 GHz、AG-Forece GTX 1050Ti、8 G 運行內存;軟件操作系統為軟件操作系統為Ubantu18.04LTS 64 位,程序運行所需環境為Python3.7 版本,并行計算框架版本為CUDA10.0,深度神經網絡加速庫為CUDNN7.3.4,深度學習框架為Pytorch 1.6.1。
本文采用的數據集為VOC2012,共有11530 張照片。由于VOC2012 數據集中有20 種類別的標簽信息,因此需要通過數據清理的方法,僅僅保存為person 類別的標簽,然后將清洗后的數據集按照8∶1∶1 分為訓練集、驗證機和測試集,用于后續的網絡訓練和測試。
本文改進YOLOv3 網絡結構首先通過加載原YOLOv3 算法在COCO 數據集上得到的預訓練權重,然后再通過神經網絡的遷移學習[8],加載預訓練權重用于后續的網絡訓練與測試。網絡訓練的過程中超參數設置如表1所示,最后對訓練的結果進行詳細分析。

表1 訓練超參數設置Tab.1 Training hyperparameter settings
圖4為模型訓練過程中平均損失變化曲線,可以看出,在進行了15 輪的迭代訓練時,loss 迅速下降,而在經過25 輪的迭代后loss 緩慢下降并最終達到穩定,則此時該網絡的損失達到最小,網絡達到擬合狀態。

圖4 平均損失變化曲線Fig.4 Average loss curve
圖5為交并比(IoU)為0.5 以及置信度為0.5的指標下測試均值平均精度(mAP)變化曲線,在進行迭代訓練的過程中更新并保留mAP 最高的算法,然后在測試集上測試本文提出算法的檢測準確率。由圖可知,本文算法的mAP 為93.3%相比YOLOv3算法提升了4.6%。檢測速度由48.63 幀/s 提升到57.34 幀/s。

圖5 平均精度變化曲線Fig.5 Average accuracy change curve
通過將改進的YOLOv3 的算法對VOC2012 測試集上的行人目標進行檢測,部分檢測結果如圖6所示。檢測結果表明,本文提出的算法對小尺度行人目標和遮擋行人目標都具有較好的檢測效果。

圖6 改進YOLOv3 測結果圖Fig.6 Improved YOLOv3 test results
3.4.1 消融實驗結果
本文算法在YOLOv3 算法的基礎上精簡骨干網絡,降低網絡深度,提出Darknet-41 骨干網絡;設計新的特征融合結構,通過引入第二個Residual Block的淺層特征;引入了DIoU 損失函數和Adaptive NMS(自適應非極大值抑制)。為了能夠更詳細地分析本文提出的改進算法對YOLOv3 的產生的影響,分別進行5 組實驗,其實驗結果如表2所示。

表2 消融實驗結果Tab.2 Results of ablation experiments
由表2可以看出,在2 組實驗,精簡網絡結構,在檢測平均精度略微受到影響的基礎下,檢測速率卻提升了8.1 幀/s;在第3 組實驗,設計了新的FPN結構,通過引入淺層特征,相比第2 組實驗結果mAP和FPS(檢測速度)分別提升了1.2%和0.9 幀/s。在第4 組實驗,通過引入了DIoU 損失函數,使得網絡能夠回歸更加精確的坐標框的信息,相比于第3 組實驗結果mAP 和FPS(檢測速度)提升1.6%和0.6幀/s。第5 組實驗就是利用改進的Adaptive NMS(自適應非極大值抑制),通過自適應調整閾值的辦法,對預測框的選擇和提取工作進行自適應調整相比較第4 組實驗結果mAP 和FPS 分別提升了1.9%和0.5 幀/s。
3.4.2 不同算法實驗對比
為檢驗本文提出改進的YOLOv3 算法的有效性,將本文提出的算法與其他目標檢測算法在VOC2012行人數據集上進行訓練與測試,并得到平均精度(mAP)、FPS、漏檢率等評價指標,如表3所示。

表3 不同算法的檢驗結果Tab.3 Test results of different algorithms
從表3中我們可以得到本文的算法的mAP 為93.3%、漏檢率為6.2%、檢測速率達到了58.7 幀/s,相比較YOLOv3 算法的mAP 和檢測速率分別提升了4.6%和10.1 幀/s,漏檢率降低2.4%。此外,通過對比文獻[9]~文獻[11]的目標檢測算法,可以發現本文提出的算法還是具有更優的檢測效果。
圖7為YOLOv3 算法與本文提出的算法對相同測試數據集進行測試的部分檢測結果。通過對比可以發現,改進后的模型在對小尺度行人目標和發生遮擋的目標進行檢測的時候,有效地避免了漏檢。


圖7 行人目標檢測效果對比Fig.7 Comparison of pedestrian target detection results
本文提出改進YOLOv3 的行人檢測方法,通過對骨干網絡進行精簡,提出Darknet-41 骨干網絡降低網絡深度,提升了檢測速度。同時改進FPN 層結構,通過引進第二個Residual Block,融合淺層特征,從而提高了該檢測算法對中小目標檢測的精確度。然后引進DIoU 損失函數,以便得到更加精確的回歸框的信息。最后通過改進的Adaptive NMS(自適應非極大值抑制),用于對于預測框的剔除冗余檢測框,提高了對遮擋目標的檢測能力。最后通過實驗發現本文提出的算法具有更優的檢測效果。