何宇,李丹
(四川大學(xué)錦城學(xué)院計(jì)算機(jī)與軟件學(xué)院,四川成都,611371)
地鐵作為現(xiàn)如今最為流通的交通出現(xiàn)方式之一,已經(jīng)成為了人們生活中必不可少的一部分。對于本文主要提出的問題,則是在地鐵的實(shí)時(shí)監(jiān)控錄像中,識別行人的數(shù)目,實(shí)時(shí)反應(yīng)地鐵上具體的人數(shù)情況,從而有利于選擇更好的出行方式。
針對于此,本文提出基于YOLOv5和DeepSort的算法,著重要實(shí)現(xiàn)的目標(biāo)是如何保障在嘈雜的地鐵環(huán)境中保證行人能夠盡可能被正確識別檢測,提高檢測識別精確率。利用yolov5目標(biāo)檢測算法和DeepSort算法結(jié)合,達(dá)到有效地提升行人的檢測精度。
YOLOv5是一種單階段目標(biāo)檢測算法,該算法主要是在YOLOv4的基礎(chǔ)上添加了一些新的改進(jìn)思路,使其速度與精度都得到了極大的性能提升。整個(gè)YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)空語分成四部分:輸入端、Backbone、Neck、Prediction。
輸入端的主要操作任務(wù)也就是在用戶輸入多個(gè)數(shù)據(jù)的同時(shí)需要進(jìn)行各種數(shù)據(jù)增強(qiáng),因此YOLOv5繼承了YOLOv4所使用的Mosaic數(shù)據(jù)增強(qiáng)方式,對圖片進(jìn)行隨機(jī)組合縮放、隨機(jī)組合裁剪、隨機(jī)組合排布等多種方式進(jìn)行隨機(jī)拼接,實(shí)現(xiàn)了既對數(shù)據(jù)集進(jìn)行增強(qiáng)又同時(shí)解放了對于GPU的依賴[6]。YOLOv5針對不同的數(shù)據(jù)集,采用自定義不同長寬錨框的自適應(yīng)錨框,同時(shí)運(yùn)用自適應(yīng)圖片縮放,達(dá)到數(shù)據(jù)增強(qiáng)的目的。
Backbone主要被劃分為了兩大結(jié)構(gòu):Focus和CSP,Focus結(jié)構(gòu)就是yolov5新提出的一種結(jié)構(gòu),可以將原始的設(shè)定為608*608*3的圖片大小,經(jīng)過切片后改變?yōu)?04*304*12的特征結(jié)構(gòu)圖,利用32個(gè)卷積核的卷積,得到304*304*32的圖片特征結(jié)構(gòu)圖。CSP模塊借鑒之前CSPNet的網(wǎng)絡(luò)結(jié)構(gòu),由卷積層和X個(gè)Res unint模塊通過concate構(gòu)成,每個(gè)CSP模塊前面的卷積核的大小都被設(shè)定成是3*3,stride=2,因此它們可以起到對圖片進(jìn)行下采樣的作用,降低了內(nèi)存的使用成本[5]。YOLOv5中的CSP結(jié)構(gòu)如YOLOv4類似,但分別劃分了兩處不同的使用范圍,CSP1_X類型結(jié)構(gòu)廣泛應(yīng)用于現(xiàn)在Backbone主干網(wǎng)絡(luò),另一種CSP2_X類型結(jié)構(gòu)則廣泛應(yīng)用于Neck中。
圖1
YOLOv5中的Neck網(wǎng)絡(luò)采用FPN+PAN的結(jié)構(gòu),F(xiàn)PN是自頂向下的,將高層的特征信息通過上采樣的方式進(jìn)行傳遞融合,得到進(jìn)行預(yù)測的特征圖,而PAN特征金字塔則自底向上傳達(dá)強(qiáng)定位特征,兩兩聯(lián)手,從不同的主干層對不同的檢測層進(jìn)行參數(shù)聚合[6]。相較于YOLOv4其改進(jìn)的部分在于,通過借鑒CSPnet網(wǎng)絡(luò)而設(shè)計(jì)CSP2網(wǎng)絡(luò),進(jìn)一步加強(qiáng)網(wǎng)絡(luò)特征融合。
目標(biāo)檢測任務(wù)的損失函數(shù)一般由分類損失回歸函數(shù)和回歸損失函數(shù)兩個(gè)子部分組合構(gòu)成,YOLOv5的Prediction中的端口損失采用了GIOU_Loss函數(shù)作為回歸損失函數(shù),計(jì)算不同狀態(tài)下的GIOU的數(shù)值,解決了在邊界框不完全重合的問題;同時(shí)利用加權(quán)DIOU_nms實(shí)現(xiàn)非極大值抑制,抑制冗余框,只保留我們所需要的框,可以對被遮擋的物體進(jìn)行更為有效地識別。
YOLOv5算法具有4個(gè)版本,具體包括:YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四種,可根據(jù)自身對準(zhǔn)確度和精確度的需求選擇不同版本,由于Yolov5s網(wǎng)絡(luò)最小,速度最少,AP精度也最低,所以本文算法的權(quán)重文件是基于YOLOv5s而建立的。
DeepSort是在整個(gè)Sort算法在對目標(biāo)追蹤基礎(chǔ)上的改進(jìn),整體設(shè)計(jì)框架沒有大的修改,還是完全延續(xù)了卡爾曼濾波加匈牙利算法的設(shè)計(jì)思路,在這個(gè)算法基礎(chǔ)上又新增加了一個(gè)Deep Association Metric,此外還重新加入了外觀圖像信息以便于實(shí)現(xiàn)了如何在較長時(shí)間內(nèi)對被遮擋的目標(biāo)進(jìn)行跟蹤時(shí)的問題。其主要特點(diǎn)之處在于,DeepSort加入了更多外觀特征信息,借用了新的ReID應(yīng)用領(lǐng)域特征模型來快速提取外觀特征,減少了REID特征轉(zhuǎn)換的發(fā)生次數(shù)。
在跟蹤方面,DeepSort采用的級聯(lián)匹配算法,可以針對每一個(gè)檢測器都會分配一個(gè)跟蹤器,每個(gè)跟蹤器會設(shè)定一個(gè)time_since_update參數(shù);對于運(yùn)動信息和外觀信息的變換和模糊問題,利用馬氏距離與余弦距離計(jì)算;添加了深度學(xué)習(xí)ReID的模塊,有利于更好地區(qū)別不同的人物或物體。
DeepSort的運(yùn)算完成流程,第一步依賴卡爾曼濾波器預(yù)測軌跡Tracks;第二步,使用匈牙利算法將通過預(yù)測軌跡得到的幀中軌跡數(shù)據(jù)tracks和當(dāng)前幀中的軌跡detections組合進(jìn)行匹配(包括級聯(lián)匹配和IOU匹配);第三步,卡爾曼算法濾波器的更新。DeepSort算法通過將使用目標(biāo)跟蹤檢測的算法(如YOLO)計(jì)算得到的目標(biāo)檢測框與之前預(yù)測的目標(biāo)跟蹤框的iou(稱為交并比)進(jìn)行輸入組合。輸入到匈牙利這個(gè)算法中進(jìn)行線性分配來直接關(guān)聯(lián)這個(gè)幀中的ID,目標(biāo)的物體外觀位置信息可以加入連接到幀間匹配的過程計(jì)算中,這樣在目標(biāo)被物體遮擋但后續(xù)目標(biāo)再次出現(xiàn)的實(shí)際情況下,還可以正確的來匹配這個(gè)幀間ID,在進(jìn)行實(shí)時(shí)檢測目標(biāo)追蹤過程中,可以改善在有遮擋目標(biāo)情況下的實(shí)時(shí)目標(biāo)自動追蹤檢測效果。同時(shí),也大大減少了目標(biāo)id之間跳變頻繁的問題,達(dá)到持續(xù)跟蹤的目的。
地鐵列車人流量的實(shí)時(shí)檢測往往需要受到各種因素的直接影響,比如根據(jù)天氣或者環(huán)境因素,采取自動網(wǎng)絡(luò)售票及電子檢票機(jī)等設(shè)備的實(shí)時(shí)通過人流能力以及地鐵列車實(shí)時(shí)輸送人流能力等。近年來,由于普通人出行頻率快速增長,地鐵客流量的目標(biāo)檢測技術(shù)成為一大研究熱點(diǎn),該研究方向?qū)S持交通秩序,減少出行擁擠很大的意義。
此實(shí)驗(yàn)?zāi)P涂梢詫?shí)時(shí)觀測到進(jìn)出地鐵的人流量,如圖2所示,該模型實(shí)時(shí)檢測三個(gè)數(shù)據(jù)量:實(shí)時(shí)客流總數(shù),進(jìn)出兩不同方向各自的數(shù)目,以及正在進(jìn)入和正在離開的具體目標(biāo)。
圖2 實(shí)時(shí)檢測圖像
本文采用的方法,是將yolov5的目標(biāo)檢測封裝成了一個(gè)Person_detect類,通過它的detect方法可以檢測到視頻中的每一個(gè)行人目標(biāo)。通過給定線條兩端的坐標(biāo)在視頻畫面中設(shè)定一條基準(zhǔn)線,以這條基準(zhǔn)線為軸,判斷行人的前進(jìn)方向,同時(shí)確定進(jìn)出兩個(gè)方向的人數(shù)。同時(shí)創(chuàng)建跟蹤器,開始對yolov5檢測出的目標(biāo)進(jìn)行跟蹤,該思路可以運(yùn)用于對于地鐵當(dāng)中某些可疑人員進(jìn)行實(shí)時(shí)追蹤。
本文中算法對行人人流量實(shí)行了兩種判斷模式,一、以視頻前后兩幀的中心點(diǎn)所連成的直線和預(yù)先設(shè)定的基準(zhǔn)線相交,如若此時(shí)行人的目標(biāo)位置錨點(diǎn)以超過該交點(diǎn),則判定該行人已經(jīng)越線,進(jìn)入地鐵站;二、利用了三角形的正切與反正切原理,使用math模塊中的degrees方法來判斷,如果行人所處錨點(diǎn)與上述交點(diǎn)所連線成的角度大于零,說明是向上走,反之則為向下走。
使用yolov5實(shí)現(xiàn)行人檢測,deepsort進(jìn)行跟蹤,在遮擋的情況下能較好的防止reid模型誤識別,做到可以實(shí)時(shí)觀察到具體到某個(gè)人物進(jìn)入地鐵監(jiān)控范圍。
該應(yīng)用可以廣泛應(yīng)用于各大地鐵的實(shí)時(shí)擁擠情況,可以提供人們實(shí)時(shí)地鐵擁擠信息,利于群眾選擇更為便捷方便的出行方式。
本實(shí)驗(yàn)使用的數(shù)據(jù)集是一個(gè)位于地鐵閘門通過口附近的一段實(shí)時(shí)監(jiān)控錄像,該數(shù)據(jù)集中同時(shí)時(shí)間段的人數(shù)眾多,充分體現(xiàn)了地鐵人流量的現(xiàn)狀,可提供多種目標(biāo)種類和位置信息,可保證訓(xùn)練的數(shù)據(jù)盡可能多以及數(shù)據(jù)集集的普遍性,方便進(jìn)行實(shí)時(shí)監(jiān)控或錄制。
從實(shí)驗(yàn)結(jié)果上看,實(shí)驗(yàn)中使用yolov5 網(wǎng)絡(luò)和DeepSort算法模型進(jìn)行訓(xùn)練,訓(xùn)練效果如圖3所示。當(dāng)兩人正在通過黃線,但實(shí)時(shí)檢測只判定了一人正在通過,且存在有人物距離過近未被標(biāo)識的情況。但總體而言,可看出yolov5 算法和DeepSort算法對于目標(biāo)檢測與跟蹤的效果準(zhǔn)確率處于較為可觀的狀態(tài),能夠較為準(zhǔn)確的檢測識別出正確的人物,但仍需要進(jìn)一步訓(xùn)練以提高準(zhǔn)確率。后續(xù)可嘗試對訓(xùn)練參數(shù)進(jìn)行修改或改變權(quán)重文件,且yolov5 的損失函數(shù)并不是現(xiàn)在最優(yōu)的,可替換為更為準(zhǔn)確地函數(shù)。
圖3 YOLOv5s loss函數(shù)圖像
本次實(shí)驗(yàn)的訓(xùn)練環(huán)境:利用谷歌云盤提供的環(huán)境,CPU為 Intel i7 7800X,GPU 為 Tesla T4,內(nèi)存為 16 G,操作系統(tǒng)為 ubuntu 18.04 64位 安裝CUDA10.0庫文件,開發(fā)語言為 Python,Pytorch 框架。
首先輸入視頻數(shù)據(jù),使用yolov5 檢測算法,通過對相應(yīng)人物識別訓(xùn)練模型的訓(xùn)練,得到訓(xùn)練好的檢測模型,測試相關(guān)的行人標(biāo)識,選擇置信度最高的邊框輸出,以便完成基于yolov5 的行人目標(biāo)檢測這一目標(biāo)。再通過deep sort跟蹤目標(biāo),實(shí)時(shí)監(jiān)控每個(gè)物體錨點(diǎn)的移動,最后輸出視頻。
本文圍繞如何利用 yolov5 網(wǎng)絡(luò)模型和DeepSort算法來實(shí)現(xiàn)地鐵場景下的對行人數(shù)量的檢測,介紹yolov5的網(wǎng)絡(luò)模型,通過實(shí)驗(yàn)結(jié)果來說明yolov5 可以保證相應(yīng)目標(biāo)的檢測得以實(shí)現(xiàn),且檢測精確率也較為恰當(dāng)。但事實(shí)結(jié)果表明該模型的檢測精確度有所提高,但仍然不夠完善,如圖2所示,仍存在多個(gè)目標(biāo)識別為一種目標(biāo)的現(xiàn)象。如何進(jìn)一步提高目標(biāo)檢測的準(zhǔn)確率,使其能應(yīng)用到更多的領(lǐng)域中,是需要進(jìn)一步探索的問題。