楊玉成 張 乾 岳詩琴 邵定琴
1(貴州民族大學數據科學與信息工程學院 貴州 貴陽 550025) 2(貴州省模式識別與智能系統重點實驗室 貴州 貴陽 550025)
人群運動是公共場所中一種極為普遍的行為現象,隨著人口數量的不斷增加,公共場所人群密集程度也隨之增加,這給公共場所人群管理與安全防控帶來巨大難題[1],因此人群運動行為檢測成為公共安全領域的熱點研究課題。人群運動行為檢測涉及模式識別、計算機視覺、機器學習和人工智能等領域理論知識。經過多年發展,人群運動雖然在理論體系和檢測技術上取得諸多成績,但仍然存在一些技術瓶頸尚未得到很好的解決,例如人群密集的場所中人群個體間存在嚴重的遮擋、其他非行人混入人群中、人群中個體運動方向和速度不一致性等。這些因素給人群運動行為檢測帶來巨大挑戰。
場景人群聚類實質是對場景中的運動人群進行檢測[2],目前人群檢測算法主要分為三大類:(1) 基于軌跡點的算法;(2) 基于視圖的算法;(3) 基于深度學習的算法。基于軌跡點的算法主要是根據人群運動軌跡的位置信息和時間信息進行檢測。Takahashi等[3]利用關鍵軌跡特征識別運動人群動作;Zou等[4]利用關聯軌跡點檢測運動人群;Zhao等[5]提出一種基于軌跡點光流直方圖的算法檢測異常人群,雖然基于人群運動軌跡點的算法能夠快速檢測異常人群,但是人群的軌跡信息與人群實際運動存在偏差[2],所以該類算法檢測結果可信度不高。基于視圖的算法是指從不同的視頻角度對運動人群進行檢測。Peng等[6]提出一種多視圖貝葉斯模型對行人進行檢測;Tian等[7]將三維光譜圖像切分為三個視圖進行聚類;Qian等[8]提出一種基于嵌入圖的多視圖聚類算法,雖然基于多視圖的算法能夠較為準確地檢測人群,但是該類算法需要先驗知識確定閾值,而且算法魯棒性較差;Wang等[2]提出一種自加權多視圖人群聚類算法框架,雖然該算法不依賴于任何閾值參數并獲得較強魯棒性,但是該算法計算復雜度較高,在一定程度上增加了計算成本。深度學習算法在圖像識別、姿態估計和語音識別等領域表現出優越的性能[9],同時也被廣泛應用于人群運動行為檢測領域。Shuaibu等[10]提出一種三維CNN(Convolutional Neural Networks)用于人群場景理解。Ke?eli等[11]在遷移學習的基礎上提出一種人群暴力行為檢測算法。Zhang等[12]提出一種基于SSD框架的擁擠場景人群檢測算法。Tzelepi等[13]在CNN的基礎上提出一種無人機自動人群檢測算法,雖然深度學習算法具有強大的特征學習能力,但網絡學習到的特征包含大量異常點信息給計算增加了負擔并影響效率。
針對上述問題,本文提出一種基于深度聚類的人群運動行為檢測算法。首先將人群運動軌跡的位置和速度組合得到運動特征描述符,通過K-medoids算法對運動特征描述符進行聚類得到聚類指數U1,從而將人群場景劃分為不同的運動區域;然后通過SqueezeNet輕量級正向加速網絡提取視頻幀圖像特征,再次采用K-medoids算法對圖像特征進行聚類得到聚類指數U2并將其作為U1的約束條件去除異常點;最后將去除異常點的聚類指數映射至每一幀圖像,從而實現人群檢測。
由于傳統CNN網絡存在訓練周期長、參數多、計算內存需求大等缺陷,因此Iandola等[14]提出一種輕量級CNN網絡SqueezeNet,其卷積核參數僅為傳統CNN網絡的1/9;為減少網絡輸入參數,在傳統CNN網絡基礎上增加壓縮層,用于壓縮輸入圖像的通道數;為減少信息損失將池化層置于卷積層后。
SqueezeNet網絡結構主要由輸入層、卷積層、Fire模塊、池化層、輸出層構成。Fire模塊的結構如圖1所示,該模塊由壓縮卷積層和擴展卷積層組合而成,其中擴展卷積層由1×1卷積核和3×3卷積核構成。Fire模塊是SqueezeNet網絡的核心組成部分,主要作用是減少圖像輸入通道數和卷積參數,其輸出結果被作為整個網絡的中間參數。在圖像特征學習過程中,首先對輸入圖像進行卷積操作,然后經過8個Fire模塊連續參數壓縮,最后通過一層卷積操作得到1×1 000維的特征向量。SqueezeNet的網絡結構如圖2所示。

圖1 Fire模塊

