張立旗,肖秦琨,韓澤佳
(西安工業(yè)大學(xué) 電子信息工程學(xué)院,西安710021)
行人檢測長期以來一直是計算機視覺與圖像處理領(lǐng)域的一個重要研究課題,在無人駕駛、視頻監(jiān)控、智能安檢、智能機器人等領(lǐng)域有著廣泛的應(yīng)用。目前針對行人檢測問題,國內(nèi)外學(xué)者已經(jīng)提出了一系列行人檢測算法,但是在復(fù)雜環(huán)境下都不能達到理想的檢測效果。
近年來,隨著計算機性能的不斷提高,基于深度學(xué)習(xí)的行人檢測算法也取得了突破性成果?;谏疃葘W(xué)習(xí)的檢測算法主要分為2 種類型:基于候選區(qū)域選擇(兩階段)的檢測方法和基于邏輯回歸(一階段)的檢測方法?;诤蜻x區(qū)域(兩階段)檢測方法通過利用滑動窗口獲取目標建議,然后再通過卷積神經(jīng)網(wǎng)絡(luò)進行特征提取,最后利用分類器對特征進行分類識別,典型方法有R-CNN[1]、Fast-R-CNN。這類算法雖然有較高的檢測精度,但是檢測速度較慢,無法滿足實時性要求。基于邏輯回歸(一階段)的檢測算法通過預(yù)先設(shè)置錨框,直接對輸入圖像通過卷積進行特征提取,然后對卷積圖中的錨框進行回歸和分類,其典型算法包括SSD 算法[2]和YOLO 系列算法。YOLO 采用雷德蒙 (Redmon)在2015年提出的OverFeat 算法,實現(xiàn)了端到端的訓(xùn)練。YOLOv2 和YOLOv3 在原有的基礎(chǔ)上對網(wǎng)絡(luò)進行了改進,取得了更優(yōu)的檢測結(jié)果。YOLOv3 算法仍然存在檢測精度低的問題,并且文獻[3]~文獻[8]中改進方案并未達到較好的檢測效果。此外,當前的相關(guān)研究仍然無法同時兼顧檢測準確率和速度的提升。
綜上所述,本文基于YOLOv3 算法為基礎(chǔ),針對小尺度目標漏檢率高和檢測速率慢的問題提出以下改進:①精簡YOLOv3 骨干特征提取網(wǎng)絡(luò)冗余結(jié)構(gòu),提出Darknet-41 骨干網(wǎng)絡(luò),解決因網(wǎng)絡(luò)層加深導(dǎo)致的過擬合問題,同時也減少參數(shù)量和計算量,提升了對目標的檢測速率;②設(shè)計新的特征融合結(jié)構(gòu),在多尺度特征融合的基礎(chǔ)上,增強對淺層特征的融合;③改進損失函數(shù)以回歸更加精確的預(yù)測框的信息;④采用改進的非極大值抑制算法Adaptive NMS,自適了對遮擋目標的檢測能力。
YOLOv3 算法的基本原理就是利用邏輯回歸思想獲取邊界框的位置信息和所屬類別信息[3]。YOLOv3 整體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 YOLOv3 network structure
YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)是由特征提取網(wǎng)絡(luò)Darknet53和檢測網(wǎng)絡(luò)層兩部分組成,其中Darknet53 是由53個卷積層和23 個跳躍連接構(gòu)成[4];檢測網(wǎng)絡(luò)則引入了FPN (Feature Pyramid Networks for Object De tection) 思想,在3 個不同尺度的特征圖上進行檢測,提升了對不同尺度目標的檢測能力。
YOLOv3 算法將輸入的圖像數(shù)據(jù)通過特征提取網(wǎng)絡(luò)的卷積操作劃分為S×S 的網(wǎng)格,1 個網(wǎng)格通過3 個錨框?qū)β淙肫渲械哪繕诉M行預(yù)測,網(wǎng)絡(luò)的輸出大小為S×S×3×(4+1+C)[5],包含預(yù)測框的中心坐標和高寬、置信度以及C 個類別概率,最后使用NMS(非極大值抑制) 確定檢測目標的坐標信息和類別的預(yù)測值。置信度定義如下:
式中:confidence 為預(yù)測框的置信度;Pr(object)為網(wǎng)格中某目標的類別概率;為預(yù)測框和真實框的交并比。
YOLOv3 采用的Darknet-53 骨干網(wǎng)絡(luò),共有23個殘差塊,共53 層卷積層,其利用Resnet 使網(wǎng)絡(luò)層不斷加深來提高準確率,但過深的網(wǎng)絡(luò)會導(dǎo)致冗余參數(shù)、梯度消失和退化等問題,造成網(wǎng)絡(luò)訓(xùn)練速率較慢和檢測精度較低。針對上述問題,本文對骨干網(wǎng)絡(luò)進行了適當精簡。首先通過消融實驗對Darknet-53 網(wǎng)絡(luò)層次敏感值進行分析,然后裁剪敏感值較低的網(wǎng)絡(luò)層,最后在原網(wǎng)絡(luò)的基礎(chǔ)上裁剪了12 層,并將改進后的骨干網(wǎng)絡(luò)命名為Darknet-41。改進后的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 Darknet-41 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.2 Darknet-41 network structure diagram
YOLOv3 檢測網(wǎng)絡(luò)采用了FPN(Feature Pyramid Networks for Object Detection)方法,輸出3 個不同尺度的特征圖,用于不同尺度的目標檢測。在目標檢測過程中,淺層特征有利于小尺度目標的檢測,而深層特征則更有利于大尺度目標檢測,由于YOLOv3 算法的檢測網(wǎng)絡(luò)層并沒有充分利用淺層特征,因此造成對小目標的檢測精度較低。針對上述問題,本文設(shè)計了新的檢測網(wǎng)絡(luò)層,加強了對檢測目標淺層特征信息的融合。改進的YOLOv3 網(wǎng)絡(luò)如圖3所示。
圖3 改進的YOLOv3 網(wǎng)絡(luò)Fig.3 Improved YOLOv3 network
YOLOv3 會輸出3 個檢測特征圖,其中52×52×256 輸出特征圖是用來檢測小尺度目標,但是由于其沒有充分利用淺層特征,導(dǎo)致對小尺度目標的檢測精度較低。因此本文引入了第二個Residual Block 提取的淺層特征。首先通過將原輸出特征層52×52×256 通過上采樣與淺層104×104×256 進行融合,并將104×104×256 作為輸出特征圖,用于對小目標的檢測。通過實驗表明通過融入檢測目標的淺層特征,提升了對小目標的檢測精度。
YOLOv3 中采用的是非極大值抑制(NMS)來剔除冗余檢測框[6],但是非極大值抑制(NMS)會粗略地將目標重疊率比較高的邊界框刪除,因此會造成有遮擋的行人檢測精度較低。針對這一個問題,本文提出了一種Adaptive NMS(自適應(yīng)非極大值抑制),通過自適應(yīng)調(diào)整閾值的辦法,對預(yù)測框的選擇和提取工作進行自適應(yīng)調(diào)整,減少遮擋目標的漏檢問題。改進的Adaptive NMS(自適應(yīng)非極大值抑制)定義如下:
一個檢測框Bi的密度標簽定義如下:
根據(jù)這個定義,利用以下策略更新修剪步驟:
式中:NM為自適應(yīng)NMS 閾值;dm表示檢測框M 的擁擠度;ci表示臨近檢測框Bi的得分。
YOLOv3 的原始損失函數(shù)包含三部分:預(yù)測框坐標損失、置信度損失和分類損失,其中邊框損失函數(shù)采用的是均方誤差(Mean Square Error,MSE)損失函數(shù)[7]。但是由于MSE 無法準確表達邊框之間的IoU 關(guān)系,而且不具有尺度不變性,因此本文引進了DIoU loss(Distance IoU loss),其將目標與預(yù)測框之間的距離、重疊率和制度都考慮進去,使得邊框回歸變得更加穩(wěn)定,并且在與目標框不重疊的時候仍然可以提供有效的收斂方向。LDIoU計算公式如下:
式中:d=ρ(b,bgt)表示預(yù)測框與真實框中心點之間的距離;c 表示的是能同時覆蓋預(yù)測框和真實框的最小矩形的對角線。
由于改進的YOLOv3 算法只檢測行人,因此本文提出的算法就直接去掉預(yù)測類別損失,從而減少網(wǎng)絡(luò)輸出維度,降低計算量。與此對應(yīng),損失函數(shù)分別由兩部分組成,其計算公式:
式中:Ecoordi表示位置損失;Econfi表示置信度損失函數(shù)。
因此通過上述的改進之后的總損失函數(shù)如下:
本文搭建的實驗平臺:電腦配置為8 核Intel(R)Core(TM)i7-8750HCPU@2.20 GHz、AG-Forece GTX 1050Ti、8 G 運行內(nèi)存;軟件操作系統(tǒng)為軟件操作系統(tǒng)為Ubantu18.04LTS 64 位,程序運行所需環(huán)境為Python3.7 版本,并行計算框架版本為CUDA10.0,深度神經(jīng)網(wǎng)絡(luò)加速庫為CUDNN7.3.4,深度學(xué)習(xí)框架為Pytorch 1.6.1。
本文采用的數(shù)據(jù)集為VOC2012,共有11530 張照片。由于VOC2012 數(shù)據(jù)集中有20 種類別的標簽信息,因此需要通過數(shù)據(jù)清理的方法,僅僅保存為person 類別的標簽,然后將清洗后的數(shù)據(jù)集按照8∶1∶1 分為訓(xùn)練集、驗證機和測試集,用于后續(xù)的網(wǎng)絡(luò)訓(xùn)練和測試。
本文改進YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)首先通過加載原YOLOv3 算法在COCO 數(shù)據(jù)集上得到的預(yù)訓(xùn)練權(quán)重,然后再通過神經(jīng)網(wǎng)絡(luò)的遷移學(xué)習(xí)[8],加載預(yù)訓(xùn)練權(quán)重用于后續(xù)的網(wǎng)絡(luò)訓(xùn)練與測試。網(wǎng)絡(luò)訓(xùn)練的過程中超參數(shù)設(shè)置如表1所示,最后對訓(xùn)練的結(jié)果進行詳細分析。
表1 訓(xùn)練超參數(shù)設(shè)置Tab.1 Training hyperparameter settings
圖4為模型訓(xùn)練過程中平均損失變化曲線,可以看出,在進行了15 輪的迭代訓(xùn)練時,loss 迅速下降,而在經(jīng)過25 輪的迭代后loss 緩慢下降并最終達到穩(wěn)定,則此時該網(wǎng)絡(luò)的損失達到最小,網(wǎng)絡(luò)達到擬合狀態(tài)。
圖4 平均損失變化曲線Fig.4 Average loss curve
圖5為交并比(IoU)為0.5 以及置信度為0.5的指標下測試均值平均精度(mAP)變化曲線,在進行迭代訓(xùn)練的過程中更新并保留mAP 最高的算法,然后在測試集上測試本文提出算法的檢測準確率。由圖可知,本文算法的mAP 為93.3%相比YOLOv3算法提升了4.6%。檢測速度由48.63 幀/s 提升到57.34 幀/s。
圖5 平均精度變化曲線Fig.5 Average accuracy change curve
通過將改進的YOLOv3 的算法對VOC2012 測試集上的行人目標進行檢測,部分檢測結(jié)果如圖6所示。檢測結(jié)果表明,本文提出的算法對小尺度行人目標和遮擋行人目標都具有較好的檢測效果。
圖6 改進YOLOv3 測結(jié)果圖Fig.6 Improved YOLOv3 test results
3.4.1 消融實驗結(jié)果
本文算法在YOLOv3 算法的基礎(chǔ)上精簡骨干網(wǎng)絡(luò),降低網(wǎng)絡(luò)深度,提出Darknet-41 骨干網(wǎng)絡(luò);設(shè)計新的特征融合結(jié)構(gòu),通過引入第二個Residual Block的淺層特征;引入了DIoU 損失函數(shù)和Adaptive NMS(自適應(yīng)非極大值抑制)。為了能夠更詳細地分析本文提出的改進算法對YOLOv3 的產(chǎn)生的影響,分別進行5 組實驗,其實驗結(jié)果如表2所示。
表2 消融實驗結(jié)果Tab.2 Results of ablation experiments
由表2可以看出,在2 組實驗,精簡網(wǎng)絡(luò)結(jié)構(gòu),在檢測平均精度略微受到影響的基礎(chǔ)下,檢測速率卻提升了8.1 幀/s;在第3 組實驗,設(shè)計了新的FPN結(jié)構(gòu),通過引入淺層特征,相比第2 組實驗結(jié)果mAP和FPS(檢測速度)分別提升了1.2%和0.9 幀/s。在第4 組實驗,通過引入了DIoU 損失函數(shù),使得網(wǎng)絡(luò)能夠回歸更加精確的坐標框的信息,相比于第3 組實驗結(jié)果mAP 和FPS(檢測速度)提升1.6%和0.6幀/s。第5 組實驗就是利用改進的Adaptive NMS(自適應(yīng)非極大值抑制),通過自適應(yīng)調(diào)整閾值的辦法,對預(yù)測框的選擇和提取工作進行自適應(yīng)調(diào)整相比較第4 組實驗結(jié)果mAP 和FPS 分別提升了1.9%和0.5 幀/s。
3.4.2 不同算法實驗對比
為檢驗本文提出改進的YOLOv3 算法的有效性,將本文提出的算法與其他目標檢測算法在VOC2012行人數(shù)據(jù)集上進行訓(xùn)練與測試,并得到平均精度(mAP)、FPS、漏檢率等評價指標,如表3所示。
表3 不同算法的檢驗結(jié)果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]的目標檢測算法,可以發(fā)現(xiàn)本文提出的算法還是具有更優(yōu)的檢測效果。
圖7為YOLOv3 算法與本文提出的算法對相同測試數(shù)據(jù)集進行測試的部分檢測結(jié)果。通過對比可以發(fā)現(xiàn),改進后的模型在對小尺度行人目標和發(fā)生遮擋的目標進行檢測的時候,有效地避免了漏檢。
圖7 行人目標檢測效果對比Fig.7 Comparison of pedestrian target detection results
本文提出改進YOLOv3 的行人檢測方法,通過對骨干網(wǎng)絡(luò)進行精簡,提出Darknet-41 骨干網(wǎng)絡(luò)降低網(wǎng)絡(luò)深度,提升了檢測速度。同時改進FPN 層結(jié)構(gòu),通過引進第二個Residual Block,融合淺層特征,從而提高了該檢測算法對中小目標檢測的精確度。然后引進DIoU 損失函數(shù),以便得到更加精確的回歸框的信息。最后通過改進的Adaptive NMS(自適應(yīng)非極大值抑制),用于對于預(yù)測框的剔除冗余檢測框,提高了對遮擋目標的檢測能力。最后通過實驗發(fā)現(xiàn)本文提出的算法具有更優(yōu)的檢測效果。