李繼秀,李嘯天,劉子儀
(西南交通大學 唐山研究生院,唐山 063016)
在各大城市公共交通系統(tǒng)中,隨著人口密度的不竭增長,城市公共交通系統(tǒng)經(jīng)常出現(xiàn)滿載現(xiàn)象.乘客進出公交車的人數(shù)信息是控制和管理公交車交通系統(tǒng)非常重要的一環(huán).早期計數(shù)的方法大部分為人工計數(shù),不僅耗時長,效率低下,而且消耗大量的人力物力,加重交通系統(tǒng)運營成本.深度卷積神經(jīng)網(wǎng)絡的發(fā)展在特征提取上給視頻監(jiān)控下的交通控制帶來了驚人的便捷,可以端對端訓練公交車視頻監(jiān)控場景下人群計數(shù)算法模型,省去了前景分割和人為地設計和提取特征等步驟,通過神經(jīng)網(wǎng)絡多層卷積之后得到的高層特征,能使得人群計數(shù)算法的功能愈加卓越,增強了人數(shù)統(tǒng)計數(shù)目的可信度.因此,本文提出基于深度卷積神經(jīng)網(wǎng)絡技術的公交車視頻監(jiān)控場景下的人數(shù)統(tǒng)計系統(tǒng),給公交車管理人員合理地調度車輛提供參考.
在許多基于視頻圖像處理的人流量統(tǒng)計技術中,根據(jù)檢測模塊的不同,可以分為人頭檢測[1,2]、頭肩檢測[3,4]和全身檢測[5].近些年,又發(fā)展了運用卷積神經(jīng)網(wǎng)絡[2,6]實現(xiàn)人流量統(tǒng)計.公交車的視頻監(jiān)控場景下進行人數(shù)統(tǒng)計主要有三種:基于差分統(tǒng)計的公交車人流量統(tǒng)計[7,8]、基于計數(shù)線法和閾值法的公交車人流量統(tǒng)計[9]和基于使用塊運動功能的公交車人流量統(tǒng)計[1].
本課題的難點有三:首先,所針對的公交車視頻數(shù)據(jù)分辨率較低(352×288).且由視頻獲取的視頻幀圖像往往存在運動模糊的缺點.其次,攝像頭角度覆蓋范圍廣.最后,本課題攝像頭角度與已知文獻中的公交車攝像頭角度有較大區(qū)別,傳統(tǒng)過線計數(shù)統(tǒng)計的方法無法適用本課題.本論文利用 SSD (Single Shot Detector)深度卷積神經(jīng)網(wǎng)絡模型進行人頭目標檢測,SORT (Simple Online and Real-time Tracking)目標追蹤算法實現(xiàn)人頭的多目標追蹤,跨區(qū)域人群計數(shù)方法統(tǒng)計公交車下車人數(shù).系統(tǒng)準確率達到78.38%,實現(xiàn)了基于深度卷積神經(jīng)網(wǎng)絡模型實現(xiàn)公交車監(jiān)控場景下的人數(shù)統(tǒng)計.
基于深度卷積神經(jīng)網(wǎng)絡算法實現(xiàn)公交車視頻監(jiān)控場景下的人群數(shù)量統(tǒng)計,并實現(xiàn)一個監(jiān)控系統(tǒng),對人群數(shù)量和人群密度實施實時監(jiān)控、數(shù)據(jù)剖析.公交車視頻監(jiān)控場景下的人數(shù)統(tǒng)計的系統(tǒng)框架如圖1所示.主要是三大部分:公交車人頭目標檢測、對人頭運動軌跡進行目標跟蹤、跨區(qū)域人數(shù)統(tǒng)計.
圖1 系統(tǒng)框架
本章首先闡述數(shù)據(jù)集的分析和處理,然后運用YOLO (You Only Look Once)兩個不同的版本和 Faster-RCNN (Faster Region based Convolutional Neural Network)以及SSD目標跟蹤算法對公交車乘客進行全身檢測.然而在公交車這一特定視頻監(jiān)控場景空間里,由于攝像頭涉及空間狹小,行人之間遮擋嚴重,效果并不理想,漏檢率和誤檢率較高.故綜合考慮,本論文目標檢測采取運用Caffe-SSD網(wǎng)絡模型進行人頭檢測的方法.再利用SORT目標追蹤算法實現(xiàn)人頭的多目標追蹤,最后結合跨線人群計數(shù)方法統(tǒng)計公交車下車人數(shù).
輸入視頻源,使用OpenCV計算機視覺庫的相關API庫,來對輸入的200個原始視頻幀率為15FPS的視頻文件按每秒抽取一幀的方式切幀,得到公交車后門攝像頭所能覆蓋區(qū)域的306 712張圖片,圖片的分辨率是352×288.圖片涉及多種場景,包括白天、黑夜;涉及多種人群密度,包括擁擠、疏散等.
為了驗證對乘客進行全身檢測的可行性,本系統(tǒng)首先分別使用不同深度神經(jīng)網(wǎng)絡模型,如YOLO[10]模型,Faster-RCNN[11]模型,SSD[12]模型,設置置信度均為50%,對本論文使用的公交車上下車數(shù)據(jù)進行目標檢測.檢測結果如圖2所示,圖2(a)是 YOLOv1-darknet網(wǎng)絡模型對行人進行全身檢測的檢測結果,由圖可知,檢測結果較準確,但系統(tǒng)識別框內(nèi)為“person”類的概率較低,置信度太低.圖2(b)是 YOLOv3-darknet模型檢測結果,由圖可知,識別框內(nèi)為“person”類的概率較高,但框中把兩個人識別為同一人.圖2(c)是VGG+Faster-RCNN模型檢測結果.識別框內(nèi)識別框內(nèi)為“person”類的概率較高,但把背景中的不是“person”的類別識別成了“person”類,誤檢率較高.圖2(d)是使用 SSD 模型對人數(shù)較少情況進行全身檢測的檢測結果,圖2(e)是SSD模型對人數(shù)較多情況進行全身檢測的檢測結果.由檢測結果可知,SSD模型無論在哪種人群密度下,都能較準確識別出車中所有乘客,但全身檢測面積太大,不利于后續(xù)的目標跟蹤和人群計數(shù).這是本論文選擇使用SSD模型作為目標檢測的原因之一.
由圖2所知,圖片中的矩形框是模型識別出的乘客,雖然這些深度學習網(wǎng)絡模型都能在一定程度上識別出乘客,但由于公交車攝像頭覆蓋區(qū)域空間狹小,乘客之間存在嚴重遮擋,還有視頻抽幀存在的運動模糊等問題.對乘客進行全身檢測,漏檢率和誤檢率都很高.考慮攝像頭角度問題和乘客頭部面積較小且遮擋不嚴重等特征,同時為了便于實現(xiàn)目標幀之間的乘客追蹤和人群計數(shù).因此本論文目標檢測采用SSD深度神經(jīng)網(wǎng)絡模型對乘客進行頭部檢測.經(jīng)過手工標注數(shù)據(jù)集,本論文最終選取了10 654張圖像用于標注,其中70%的數(shù)據(jù)集用于訓練,30%的數(shù)據(jù)集用于測試.
圖2 不同網(wǎng)絡模型對乘客進行全身檢測結果
SSD[12]深度學習目標檢測算法是在YOLO[10]算法上改進而來,基于端對端方法,無區(qū)域提名,使用 VGG-16-Atrous作為基礎網(wǎng)絡,沿用了YOLO中直接回歸bbox和分類概率的方法,SSD與YOLO差異之處是除了在選取的5個特征圖上進行預測,還有在最終特征圖上做目標檢測.SSD還參考了Faster R-CNN目標檢測算法,大批使用anchor來提升識別精確度,應用全圖全部位置的多尺度區(qū)域特征并進行回歸.由于結合這兩種結構,SSD 綜合了 Faster R-CNN 的 anchor box 和YOLO端對端的單個神經(jīng)網(wǎng)絡檢測思路.所以SSD能保持較高的識別準確度和識別速度.
相比YOLO模型,SSD模型不僅在檢測速度上有了很大的提升,而且檢測識別精確度也有所加強.SSD是YOLO的多尺度版本,由于YOLO對小目標檢測效果不好,所以SSD在不同的feature map上分割成grid然后采用類似RPN的方式做回歸,較好地解決了這一問題,因此本論文選擇的目標檢測算法為SSD算法.
本論文首先創(chuàng)建VOC格式的數(shù)據(jù)集,所有人頭數(shù)據(jù)集均為手工標注,耗費了大量的人力.難點在于將自己的數(shù)據(jù)集整合到SSD卷積神經(jīng)網(wǎng)絡中,以期提高實驗性能.數(shù)據(jù)集有多種種類,如JPG圖像、帶有數(shù)據(jù)標注的XML文件、帶有圖像信息和標注圖像坐標等信息的TXT文件.文件歸類、訓練集和測試集分別處理,并將數(shù)據(jù)集轉換為LMDB格式.接著需要修改卷積神經(jīng)網(wǎng)絡結構代碼中相關路徑;修改Max_iter,分別為4000和8000,即訓練和測試的迭代次數(shù);修改Batch_size,本文設為 16,既能較好提高內(nèi)存利用率,又能使修正方向得到較好的收斂;修改學習率,使得學習率隨著訓練幀數(shù)的變化而變化,防止過擬化;設置置信度為50%,當目標檢測結果在置信區(qū)間內(nèi),就能檢測出來;最后是設置了類的數(shù)量,本文只需用到一個類,故num_class設置為一加上類別數(shù)等于二.在VGG16+SSD網(wǎng)絡結構的基礎上,結合本論文使用的公交車人頭檢測數(shù)據(jù)集,進行了訓練和測試.參考VGG16+SSD原文的網(wǎng)絡框架,配置網(wǎng)絡框架環(huán)境,讀取數(shù)據(jù)集中驗證集和測試集的數(shù)據(jù).訓練過程可視化結果如下:
(1)訓練過程中迭代 40 000 次,準確率呈曲線增長,后逐漸平緩,并逐漸穩(wěn)定在84.18%左右.訓練迭代40 000次準確率過程變化圖如圖3(a)所示;訓練過程中迭代 80 000 次,準確率在 84.20% 附近波動,最終準確率為84.22%,比迭代40 000次的準確率高了0.04%.訓練迭代80 000次,準確率過程變化圖如圖3(b)所示.
(2)為了獲得更好的訓練效果,迭代 40 000 次訓練過程中,學習率呈梯狀逐漸減小,迭代 40 000 次的學習率變化如圖4(a)所示;迭代 40 000 次到 80 000 次的學習率都是 0.000 000 01,如圖4(b)所示.
(3)迭代 40 000 次訓練過程中,loss 函數(shù)的值呈曲線逐漸減小,并漸漸穩(wěn)定.在訓練過程中l(wèi)oss丟失變化圖如圖5(a)所示;迭代 40 000 次到 80 000 次訓練過程中,loss丟失值在 3 附近波動,和迭代 40 000 次效果差不多.在訓練過程中l(wèi)oss丟失變化圖如圖5(b)所示.
本論文使用的目標追蹤算法:SORT目標追蹤算法[13].SORT目標追蹤算法是一個通過對MOT基準進行測試來實現(xiàn)的基于深度學習的多目標追蹤算法.盡管SORT目標追蹤算法只是簡單的結合了卡爾曼濾波器追蹤算法和匈牙利跟蹤算法,但是卻能有效將對象與聯(lián)機和實時應用程序關聯(lián)起來.同時又由于本論文使用的SORT算法方法簡單,復雜度低,所以速度性能不錯,較好地協(xié)調了精度和速度,算法實時性好,能夠實現(xiàn)在線更新.比其他在線追蹤器要快20倍左右.在本章中,由于基于CNN的檢測器的靈活性,它自然可以推廣到公交車頭部對象類.因而該方法適用于在公交車視頻監(jiān)控場景下對乘客進行頭部跟蹤.
圖3 訓練過程準確率變化
本論文運用了跨區(qū)域人群計數(shù)方法來做人流量統(tǒng)計.算法的核心思想是通過劃定一個矩形區(qū)域,也就是劃線.如果框內(nèi)有人,結合目標跟蹤,如果目標運動N個像素點后消失,或人本不在框內(nèi),等待進入框內(nèi)后,運動M個像素點后消失,上下車人數(shù)就加一.本文的人群計數(shù)算法增加了判斷功能,也就是誤檢的情況.誤檢的判斷條件為:是否小于60個像素點.最終確定的計數(shù)算法的一些關鍵約束:行人在Y方向運動的距離閾值設置為25,劃線檢測的位置設置為85.本論文跨線人群計數(shù)技術的流程圖如圖6所示.
本文基于卷積神經(jīng)網(wǎng)絡的人頭檢測訓練過程中,所使用的數(shù)據(jù)集包含多種人流量情況和不同的公交車行車環(huán)境,如圖7所示.保留置信度在 50%,模型每訓練10張,記錄一次輸出結果.訓練總時長達50小時,記錄了模型迭代 40 000 次和迭代 80 000 次的結果.設置訓練過程中圖像的高為352,寬為288,每次訓練的圖像數(shù)為16張,為了防止模型過擬化,所以學習率隨著訓練圖像的增多,要逐漸減少.本系統(tǒng)目標檢測無需分類,只有一個類.用于訓練的數(shù)據(jù)集包括測量環(huán)境變化和乘客數(shù)量變化等多種情況,如圖7(a)-(d)所示,SSD網(wǎng)絡模型訓練本論文使用的數(shù)據(jù)集的檢測結果如圖8所示,人頭目標檢測準確率約為84.22%.圖8(a)是乘客比較稀疏的檢測結果,雖然大部分人頭都檢測到了,但仍然存在一定的漏檢.圖8(b)是乘客比較密集的檢測結果,幾乎圖片中所有的人頭都檢測到了.圖8(c)是比較稀疏且光照環(huán)境為黑夜下的檢測,檢測結果比較準確,只有一個人頭沒有檢測到.圖8(d)是光照環(huán)境為黑夜,但漏檢率較高的情況.綜上所知,本系統(tǒng)公交車人頭檢測適用于各種光照環(huán)境.
圖4 訓練過程中學習率的設定
圖5 訓練過程中 loss丟失變化圖
圖6 跨線人群計數(shù)流程圖
本文對數(shù)據(jù)進行了訓練集、測試集進行了公交車人頭檢測.使用的檢測架構是Caffe-SSD深度神經(jīng)網(wǎng)絡模型,人頭檢測結果準確率約為84.22%.再由SORT目標跟蹤算法集中處理幀到幀之間的關聯(lián),實現(xiàn)人頭檢測目標的跟蹤.整合公交車人頭檢測、SORT目標跟蹤和本論文使用的感興趣區(qū)域計數(shù)方法后,就完成了基于深度卷積神經(jīng)網(wǎng)絡的公交車人數(shù)統(tǒng)計系統(tǒng).由于每個視頻都包括很多下車片段,故隨機抽取了三個視頻樣本,運行速率等于運行總幀數(shù)和運行時間的比值,視頻準確率的計算方法等于時間段內(nèi)檢測人數(shù)和實際下車人數(shù)的比值.三段視頻運行速率和準確率信息表如表1所示,得出實驗結果:本論文的公交車人數(shù)統(tǒng)計的系統(tǒng)準確率約為78.38%,運行速率約為每秒識別19.79幀.
人數(shù)稀疏情況下的目標跟蹤和人數(shù)統(tǒng)計的追蹤效果如圖9(a)-(f)所示,這是比較有代表性的一組照片.是實現(xiàn)目標跟蹤,以及乘客一旦下車就進行的計數(shù)的效果連幀中能表現(xiàn)出下車過程的抽幀.圖中由點連成的曲線是乘客的運動軌跡,圖像左上角數(shù)字是當前視頻的下車人數(shù),圖像中的兩條橫線是越區(qū)域人數(shù)統(tǒng)計劃定的矩形框,人頭上的數(shù)字是視頻中系統(tǒng)創(chuàng)建的第N條軌跡.可以看到乘客人頭形心中點離開矩形框后幾幀內(nèi),下車人數(shù)加一.
人數(shù)擁擠情況下的目標跟蹤和人數(shù)統(tǒng)計的追蹤效果如圖10(a)-(f)所示,是檢測效果連幀中能表現(xiàn)出下車過程的抽幀.該視頻片段中,上一次下車的人數(shù)共有4人,故下車人數(shù)統(tǒng)計之前,左上角的數(shù)字即為4.圖10(a)和圖10(b)是乘客開始下車,圖10(c)是第一個人下車后,左上角下車人數(shù)加一;圖10(d)是第二個人下車后,下車人數(shù)再加一.接下來的檢測效果幀都是乘客下車,人數(shù)就自動加一.圖10(e)是該下車片段的第40幀,可以看到左上角的數(shù)字由剛開始的4變成了11,圖10(f)中公交車開始關門,本次下車人數(shù)統(tǒng)計結束,共統(tǒng)計到7名乘客下車,實際下車人數(shù)為8名,可見系統(tǒng)有較高準確率.
黑暗行車環(huán)境情況下的目標跟蹤和人數(shù)統(tǒng)計的追蹤效果如圖11(a)-(f)所示.由于本論文使用的所有視頻數(shù)據(jù)中,黑暗行車環(huán)境數(shù)據(jù)本不多,而黑暗行車環(huán)境下乘客下車的數(shù)據(jù)為零,故只能在圖11系列圖片中看到系統(tǒng)檢測到乘客人頭,并對乘客人頭進行追蹤的檢測效果.
圖7 數(shù)據(jù)集的多樣性
圖8 訓練SSD網(wǎng)絡模型后的人頭檢測結果
表1 三段視頻運行速率和準確率信息表
特殊情況下,計數(shù)系統(tǒng)會存在小概率的誤檢漏檢.如圖12(a)到圖12(b)所示誤檢情況,如圓圈圈中的人頭所示,乘客未下車,卻進行計數(shù).這種情況是乘客一直在劃定的矩形框內(nèi),若視頻連續(xù)幾幀沒有檢測到該人頭,計數(shù)系統(tǒng)則認為是目標運動了N個像素點,并消失,并且大于60個像素點,所以圖片左上角的計數(shù)加一.
圖9 稀疏情況下的目標跟蹤和人數(shù)統(tǒng)計效果圖
圖10 擁擠情況下的目標跟蹤和人數(shù)統(tǒng)計效果圖
圖11 黑夜情況下的目標跟蹤和人數(shù)統(tǒng)計效果圖
圖12 誤檢情況
計數(shù)系統(tǒng)也存在小概率的漏檢情況.檢測過程中可能出現(xiàn)如圖13(a)-(d)所示情況,圓圈內(nèi)的乘客就是漏檢情況,乘客已經(jīng)下車,計數(shù)系統(tǒng)卻沒有加一.這是因為乘客的身高達不到我們劃定的矩形框感興趣區(qū)域,或者僅能達到矩形框的下框線,這樣就不能再框內(nèi)判斷乘客運動軌跡是否是向上運動.同樣,圖13中左上角顯示的是此段視頻當前已下車人數(shù)的總和.
最后,選取了和本文實現(xiàn)人群計數(shù)方法比較相近的文獻[2],并從目標檢測方法、目標跟蹤方法和人數(shù)統(tǒng)計方法和人數(shù)統(tǒng)計系統(tǒng)的準確率這四個方面和本文所引用的文獻[2]做一個比較,比較結果如表2所示.本文運用了較為先進的SSD深度卷積神經(jīng)網(wǎng)絡實現(xiàn)了公交車人頭目標檢測,獲得了更高的人數(shù)統(tǒng)計系統(tǒng)準確率.
圖13 漏檢情況
表2 實驗結果和引用文獻的比較
本系統(tǒng)提出了一種基于深度卷積神經(jīng)網(wǎng)絡實現(xiàn)公交車視頻監(jiān)控場景中的人數(shù)統(tǒng)計.該系統(tǒng)分三步走,首先是用Caffe-SSD神經(jīng)網(wǎng)絡框架進行目標檢測,準確率約為84.22%,運行速率約為每秒識別19.79幀.然后是運用SORT目標跟蹤算法實現(xiàn)了公交車乘客多目標追蹤,最后依靠越線人數(shù)統(tǒng)計技術對人群進行人數(shù)統(tǒng)計.兼顧檢測質量與速度,實現(xiàn)了一個前后端均較穩(wěn)定的公交車人數(shù)統(tǒng)計系統(tǒng),且系統(tǒng)準確率達78.38%.能夠較準確對公交車下車人數(shù)進行統(tǒng)計,但也存在部分漏檢和誤檢的情況.本系統(tǒng)可初步試驗用于城市公交系統(tǒng),幫助公交車運營管理人員分析客流量結果,從而合理地調度車輛.