徐天宇,曾麗君,魏 麗
(南京航空航天大學金城學院 信息工程學院,江蘇 南京211156)
面對錯綜復雜的人流量場景,近幾年通過計算機視覺技術來處理和分析人流量的方法日益增多,其優勢之一是公共場所普遍裝有監控攝像頭,無需部署新設備;二是監控面積,廣角鏡頭可以實時監測并統計任意一片區域內的人流量;三是可以最大程度避免干擾當前行人活動。
目前,通過計算機視覺技術進行目標檢測有很多種方法,比如早期傳統的HOG+SVM[1]分類器方法,再有利用KCF[2]實現多目標跟蹤,這兩種方法無法滿足實時性的需求,且精度不高。伴隨著近幾年深度學習的突飛猛進,通過神經卷積網絡實現多目標追蹤檢測,極大程度提高了目標檢測精度且滿足視頻監控的實時性需求。基于深度學習的人流量檢測方法,是使用神經網絡通過對行人頭部的數據集樣本進行深度學習,實現對頭部目標的實時追蹤檢測,來達到實時統計人流量的目的。
YOLOv3[3]是一種基于DarkNet-53[4]深度學習框架的由端到端的目標檢測算法項目,其本質上是實現了回歸的深度卷積神經網絡。由于DarkNet-53是用C語言和CUDA的底層編寫,所以其速度快,多核處理器以及GPU并行運算能夠得到充分發揮的特點讓YOLOv3的快速檢測非常適合這種需要實時檢測視頻幀的項目。YOLOv3較之于前兩代的Yolo有了非常大的提升,尤其是在小目標檢測上,與R-CNN[5]相比快1000倍左右,與Faster RCNN[6]相比快近100倍。使用YOLOv3算法進行人檢測時,與之前擁有較高準確率的SSD[7]算法的檢測有些不同。首先將原始圖片縮放到416×416的大小并分為S×S個等大的單元格,每個單元格會有3個anchor box[8]來預測3個bounding box,預測框包含3個信息:目標在候選框的中心目標(x,y),候選框的寬度(w,h)以及目標類型C。通過卷積層提取特征如圖1所示。

圖1 YOLOv3算法檢測流程圖
YOLOv3采用了Faster R-CNN中的先驗框思想,其目標檢測的準確度受到anchor的數量和寬高比影響,在模型訓練的過程中,為了讓候選框與真實框的參數更加接近,候選框的參數會根據迭代次數的增加而不斷變化。本次改進YOLOv3的目的是為了實現針對密集人流量時進行行人頭部的檢測,通過深度卷積神經網絡對收集的樣本來學習行人頭部的特征。K-means[9]作為聚類算法的一種,與Faster R-CNN相比具有主觀性更弱,模型表達能力更強,更易于網絡學習的特點,其核心思想是把空間中的K個點作為幾何中心,對與最接近的點進行歸類,不停地更新和迭代這K個點的值,直到抵達迭代次數或K個值不再變化為止。COCO數據集中的行人是全身的“類長方形”框與本文收集的行人頭部數據集多為“類正方形”的候選框類型不同,因此需要對行人頭部數據集重新分析K-means聚類,得到最適合密集人流行人頭部數據集的anchor數量和寬高比。K-means維度聚類方法的距離公式定義如下:

行人頭部數據集聚類分析的目標函數變化曲線見圖2。

圖2 目標函數變化曲線
由圖2所示的變化曲線可知,K值大于7時目標函數趨于平緩,因此選擇K=7,即anchor個數為7。
目標特征提取的識別效果由卷積神經網絡的卷積層數和網絡結構的深淺所決定,為了對密集人流量時進行頭部檢測,需要讓檢測網絡獲得更多的小目標特征,同時考慮到邊緣端的硬件條件較為有限,本文對YOLOv3的網絡結構進行改進。為了提高檢測速度,勢必要減少主干網絡層次,這樣也就帶來了不能提取出高層次語義特征的問題,從而導致候選框和分類精度降低。為解決這個問題,本文將主干網絡替換為MobileNet[10]網絡,采用13*13、26*26的分辨率探測網絡作為嫁接網絡,使用兩個不同尺度的yolo輸出層,這樣可以在增加網絡層數保證精度的同時維持較小的計算量,改進后YOLOv3的網絡結構見圖3。

