何宇,李丹
(四川大學錦城學院計算機與軟件學院,四川成都,611371)
地鐵作為現如今最為流通的交通出現方式之一,已經成為了人們生活中必不可少的一部分。對于本文主要提出的問題,則是在地鐵的實時監控錄像中,識別行人的數目,實時反應地鐵上具體的人數情況,從而有利于選擇更好的出行方式。
針對于此,本文提出基于YOLOv5和DeepSort的算法,著重要實現的目標是如何保障在嘈雜的地鐵環境中保證行人能夠盡可能被正確識別檢測,提高檢測識別精確率。利用yolov5目標檢測算法和DeepSort算法結合,達到有效地提升行人的檢測精度。
YOLOv5是一種單階段目標檢測算法,該算法主要是在YOLOv4的基礎上添加了一些新的改進思路,使其速度與精度都得到了極大的性能提升。整個YOLOv5網絡結構空語分成四部分:輸入端、Backbone、Neck、Prediction。
輸入端的主要操作任務也就是在用戶輸入多個數據的同時需要進行各種數據增強,因此YOLOv5繼承了YOLOv4所使用的Mosaic數據增強方式,對圖片進行隨機組合縮放、隨機組合裁剪、隨機組合排布等多種方式進行隨機拼接,實現了既對數據集進行增強又同時解放了對于GPU的依賴[6]。YOLOv5針對不同的數據集,采用自定義不同長寬錨框的自適應錨框,同時運用自適應圖片縮放,達到數據增強的目的。
Backbone主要被劃分為了兩大結構:Focus和CSP,Focus結構就是yolov5新提出的一種結構,可以將原始的設定為608*608*3的圖片大小,經過切片后改變為304*304*12的特征結構圖,利用32個卷積核的卷積,得到304*304*32的圖片特征結構圖。CSP模塊借鑒之前CSPNet的網絡結構,由卷積層和X個Res unint模塊通過concate構成,每個CSP模塊前面的卷積核的大小都被設定成是3*3,stride=2,因此它們可以起到對圖片進行下采樣的作用,降低了內存的使用成本[5]。YOLOv5中的CSP結構如YOLOv4類似,但分別劃分了兩處不同的使用范圍,CSP1_X類型結構廣泛應用于現在Backbone主干網絡,另一種CSP2_X類型結構則廣泛應用于Neck中。

圖1
YOLOv5中的Neck網絡采用FPN+PAN的結構,FPN是自頂向下的,將高層的特征信息通過上采樣的方式進行傳遞融合,得到進行預測的特征圖,而PAN特征金字塔則自底向上傳達強定位特征,兩兩聯手,從不同的主干層對不同的檢測層進行參數聚合[6]。相較于YOLOv4其改進的部分在于,通過借鑒CSPnet網絡而設計CSP2網絡,進一步加強網絡特征融合。
目標檢測任務的損失函數一般由分類損失回歸函數和回歸損失函數兩個子部分組合構成,YOLOv5的Prediction中的端口損失采用了GIOU_Loss函數作為回歸損失函數,計算不同狀態下的GIOU的數值,解決了在邊界框不完全重合的問題;同時利用加權DIOU_nms實現非極大值抑制,抑制冗余框,只保留我們所需要的框,可以對被遮擋的物體進行更為有效地識別。
YOLOv5算法具有4個版本,具體包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四種,可根據自身對準確度和精確度的需求選擇不同版本,由于Yolov5s網絡最小,速度最少,AP精度也最低,所以本文算法的權重文件是基于YOLOv5s而建立的。
DeepSort是在整個Sort算法在對目標追蹤基礎上的改進,整體設計框架沒有大的修改,還是完全延續了卡爾曼濾波加匈牙利算法的設計思路,在這個算法基礎上又新增加了一個Deep Association Metric,此外還重新加入了外觀圖像信息以便于實現了如何在較長時間內對被遮擋的目標進行跟蹤時的問題。其主要特點之處在于,DeepSort加入了更多外觀特征信息,借用了新的ReID應用領域特征模型來快速提取外觀特征,減少了REID特征轉換的發生次數。
在跟蹤方面,DeepSort采用的級聯匹配算法,可以針對每一個檢測器都會分配一個跟蹤器,每個跟蹤器會設定一個time_since_update參數;對于運動信息和外觀信息的變換和模糊問題,利用馬氏距離與余弦距離計算;添加了深度學習ReID的模塊,有利于更好地區別不同的人物或物體。
DeepSort的運算完成流程,第一步依賴卡爾曼濾波器預測軌跡Tracks;第二步,使用匈牙利算法將通過預測軌跡得到的幀中軌跡數據tracks和當前幀中的軌跡detections組合進行匹配(包括級聯匹配和IOU匹配);第三步,卡爾曼算法濾波器的更新。DeepSort算法通過將使用目標跟蹤檢測的算法(如YOLO)計算得到的目標檢測框與之前預測的目標跟蹤框的iou(稱為交并比)進行輸入組合。輸入到匈牙利這個算法中進行線性分配來直接關聯這個幀中的ID,目標的物體外觀位置信息可以加入連接到幀間匹配的過程計算中,這樣在目標被物體遮擋但后續目標再次出現的實際情況下,還可以正確的來匹配這個幀間ID,在進行實時檢測目標追蹤過程中,可以改善在有遮擋目標情況下的實時目標自動追蹤檢測效果。同時,也大大減少了目標id之間跳變頻繁的問題,達到持續跟蹤的目的。
地鐵列車人流量的實時檢測往往需要受到各種因素的直接影響,比如根據天氣或者環境因素,采取自動網絡售票及電子檢票機等設備的實時通過人流能力以及地鐵列車實時輸送人流能力等。近年來,由于普通人出行頻率快速增長,地鐵客流量的目標檢測技術成為一大研究熱點,該研究方向對維持交通秩序,減少出行擁擠很大的意義。
此實驗模型可以實時觀測到進出地鐵的人流量,如圖2所示,該模型實時檢測三個數據量:實時客流總數,進出兩不同方向各自的數目,以及正在進入和正在離開的具體目標。