圖2 SqueezeNet網絡
雖然SqueezeNet網絡與傳統CNN網絡相比性能有很大提升,但是網絡計算速度仍然較慢。在CNN網絡中,層與層之間、卷積核之間、輸出特征圖等多為并行結構。鑒于此,Motamedi等[15]提出一種基于FPGA的加速器框架,該框架充分利用網絡的并行結構對SqueezeNet正向網絡加速。
FPGA加速器框架主要由乘法器和加法器組成,具體結構如圖3所示。第一層為乘法器層,由K個乘子構成;第二層為加法器層,該層的主要作用是對乘法器層的結果進行累積。將乘法器層中的乘法子集與加法器中對應位置的加法子集進行組合得到PCE(Parallel Convolution Engine)模塊;在網絡輸出層將PCE模塊與加法子集組合構成并行輸出模塊。為使網絡達到最佳性能,需要計算輸入特征映射n、乘子K和并行輸出模塊m的最優值。

圖3 FPGA加速器結構
首先定義一個周期函數T如下:
(1)
該函數即為乘法運算和加法運算次數。式中:fp為特征總數;Wp為輸出特征;S為卷積核的大小;l為信息傳遞損失量。然后定義一個網絡運算總數計算函數:
N=2×fp×S
(2)
最后定義一個峰值計算函數:
(3)
在式(1)-式(3)中fp、Wp、S為固定值,由此可以計算得到m、n、K的最優值。
FPGA加速器強大的加速性能使SqueezeNet正向網絡運行速度達到最佳狀態。SqueezeNet正向加速網絡提取一幅圖像的特征僅需22±1 s,因此本文采用SqueezeNet正向加速網絡提取圖像特征。
機器學習算法分為監督學習和無監督學習兩大類別。監督學習是對帶有標簽信息的數據進行學習從而得到數據的類別數;無監督學習是對無標簽數據進行學習從而得到數據的聚類簇。
K-medoids算法是無監督學習算法中的經典算法,由于在處理聚類問題時表現出優越的性能,因此被廣泛應用于人群檢測領域。K-medoids算法的核心思想:首先,選取K個數據點;然后,計算每個數據點X=(x1,x2,…,xk)與K的距離,將與K距離最近的點劃分為同一聚類簇,同時更新K個數據點;最后,聚類函數收斂,得到總體數據的聚類簇個數[16]C=(c1,c2,…,ck)。聚類函數定義為[17]:
(4)
式中:οi為K個數據點的中心;d(xi,oi)是數據點與中心的距離。
(5)
οi的更新準則定義為[17]:
(6)
Dmin的值表示聚類簇內各數據點接近中心的程度,Dmin的值越小,表明各數據點與中心的接近程度越高,各數據點間的相似度也就越高。本文采用K-medoids算法對運動特征描述符和視頻幀圖像特征進行聚類。
公共場所人流量較大,人群密集度較高,通常混合了不同運動狀態的人群目標,例如:移動方向、速度、軌跡等不同運動狀態,同時還混合了其他非人群目標,例如:汽車、樹木等目標。本文的研究重點是對不同運動狀態的人群進行聚類,即檢測不同運動狀態的人群。
人群遮擋和光照等因素使人群區域內出現大量倒影,由于人群運動過程中倒影也隨之運動,因此產生大量異常點數據,其次K-medoids的初始聚類中心是隨機選取的,因此在聚類時易出現局部最優值[17]。上述因素直接影響聚類效果。鑒于此,本文融合SqueezeNet正向加速網絡與K-medoids算法提出一種深度聚類人群運動行為檢測算法。
運動軌跡和運動速度是人群運動的重要特征,本文通過人群運動軌跡的位置信息和運動速度,定義一個運動特征描述符:
An×4=[Vn×2,Pn×2]
(7)
式中:n為軌跡點數,V是n×2維的速度矩陣,P是n×2維的軌跡矩陣。引入運動特征描述符之后,采用K-medoids算法將人群場景劃分為四個不同的運動區域,被劃分在同一區域內的人群個體的運動狀態是相同的,即運動速度和方向相同。具體劃分過程為:(1) 采用K-medoids算法對運動特征描述符An×4進行聚類得到聚類指數U1=(u1,1,u1,2,…,u1,n),u1,i∈[1,4];(2) 將μ(u1,i,Vn)→M,M表示圖像。劃分結果如圖4所示。