圖3 改進的YOLOv3算法結構
通過人流量密度能直觀反映出一片區域的擁擠程度,它是估算發生事故幾率的重要指標,用式(2)表示。

其中,ρ為人流量密度;N為單位面積上的行人;S為單位面積;P為YOLOv3目標檢測的準確率。
人流量密度的風險值不僅和行人的行進方向、速度有關,且被行人所處環境(如人行道、輔路等)因素影響。因此,進行人流量風險評估時需要根據當前監控區域劃分不同場景,如樓梯、廣場、會場等。根據不同的場景分配不同的權重,最后獲得一個人流量風險評估值,為決策層的判斷提供依據。人流量風險評估值(Prisk)用式(3)表示。

式(3)中:ρ為人流量密度;weight為不同場景下的權重值。根據上述的人流量風險評估值(Prisk),用不同的顏色將預警級別[11]分成4種,見表1。

表1 預警模型
測試環境的軟硬件配置情況見表2,所有訓練測試均在該環境下進行。

表2 實驗平臺軟硬件配置
訓練的數據集主要從咖啡廳、十字路口以及學校等公共場所進行采集。這些數據集都擁有不同的人流密度、圖像背景以及拍攝角度等。本次總共采集到15120張不同的人流量密度圖片作為數據集,其中訓練集15120張圖片,驗證1000張圖片。此外,將100張圖片作為測試數據集以便對訓練結果進行測試,所有標注均為人工標注。本次采集的數據集示例見圖4,所采集的圖片均為公共場所,路人行走姿態多樣、周圍環境復雜、衣著打扮各不相同,還可能被帽子雨傘之類物品遮擋,符合本次訓練的需求。

圖4 幾種測試場景代表圖像
訓練采用的初始模型參數設置如下:學習率為0.001;batch為64;subdivisions為64;max_batches為50000;decay為0.0005,最后通過50000次迭代后網絡收斂。
本文在訓練過程中,分別在數據集上取5000次、100 00次、20000次、30000次、40000次迭代訓練時的結果,其結果如圖5。

圖5 不同迭代次數的準確率P
圖5 中,準確率P的計算公式為:

式(4)中,P為準確率,Dtec為行人頭部數量的預測值,Real為當前行人的真實值。
本文通過上述對行人頭部進行目標檢測的訓練與測試,并將實驗結果與對行人全身的檢測結果進行對比分析。選擇這兩種不同的檢測方法并對他們在相同測試集的情況下進行對比分析。
分別用相同的測試數據集對改進后的YOLOv3與沒改進之前的YOLOv3進行測試,用平均準確率(mAP)、召回率(Recall)以及檢測速度作為衡量標準,實驗結果如表3。其中,平均準確率mAP的計算公式為:

表3 兩個模型的測試結果

式(5)中,∑AP為所有頭部圖片的平均準確率之和。
召回率Recall的計算公式為:

式(6)中,TP為預測和真實結果是頭部的數量;FN為預測結果不是頭部但真實結果是頭部的數量。
由表3可知,改進后的YOLOv3的mAP和Recall均高于YOLOv3,mAP提高3.55%,Recall提高4.58%。通過上述結果表明,改進后針對行人頭部的YOLOv3更大程度地涵蓋不同尺度的行人,避免行人身體之間的相互遮擋,兩種模型的測試結果對比如圖6所示。

圖6 兩種模型實際場景檢測效果對比
對YOLOv3和改進的YOLOv3使用1080p的MP4格式視頻進行圖像檢測速度測試,結果見表4。

表4 改進前后圖像檢測速度對比
以YOLOv3目標檢測算法為基礎,通過改進網絡結構和調整訓練數據集之前的聚類分析,設計一種基于計算機視覺的人流量檢測方法。本次實驗結果表明:此種方法能避免行人之間身體的相互遮擋,且有較高的檢測準確率與檢測速度,檢測頭部的平均準確率較檢測全身提高了3.55%,檢測速度每秒提高近26FPS,召回率提高4.55%,基本滿足人流量檢測需求。
將監控攝像頭的視頻流傳輸到邊緣端進行實時目標追蹤檢測,再到建立預警模型、熱力圖以及可視化圖表,最終實現人流量的實時監控預警,從而降低公共場所突發事件的人員傷亡,在此過程中如何進一步提高人流量檢測精度以及合理調度分配安保人員,將是下一步研究的重點。