古 訓,李江濤,傅澤偉,彭曉珊
(1.貴陽學院 電子信息工程學院,貴州 貴陽 550005;2.國家電網天津市電力公司高壓分公司,天津 300143)
隨著城市化進程的加快和人們跨區(qū)域交流的加大,人流量的識別檢測成為了當前重要研究課題之一。人流量識別檢測技術的進步可以提高現代社會的管理能力,如為方便管理學生出行,可對進出宿舍樓人流量進行統計;又如疫情期間,利用人流量識別統計技術可以為公園管理者提供實時數據,便于疫情期間合理管控人流量。
基于視頻流提取出特定幀進行訓練來獲取視頻背景,之后進行目標檢測、目標分割和目標識別操作,最后實現了行人跟蹤和人流量統計功能[1]?;诟倪M的Yolov3實現人體檢測功能,該檢測功能在提高準確度的前提下具有較好的速度優(yōu)勢和抗干擾性,并設計自適應特征匹配的行人識別技術,可以在復雜場景下提高自適應性[2]。利用深度學習進行密集人流量的統計,利用目標檢測和目標跟蹤算法,采用雙線法完成門口密集人流量識別,最終實現密集人流量的統計[3]。
基于以上文獻的研究,本文主要實現了基于Yolov5目標檢測算法和Deepsort目標跟蹤算法的人流量識別統計功能,進而針對人流量視頻進行幀識別率和總識別率分析。本文根據校園某些情景,利用算法實現了目標識別和跟蹤的功能,達到了人流量統計的效果。
由于統一并行架構CUDA(Compute Unified Device Architecture)具有極好的可拓展性和支持對資源的通用數據計算功能,本文在Windows10系統中采用python 3.9.9-CUDA版本,實現了基于深度學習的人流量統計。
Pytorch是一款基于Python的開源深度學習框架,被廣泛用于多種自然語言處理和計算機視覺應用程序中。Pytorch的特點為:(1)多功能模塊集合,Pytorch帶有特別開發(fā)的模塊,可與NLP、計算機視覺和語音處理等不同深度學習領域一起使用;(2)易于實現反向傳播,Pytorch支持自動微分,可以節(jié)省時間,并且可以減輕負擔,支持動態(tài)地更改代碼。
Pytorch的優(yōu)點在于簡潔、速度快及便于使用等,Pytorch的設計追求最少封裝方便實現相應功能、速度靈活和方便快捷。
Yolov5是一種目標檢測算法,早已被成功應用在對目標進行檢測的實際生活中。Yolov5可用在解決交通標志檢測算法存在的網絡復雜度高、計算量大、邊緣部署難度高等難題中,使用基于Yolov5的輕量化交通標志目標檢測算法,可使檢測速度更加穩(wěn)定,同時也滿足實時的交通標志檢測。如為解決在遙感圖像目標檢測任務中目標背景繁雜、難以識別且目標尺寸復雜的問題,可使用基于Yolov5的遙感圖像檢測優(yōu)化模型,該模型可以有效捕捉圖像特征,實現快速精確的目標定位。
Yolov5算法的思想是將目標檢測以回歸問題的方式去解決。它可以將待檢測區(qū)域和檢測階段結合起來,并將輸入劃分為若干個檢測窗格,其中每個格子都會形成不同長寬比例的若干個邊界框(Bounding Box)。若目標框的中心點處于某個范圍內,則此目標的檢測將由此窗格負責,與此同時也會預測出每個邊界框的位置信息、分類的概率還有檢測的置信度(confidence)。[4]
Yolov5算法由四部分組成,第一部分為輸入端,輸入端可以利用Mosaic數據增強、自適應初始錨框計算和圖片縮放等對圖像進行預處理。第二部分為主干網絡(Backbone),Backbone可以使用Focus結構、CSP(Cross Stage Partial)結構和SPP(Spatial Pyramid Pooling)池化金字塔結構提取檢測目標的特征信息。第三部分為頸部網絡(Neck),Neck可以使用FPN+PAN的特征金字塔結構,主要用于收集組合目標特征等。第四部分為檢測層(Prediction),它由損失函數和預測框篩選函數組成,可用于預測信息損失部分等。[5]
1.3.1輸入端
首先輸入端Mosaic數據增強參考CutMix數據增強的方式。自適應錨框計算,主要針對不同視頻的幀圖片集設定好初始長寬的錨框,再用預測的錨框和真實計算的錨框計算出兩者誤差,通過多次迭代Yolov5的網絡參數達到最優(yōu)的錨框計算。自適應縮放是指將不同長和寬的幀圖片統一縮放到標準尺寸,然后再加入整個幀數據集進行檢測處理。[6]
1.3.2Backbone
由Yolov5的網絡結構圖可知,Focus結構在Yolov5算法中起到切片操作。如圖1所示,經過切片操作后,再將特征圖進行卷積核的卷積操作,最后得到輸出。[6]
圖1 Focus結構圖
CSP(Cross Stage Partial)結構主要作用是減少冗余計算量和增強梯度。[6]CSP結構如圖2所示。
SPP模塊是空間金字塔模塊,它的作用是可以擴大感受野,[5]結構如圖3所示。
圖3 SPP結構圖
SPP模塊的作用為將輸入層的特征圖經過一個卷積模塊減半通道數,接著做三個不同卷積核的最大池下采樣,將池化結果與輸入特征圖按照通道進行拼接,合并得到的通道數為原來的兩倍,這樣的結果在于大大提高了感受野。[5]
1.3.3Neck
Neck部分主要采用FPN+PAN結構,FPN是自頂向下的,它可將特征信息通過上采樣的方式進行傳遞融合,得到可以進行預測的特征圖。PAN是自下向上的,它可將下層的特征信息通過下采樣的方式進行傳遞融合。FPN和PAN兩者相互結合,實現了不同的主干層對不同的檢測層進行特征融合。[6]
1.3.4Prediction
為實現目標檢測任務,它的損失函數一般為Classification Loss(分類損失函數)和Bounding Loss(回歸損失函數)這兩部分組成。Yolov5算法采用GLOU_LOSS作為Bounding Box的損失函數。[6]基于上述介紹Yolov5的網絡結構圖見圖4。
圖4 Yolov5結構圖
Deepsort算法是在Sort目標追蹤基礎上的改進算法,一般稱為在線實時追蹤SORT(Simple Online and Realtime Tracking)。SORT是一種實用的多目標跟蹤算法,采用匈牙利方法將圖像數據經過卡爾曼濾波器得到輸出,這種方法可以提高跟蹤精度和準確度,但SORT返回時帶有較多身份切換,若存在目標狀態(tài)估計不穩(wěn)定性高,關聯度量將變得不準確。為了克服上述缺點,Deepsort算法在實時目標追蹤時,可以提取目標的特征進行最優(yōu)匹配,可以改善存在遮擋情況下的目標追蹤效果,同時也可減少目標ID跳變的問題。[3]
Deepsort目標算法的流程為。(1)按照卡爾曼濾波器預測出軌跡Tracks;(2)使用匈牙利算法將預測的幀軌跡數據Tracks和當前幀數據的軌跡Detections組合進行匹配;(3)卡爾曼濾波器的更新。Deepsort目標算法是通過使用目標跟蹤算法得到的目標檢測框與上一步預測的目標跟蹤框的iou(交并比)進行輸入組合匹配。通過輸入到匈牙利算法來進行線性匹配,接著直接關聯幀中ID,目標的物體外觀位置就可以加入連接到幀間匹配的過程計算中,如果檢測目標在被遮擋時且目標在下一時刻又出現時,還可以繼續(xù)正確地匹配幀間ID。這可以有效解決檢測目標ID異常跳變的問題,方便實現持續(xù)跟蹤的目的。[8]圖5為Deepsort算法流程圖示。
圖5 Deepsort算法流程圖
基于Yolov5和Deepsort的優(yōu)點,擬結合目標檢測算法Yolov5實現識別統計功能,結合Deepsort算法實現目標跟蹤功能,統計數據得出算法的識別率。具體流程為:首先將Yolov5檢測器置于人流量視頻中進行檢測,接著將人流量視頻中的行人檢測結果作為Deepsort跟蹤器的實時輸入,最后得到人流量視頻的統計數據。具體的人流量檢測算法流程圖如圖6所示。[9]
圖6 人流量檢測算法流程圖
在windows10系統中的Yolov5平臺下實現人流量的檢測和計數功能。所拍視頻采用4800萬像素拍攝,視頻顯示格式1080P,錄制格式為MP4。
表1 人流量統計功能
為更好地驗證本文所提出的人流量識別算法的有效性,將以白天和夜晚兩個環(huán)境來分析識別率。在白天和夜晚不同的時間段和不同的地點,選擇合適的人流量視頻,統計出該算法的識別正確率和誤差率。白天人流量視頻以陽明路口和體育場為主要場景,而夜晚人流量視頻以體育場的人流量視頻為主要場景。
2.3.1陽明路口人流量統計分析
(1)針對陽明路口人流量視頻分析可知:在放學高峰期,人流量比平時大,同時存在行人遮擋重疊和行人速度過快的影響因素。如圖7所示,遮擋重疊造成識別誤差。
圖7 陽明路口人流量識別效果圖
根據所拍視頻的內容,以所拍視頻為正方向,上圖中從右往左走共有32人,從下往上走(由道路左側向右側移動)共有4人,從左往右走2人(其中此人騎著一輛電動車)。由此可以計數得出陽明路口進出人數大約為:38人。進行人流量統計操作之后顯示統計的人數為51人。
表2 陽明路口人數統計值
從表3可知,該陽明路口視頻人流量統計誤差率25%,正確率75%。其中誤差率計算為誤差人數/識別人數為25%,正確率計算為實際人數/識別人數為75%。
表3 陽明路口人流量正確率和誤差率
(2)陽明路口幀識別率的分析
如圖8所示,陽明路口每幀識別正確率和誤差率都出現了不穩(wěn)定狀態(tài),且正確率和誤差率上下波動。由表2可知,陽明路口人流量較大,且遮擋重疊現象較明顯,由此造成人流量識別率在每一幀時都較低。
圖8 陽明路口每幀識別率
2.3.2體育場人流量統計分析
(1)體育場人流量視頻在傍晚時分拍攝,如圖9所示存在拍攝時光線較暗、距離較遠、拍攝物體過小和人之間遮擋等幾點影響因素。如圖9中行人重疊只識別出一人;行人目標較小,特征識別時特征值不明顯無法識別出人;警示牌錯誤標記為人。
圖9 體育場人流量識別效果圖
從拍攝的視頻中可知,從圖9中得出在體育場中大約為12人,人流量統計的人數有8人。
表4 體育場人數統計值
由表5可知,體育場人流量統計誤差率33%,正確率67%。其中誤差率計算為誤差人數/識別人數為33%,正確率計算為實際人數/識別人數為67%。
表5 體育場人流量正確率和誤差率
基于白天各個階段的識別率分析數據,在識別過程中,深度學習算法將依據特征值來判斷檢測類別。體育場人流量識別時,傍晚光照低于中午光照,因而體育場人流量識別出現了一些錯判現象。
(2)體育場幀識別率的分析,由表4可知,體育場人流量視頻中人數比較固定,且存在遮擋、錯判等影響因素。如圖10所示,人流量識別正確率和誤差率都處于穩(wěn)定狀態(tài)。
圖10 體育場每幀識別率
(1)夜晚人流量統計分析,如圖11所示,光線暗淡造成非人物體的錯判,行人的重疊造成誤判率增大。除上述提到的兩種影響因素外,還存在另一個影響原因,即在識別過程中,光線的不連續(xù)極容易使其他物體間接性識別。從所拍攝的視頻中可知,從上圖中得出大約有7人,對人流量統計之后的人數有12人。
圖11 夜晚人流量識別效果圖
表6 夜晚人數統計值
由表7可知,體育場人流量統計誤差率42%,正確率58%。其中誤差率計算為誤差人數/識別人數為42%,正確率計算為實際人數/識別人數為58%。
表7 夜晚人流量正確率和誤差率
針對夜晚人流量識別統計分析,在利用深度學習算法進行識別時,若光照條件處于較差的情況下,深度學習的特征識別誤差率將大大增加。同時伴隨識別不穩(wěn)定現象的存在,夜晚的識別率將會降低很多。
(2)夜晚幀識別率的分析,在圖12的夜晚每幀識別率中,夜晚狀態(tài)時行人識別不穩(wěn)定,間歇性識別造成統計計數出現誤差,識別率下降。
圖12 夜晚每幀識別率
由于每個環(huán)境的特點和存在遮擋重疊、光線暗淡和間歇性識別等因素的影響,造成識別率不穩(wěn)定。由圖13可知,白天識別正確率穩(wěn)定在60%左右,夜晚的識別正確率穩(wěn)定在50%左右。而白天識別誤差率在40%左右,夜晚識別誤差率在50%左右。
圖13 人流量識別正確率和誤差率
綜上,在保證光照條件充足的條件下,識別率較高。但同時也存在如下影響因素,(1)行人的重疊遮擋;(2)間歇性識別造成間歇性統計;(3)行人目標較小,這些影響因素的存在導致識別率不高。其不確定因素的產生原因大致有:(1)行人移動速度快慢;(2)人與人之間的遮擋及人與物體的遮擋;(3)攝像頭像素參數存在差異;(4)光線差異,這些都會導致識別率發(fā)生變化。
研究主要基于Yolov5目標檢測算法和Deepsort目標跟蹤算法,完成了行人識別和人流量統計兩大功能,并對可能出現的諸如遮擋、重疊、光照強度等因素進行分析,選取我校陽明路口和體育場兩種場景進行實驗驗證。實驗結果顯示,所提出的基于Yolov5和Deepsort人流量檢測算法具有較好的識別和統計優(yōu)勢,行人識別計數有效識別率可達到75%。