圖4 人群運動區域
圖4所示為人群場景運動區域劃分結果,不同顏色(圖中用灰度描述)所覆蓋的區域表示不同的運動區域,屬于同一運動區域的人群運動狀態相同。
本文將SqueezeNet正向加速網絡與K-medoids算法融合,提出一種深度聚類算法用于人群聚類。人群場景圖像能夠直觀地反映人群的運動狀況,深度學習算法可完整地表達圖像特征信息,因此本文將SqueezeNet正向加速網絡用于圖像特征提取,采用K-medoids算法對特征進行聚類。
首先采用SqueezeNet正向加速網絡提取視頻幀圖像特征得到一個1×1 000維的特征向量。然后采用K-medoids算法對所提取的特征向量進行聚類得到聚類指數U2=(u2,1,u2,2,…,u2,1 000),u2,i∈[1,4],場景中的人群較為密集,在光照等因素影響下,人群之間會產生許多噪聲,即U1和U2中存在異常特征點,這些異常特征點直接影響聚類結果,因此本文定義一個約束條件如下:
(8)
(9)
由式(8)和式(9)得到去除異常點之后的人群聚類指數U′1=(u′1,1,u′1,2,…,u′1,n),最后將μ(u′1,i ,Vn )→M,從而實現人群聚類。
本文將K-medoids算法與SqueezeNet正向加速網絡融合,提出一種深度聚類算法,算法流程如算法1所示。
算法1本文算法
輸入視頻幀圖像,人群運動軌跡
SqueezeNet提取圖像特征:f=1×1 000
計算運動特征描述符:An×4=[Vn×2,Pn×2]
計算聚類指數:
K-medoids對f聚類得U1=(u1,1,u1,2,…,u1,n)
K-medoids對An×4聚類得U2=(u2,1,u2,2,…,u2,1 000)
去除異常點:
If |U1|≤|U2|&|u1,i|≤|u2,i|
thenU′1=U1
ElseU′1=0
End if
Ifu1,i>u2,i
u′1,i=u′1,i-1
Elseu1,i=0
End if
輸出U′1=(u′1,1,u′1,2,…,u′1,n)
映射至圖像:μ(u′1,i ,Vn )→M
針對本文提出的基于深度聚類的人群運動行為檢測算法,通過在各種國際公開數據集上進行實驗,結果表明本文算法能夠準確檢測場景中的不同人群,與其他人群運動行為檢測算法相比,本文算法具有更高的異常點去除率(Abnormal Point Removal Rate,APR)和純度值(PU)。
本文所有驗證實驗平臺為Windows 7 64位系統,CPU2.5 GHz,RAM 4.0 GB,MATLAB R2017b。本文選取了CCD(CUHK Crowd Dataset)[18]、CMD(Collective Motion Database)[19]、MPT(MPT-20×100)[20]三個公開數據集進行實驗,并將本文提出的算法與MCC(Measuring Crowd Collectiveness)[19]、CF(Coherent Filtering)[21]兩種主流人群運動行為檢測算法進行實驗對比。為客觀評價提出算法的性能,選擇人群聚類的PU值和APR值作為綜合評價指標。
圖5所示為本文算法與其他人群聚類算法在三個國際公開數據集上的人群聚類結果,其中相同顏色(圖中用灰度描述)點所覆蓋的區域表示屬于同一類的人群。圖6所示為本文算法去除人群場景中異常點的結果,圖中“+”符號表示被去除的異常點。實驗結果表明,本文算法能夠對場景中的不同人群進行有效聚類,并且能夠有效去除人群場景中由于遮擋和光照影響所產生的異常點數據,證明了本文算法在人群聚類和異常點去除問題上的優越性能。

圖5 各種算法的聚類結果

圖6 異常點去除
為了進一步驗證本文算法的優越性,表1統計出了本文算法與其他算法在三個不同數據集上去除的異常點數和APR值。在CMD數據集上,本文算法去除的異常點數比CF算法多170個點,比MCC算法多48個點;本文算法的APR值比CF算法高0.05,比MCC算法高0.08。在CCD和MPT數據集上,本文算法去除的異常點數和APR值均明顯優于其他人群聚類算法。

表1 不同聚類算法去除異常點數和APR值
為更加客觀地證明本文提出算法的優越性能,本文在CCD數據集上進行實驗,并比較本文提出算法與其他人群聚類算法的PU值。表2統計了本文算法與其他人群聚類算法在CCD數據集上的PU值,可以看出,本文算法的PU值比MCC算法高0.079,比CF算法高0.066,進一步證明了其優越性。

表2 不同聚類算法的各項指標值
為更加綜合地證明本文算法的有效性,本文對各種人群聚類算法的聚類數進行對比。圖7統計了本文算法與其他人群聚類算法的聚類數,本文算法所得聚類數與Groundtruth一致,CF算法比Groundtruth多2類,MCC算法比Groundtruth多10類,進一步證明了本文算法的優越聚類性能。

圖7 各算法聚類數
為解決現有算法不能有效去除異常點的問題,本文提出一種基于深度聚類的人群運動行為檢測算法。將SqueezeNet正向加速網絡與K-medoids算法融合去除人群異常點,通過在各種國際公開數據集進行實驗對比,本文算法在準確率與目前主流算法相同的情況下,得到了更高的異常點去除率和更高的聚類純度,實驗結果證明了本文算法的有效性。未來將繼續探索SqueezeNet正向加速網絡的優化以及與其他聚類算法的結合,進一步提高人群檢測算法的準確率和其他各項性能。