圖2 實時檢測圖像
本文采用的方法,是將yolov5的目標檢測封裝成了一個Person_detect類,通過它的detect方法可以檢測到視頻中的每一個行人目標。通過給定線條兩端的坐標在視頻畫面中設定一條基準線,以這條基準線為軸,判斷行人的前進方向,同時確定進出兩個方向的人數。同時創建跟蹤器,開始對yolov5檢測出的目標進行跟蹤,該思路可以運用于對于地鐵當中某些可疑人員進行實時追蹤。
本文中算法對行人人流量實行了兩種判斷模式,一、以視頻前后兩幀的中心點所連成的直線和預先設定的基準線相交,如若此時行人的目標位置錨點以超過該交點,則判定該行人已經越線,進入地鐵站;二、利用了三角形的正切與反正切原理,使用math模塊中的degrees方法來判斷,如果行人所處錨點與上述交點所連線成的角度大于零,說明是向上走,反之則為向下走。
使用yolov5實現行人檢測,deepsort進行跟蹤,在遮擋的情況下能較好的防止reid模型誤識別,做到可以實時觀察到具體到某個人物進入地鐵監控范圍。
該應用可以廣泛應用于各大地鐵的實時擁擠情況,可以提供人們實時地鐵擁擠信息,利于群眾選擇更為便捷方便的出行方式。
本實驗使用的數據集是一個位于地鐵閘門通過口附近的一段實時監控錄像,該數據集中同時時間段的人數眾多,充分體現了地鐵人流量的現狀,可提供多種目標種類和位置信息,可保證訓練的數據盡可能多以及數據集集的普遍性,方便進行實時監控或錄制。
從實驗結果上看,實驗中使用yolov5 網絡和DeepSort算法模型進行訓練,訓練效果如圖3所示。當兩人正在通過黃線,但實時檢測只判定了一人正在通過,且存在有人物距離過近未被標識的情況。但總體而言,可看出yolov5 算法和DeepSort算法對于目標檢測與跟蹤的效果準確率處于較為可觀的狀態,能夠較為準確的檢測識別出正確的人物,但仍需要進一步訓練以提高準確率。后續可嘗試對訓練參數進行修改或改變權重文件,且yolov5 的損失函數并不是現在最優的,可替換為更為準確地函數。

圖3 YOLOv5s loss函數圖像
本次實驗的訓練環境:利用谷歌云盤提供的環境,CPU為 Intel i7 7800X,GPU 為 Tesla T4,內存為 16 G,操作系統為 ubuntu 18.04 64位 安裝CUDA10.0庫文件,開發語言為 Python,Pytorch 框架。
首先輸入視頻數據,使用yolov5 檢測算法,通過對相應人物識別訓練模型的訓練,得到訓練好的檢測模型,測試相關的行人標識,選擇置信度最高的邊框輸出,以便完成基于yolov5 的行人目標檢測這一目標。再通過deep sort跟蹤目標,實時監控每個物體錨點的移動,最后輸出視頻。
本文圍繞如何利用 yolov5 網絡模型和DeepSort算法來實現地鐵場景下的對行人數量的檢測,介紹yolov5的網絡模型,通過實驗結果來說明yolov5 可以保證相應目標的檢測得以實現,且檢測精確率也較為恰當。但事實結果表明該模型的檢測精確度有所提高,但仍然不夠完善,如圖2所示,仍存在多個目標識別為一種目標的現象。如何進一步提高目標檢測的準確率,使其能應用到更多的領域中,是需要進一步探索的問題。