黃 豐莫輝強王 偉歐陽慧于富洋張 城葉 明
(1.浙江省軌道交通運營管理集團有限公司 杭州 310020)(2.深圳北斗應用技術研究院有限公司 深圳 518055)
隨著中國城市建設發展,地鐵出行逐漸成為大眾的首選出行方式。相較于其他交通方式,地鐵站空間區域小、客流密度高、疏散難度大,由此帶來的客流風險不容忽視。目前,在地鐵站針對客流的管控控主要通過人工方式現場或視頻監控線,并借助自動售檢票系統(AFC)的客流數據進行歷史數據回測[1],人工方式需要依賴人的經驗來片段客流情況,該方式帶有一定的主觀性,而通過AFC監控客流無法做到客流實時統計,并且做不到局部客流監控。隨著計算機視覺計算技術的發展,通過視頻分析的智能客流管理為車站客流實時監控和風險預警提供了有效手段。其中頭部檢測,目標檢測,運動跟蹤,客流計數和客流密度評估等技術也成為車站客流管控應用的熱點[2]。
客流密度是通過輸入原始的區域客流圖像得到對應區域客流數量統計值。針對視頻圖像的客流密度統計方法主要為:基于回歸的檢測方法[3],基于像素的統計方法[4],在可獲得的公開數據集上效果較好的方法是基于卷積神經網絡,該方法對人群分布不均,遮擋嚴重的分析準確度較好;基于深度特征的方法,在利用卷積神經網絡的方法上進一步提升了較為復雜背景下的分析準確度。本文結合已有研究方法采用基于深度學習的密度計數(DL-CNT)方法[5],該方法有別于以往開集問題,實際場景下人的數量是一個開集的問題,但是模型往往是在閉集的數據集上進行訓練,故采用分而治之的思想,對整張大圖,本文會去劃分成若干小分塊,使得每個小分塊的數量處于這個閉集內,從而實現對每個小分塊的人數預測,并泛化到開放集合中,實現客流密度的統計[6]。
視頻幀圖像有RGB三通道,分別代表著紅色、綠色、藍色三種不同的顏色通道,通道的像素使用數組進行表示,像素值由0~255的數字來表示[7]。
卷積:使用一個K×K大小的卷積核(kernel),在每一層像素矩陣上按步長(stride)滑動,每次掃到的數值會和卷積核中對應位置的數進行相乘,然后相加求和,得到的值將會生成一個新的矩陣[8]。
卷積核為卷積操作過程中的一個矩陣,用于提取圖像的特征(feature map)。
假如一個卷積核的大小為6×6大小,卷積核矩陣里面的每個值就是模型的神經元參數,統稱為網絡權重,模型訓練開始會對矩陣進行隨機初始化,訓練網絡過程中,網絡會通過損失函數(loss)的收斂反向傳播不斷更新權重值,通過損失函數(loss)收斂到最小時候確認為最佳權重值。

其中n表示寬高,k表示卷積核尺寸,p表示邊padding,s表示步長stride。
經過卷積操作后提取到的特征信息,由于卷積帶來的感受野,實際卷積后的一個單元格對應著卷積前的多個格子數值,所以卷積后的相鄰區域會有相似特征信息,這些相似的特征可以相互替代的,若全部保留這些特征信息會存在信息冗余,增加計算難度。
故在卷積后增加一個池化層,池化層會不斷地減小數據的空間大小,由于池化過程中丟棄了部分權重值,相當于對模型進行了一個正則化,有效的控制了模型的過擬合,因為丟棄了部分權重值,所以參數的數量和計算量會有相對應的下降[9]。
目標計數任務是一個天然的開集問題,其預測范圍是[0,∞],而實際中,視頻幀的圖像中目標數量是有限數量的,實際觀測到的目標數量是一個有限數量的封閉區間,故實際情況應從封閉子集區間上學習,并泛化到開放集合中。本文提出了基于CNN網絡的密度計數算法(DL-CNT)模型,訓練過程中只圖片上目標數量0~20的部分,當遇到一張目標數量密集并超過20個目標的圖像時,對圖像進行切分成多個部分,直到每個子圖像中包含的目標個數不超過20個,然后再對每一個子圖進行計數和合并計算最總結果[10]。
切分帶來的一個問題是需要設計好劃分計數的判斷標準。直接的思路是對切分的圖像進行上采樣,再進行切分,將圖片輸入到同一個網絡中進行預測,由于對圖像上采樣會導致部分信息丟失,帶來一個難題是圖像變模糊,另一難題是計算量暴漲,從而資源及模型精度會受較大影響。受感興趣區域池化(RoI Pooling)啟發[11],本算法對特征圖(feature map)進行解碼和上采樣,然后對特征圖(feature map)進行后續預測和計數。
輸入的64×64的patch,經過VGG16網絡的卷積3(Conv3),卷積4(Conv4),卷積5(Conv5)這3個卷積階段輸出的特征圖大小分別為8×8、4×4、2×2,Conv5是將VGG16網絡的全連接層(FC)去除后的輸出,即輸入圖像經過32倍下采樣輸出的特征圖(feature map)[12]。Conv5的輸出直接通過一個分類器,預測出C0值。C0表示的是當前輸入圖像所有目標計數所屬類別,因為C0的預測沒有用到S-DC網絡結構,所以C0值為先前其他方法的最終輸出結果。
F1是第一個通過S-DC的feature map,F1被劃分后,送入共享的計數分類器,產生劃分計數,具體地,F1是F0通過UNet網絡模塊上采樣生成的特征圖,C1中的4個單元格,每個單元格代表著對應輸入圖像相對應的32×32區域的目標數量計數。
在backbone的基礎上,采用一個classifier去進行分類,將人數量化為區間,即

這樣相當于將預測劃分為了M+1類,然后每一類代表了一個人數區間,在計算實際人數時,采用區間的中值代表這個區間的值,對于則采用CM表示,可以獲得對整個64×64的patch的人數預測結果用C0表示。
當網絡通過classifier預測了1×1,2×2,4×4的分塊預測結果之后,到底是分的細的結果重要還是不分的細的結果重要,這里就采用division decider預測的weight map去權衡,w越大表示細分的必要性越大,以1×1的C0和2×2的C1的結合為例,先將C0上采樣到2×2的狀態,同時每個點的值是原來C0平均分為1/4的結果,最后獲得2×2的融合的預測結果DIV1,每個值代表對64×64的一個1/4區域即32×32的人數預測結果。同理可以獲得4×4的DIV2,每個點的值代表16×16的一個區域的人數預測結果,由于VGG16只有5個卷積階段的限制,所以這個S-DC的思路最后做5層。
可視化division-decider產生的w的作用,根據W的作用,W越大代表越應該采用細分的后的預測結果,W越小代表不用細分預測效果就可以了,圖中可以看到越是密集的區域,W是越亮,說明W學到了密集區域需要劃分再預測這樣一個語義的信息。W2相比于W1更加關注一些更加密集的小部分區域,是給予W1劃分的基礎上的進一步劃分[13]。

圖1 不同W權重的可視化
數據集是在地鐵場景收集人群數據集,數據集的圖像分辨率為1920*1080,共10000張,制作的數據集需要對人頭中心位置進行標注,標注為中心位置的坐標點(x,y),本文使用Matlab工具對圖像進行標注,共標注了45000個人頭框。數據集包含10個區域,地鐵出入口、站廳、站臺、安檢區域等,真實呈現了地鐵站內不同攝像頭的角度和高度變化情況,以及密集人群和嚴重遮擋因素,可以較為真實反應地鐵實際場景。
DL-CNT算法采用了平均絕對百分比誤差評價指標,當MAPE為0時表示完美模型,MAPE大于100%則表示劣質模型,不可用。DL-CNT算法的MAPE值為8%[14]。

圖2 地鐵站臺標注示意圖
通過選取地鐵10個攝像頭場景,人工標注了2000張測試集,平均每一個攝像頭200張數據集,將2000張測試集輸入模型得到預測數量,得到mape為8%,密度圖測試效果如下,觀察可知,對于疏密程度不同的地鐵監控場景,網絡都能獲得較高的計數精度。同時生成的模型預測密度圖較好的呈現了站內客流密度分布情況[15]。

圖3 地鐵數據集網絡輸出結果對比圖


圖4 地鐵數據集網絡輸出結果對比圖
地鐵站內區域相對封閉,乘客日常出行在早晚高峰客流量集中,容易發生大客流,實時監控站內各區域乘客人數并預警可以有效避免人群擁擠,發生踩踏等風險因素。本文基于上述客流密度算法,基于B/S架構開發了一套車站客流計數監控預警系統。基于國標28181協議接入車站現有的CCTV系統獲取車站現場攝像頭實時視頻流,基于客流密度算法將傳入的視頻流進行實時分析,輸出車站現場各個區域的客流人數,例如站臺候車區域,換乘通道等,滿足車站日常使用需求。當視頻分析結果超過預警的閾值時,站務人員可通過監控大屏收到預警通知,及時對客流密集區域進行疏散處置。

圖5 地鐵站換乘通道客流預警
本文針對地鐵客流管控場景設計了視頻監控場景下的客流密度算法,利用基于深度學習的密度計數(DL-CNT)方法實現地鐵各個區域客流人數計數。通過實驗及應用結果發現該方法具有實時、高效、性能消耗少的特點,可以滿足地鐵站內客流監控需求,除在地鐵場景應用外,也可在其他交通樞紐、公共場所應用。