羅凡波,王 平,梁思源,徐桂菲,王 偉
(西華大學 電氣與電子信息學院,成都 610039)
目前,國內外學者在人群異常行為檢測方面做了許多研究工作,其大致可分為基于低級視覺物征和基于粒子流兩個方面[1]。基于低級視覺特征提取的方法先使用計算機視覺領域的技術提取人群圖像的低級特征,再利用分類器進行異常檢測[2]。文獻[3]提出基于全局光流法獲取方向直方圖,通過直方圖來表現人群異常,文獻[4]提出使用Lucas-Kanande光流法計算人群速度與運動方向特征,通過SVM進行訓練分類判斷異常行為;也有學者使用基于光流和灰度值的協方差矩陣進行異常行為檢測[5]。基于低級視覺進行的特征提取能從數據上直觀反映人群的運動狀態,但是所提取的運動信息單一,提取特征的過程耗時較多,使得實時性與準確性不高,傳統的支持向量機同樣具有訓練效率低、耗時、數據處理能力有限等問題[6]。基于粒子流方法分析人群行為,假定人受長期外作用力進行運動,再計算相互作用力,設定閾值來檢測類似人群異常,其中的典型代表是社會力模型(SFM)[7],文獻[8]提出融合顯著性信息和社會力模型獲得相互作用力直方圖進行異常判斷。但社會力模型建立較復雜,計算量較大,對監控實時性要求無法滿足。
近年來,深度學習的快速發展使機器學習取得了長足進步,具有代表性的模型有卷積神經網絡(CNN)與YOLO;CNN與YOLO在圖像檢測與識別領域已經取得了明顯的效果。文獻[9]利用卷積神經網絡進行車牌圖像超分辨率識別;文獻[10]使用選擇性數據采樣快速卷積神經網絡訓練,進行彩色眼底圖像出血檢測;文獻[11]提出基于YOLO網絡的行人檢測方法;文獻[12]提出基于YOLO模型的車輛實時檢測。
現有的人群異常檢測方法多數是檢測人群突然奔跑的大規模異常,但未考慮引起這種群體異常的誘因。為此,本文提出一種基于YOLO_v3與稀疏光流的人群異常行為識別與定位方法。將監控圖像劃分為多個子圖像,以便于異常定位,對引起群體異常的誘因進行檢測,通過改進YOLO_v3神經網絡搭建適用于檢測此類異常的模型。針對突散異常,使用稀疏光流法獲取人群平均動能以及人群運動方向熵,將得到的特征數據輸入PSO-ELM進行分類,區分正常行為與突散異常行為。
本文人群異常行為檢測流程如圖1所示。在YOLO之前的物體檢測方法主要是通過候選區域產生的大量可能包含待檢測物體的potentialboundingbox,接著使用分類器去判斷每個potentialboundingbox是否包含物體,以及物體所屬類別的probability或confidence。YOLO不同于這些網絡的方法,它將物體檢測當做一個回歸問題來處理,使用一個神經網絡,將整張圖作為網絡的輸入,直接在輸出層回歸boundingbox的位置和boundingbox所屬的類別。YOLO作為當前最優秀的目標檢測網絡之一,其實時處理圖像速度可達到45 frame/s。

圖1 異常檢測流程Fig.1 Anomaly detection procedure
YOLO_v3[13]將輸入圖像劃分為S×S的柵格,每個柵格負責落在該柵格中的物體。每一個柵格預測B個boundingbox及其置信分數(confidencescore),置信分數反映了模型對于這個柵格的預測,即該柵格是否含有物體以及這個box預測的準確性。confidence定義如下:
(1)
(2)

在預測時,每個候選框的分類置信分數為預測目標的類別概率和boundingbox預測的confidence相乘,即:
(3)
得到每個分類置信分數之后,設置閾值將得分低的boxes篩除掉,即得到最終的檢測結果。
YOLO_v3的boundingbox的坐標預測方式延續了YOLO_v2的做法,坐標的損失采用的是平方誤差損失。其類別預測方面主要是將原來的單標簽分類改為多標簽分類,因此網絡結構上就將原來用于單標簽多分類的softmax層換成用于多標簽多分類的邏輯回歸層。
YOLO_v3采用多個scale融合的方式預測,在多個scale的feature map上進行檢測,對于小目標的檢測效果提升比較明顯。
YOLO_v3的boundingbox初始尺寸采用YOLO_v2中的k-means聚類方式,這種先驗知識對于boundingbox的初始化有較多優點,對算法的速度有一定提高。
YOLO_v3的網絡結構是darknet-53,一方面基本采用全卷積,另一方面引入了residual結構,得益于此結構,訓練網絡難度大大減小,因此YOLO_v3將網絡進行到53層,精度提升較為明顯。
基于YOLO_v3的小團體異常行為檢測網絡框架如圖2所示。首先將數據集中訓練集圖片調整為416×416×3的標準jpg圖片,將darknet-53中53個卷積層和21個池化層作為YOLO_v3進行行人行為特征提取的主要網絡結構,75層到105層作為網絡的特征交互層,輸出featuremap,在此進行行人異常種類分類和位置回歸。YOLO_v3行人異常行為檢測的基本流程如下:
1)將待檢測圖像輸入檢測模型,得到13像素×13像素×30像素行為特征點的特征圖。
2)13像素×13像素一共形成169個網格,每個網格預測6個邊框,每個邊框共有6類信息,其中1維圖像類別信息(持械與否、面部遮擋與否),1維邊框置信度和4維坐標信息,獲得1個36維向量,即為最后得到的36個通道。
3)將前面預測到的13×13×6個目標邊框,先通過預先設定的閾值去除掉小概率的目標邊框,再使用非極大值抑制去除多余的預測邊框。該步驟預測邊框的選取主要通過式(1)~式(3)來進行計算,并獲得最優的預測邊框。
從整個行人異常行為的檢測過程中可以看出,本文使用的YOLO_v3行人異常行為檢測框架不再需要通過候選區域尋找指定的目標,而是直接使用回歸思想來進行位置確定與異常行為類別的判斷。也正是這一原因,使得其檢測速度獲得了極大提高,能滿足當前監控系統的實時性要求。

圖2 YOLO_v3異常行為檢測框架Fig.2 YOLO_v3 abnormal behavior detection framework
在訓練階段,由于電腦顯卡內存與電腦內存都較小,因此采用小批量隨機梯度下降法,每64個樣本更新一次權重參數。為防止訓練過程中產生數據量過大,內存不足,經多次實驗后得到每個batch=64,subdivision=16,即每次訓練4張圖片,總共迭代次數為20 000次。
為使本文YOLO_v3檢測網絡對不同尺寸的圖像始終有較好的適應性,在訓練方法上使用多圖像尺寸進行訓練,在訓練中每隔5輪隨機抽取新的圖像尺寸送入網絡進行訓練,使得該網絡對不同分辨率的人群圖像具有較好的適應性,能維持一個較高水平的檢測準確率。本文訓練類別為五類,分別為行人(person)、持棍(club)、面部遮擋(shelter)、持槍(gun)、持刀(knife)等5個類別,訓練參數設置如表1所示。

表1 訓練參數設置Table 1 Training parameter settings
在大多數情況下人群行為都是正常的,異常行為較少發生,且發生時間較短,故異常行為的訓練數據較少,但對于深度神經網絡來說需要大量的訓練數據支持,在現有的公開數據集中,異常行為的樣本數據較少,所以需要使用數據擴充方法來增加異常行為的數據量。
圖像的二維特征[14],如亮度、對比度、噪聲等對于人群的行為是沒有影響的,因此針對本文訓練數據不足的問題,通過增加亮度、降低亮度、提高對比度、降低對比度、添加椒鹽噪聲、添加高斯噪聲等手段,對訓練樣本進行數據擴充,使目前異常行為的數據量變為原來的數倍。利用上述手段改變每一幀圖像信息,既增加了樣本多樣性,也保留了原圖像中行人的行為特征,減小了正常樣本與異常樣本的數量差異。
本文通過改進的稀疏光流法獲取光流信息,得到速度大小、加速度大小、運動方向等特征值,進而計算人群平均動能與人群運動方向熵。
光流法[15]的使用要具備一定的條件,一是在監控視頻中,相鄰幀之間的亮度保持一致,二是前景運動速度相較幀速率不能過快,三是相鄰點某一鄰域內所有像素點的速度相等,即:
F(x,y,t)=F(x+Δx,y+Δy,t+Δt)
(4)
由泰勒函數展開F(x,y,t)得到:
fxu+fyv+ft=0
(5)
對于v的估計,在鄰域Ω內求取加權平方和最小化得到:
(6)
其中,W(x)是一種權重函數,該函數使Ω鄰域中心像素點的加權比周圍的像素點大,本文權重函數使用平滑高斯核函數。
根據L-K的使用條件,定義Ec為光流約束因子,Es為平滑約束因子:

(7)
(8)
求解的目標光流即是使式(7)和式(8)中因子最小,即目標函數E最小化:
(9)
其中,λ是Es、Ec的相對權重,其與噪聲強度有關,本文選取一個適中值λ=0.5,設:
w=(u,v,1)T
JP(3p)=W(x)·(3p·3pT)
(10)
其中,w表示在t時刻像素(x,y)處的速度梯度,3p表示強度梯度。
故式(6)可轉化為:
Emin=wT·Jp(3p)·w
(11)
得出改進光流模型:
(12)
接下來可求出:
(13)
θ=arctan(vy/vx)
(14)
平均動能定義如下:
(15)
其中,N表示在一幀圖像中所有的運動矢量,即特征點個數,mi表示質量權重,為方便計算,設定每個個體質量權重都為1,vi表示運動矢量的速度大小。
運動方向熵的計算如下:
1)運動方向角度:
Di=arctan(y/x)+π
(16)
將運動方向在[0,2π]上劃分為8個運動區間方向,每間隔π/4作為一個運動區間,定義方向直方圖:
hi={ki;0
(17)
其中,ki表示每一幀第i區間所包含的運動矢量數目。
2)概率分布計算:
Pi=h(i)/N;0
(18)
3)方向熵計算:
(19)
由于行人特征點較多,為降低運算復雜度,本文采用等距采樣法進行特征點的選取,在計算過程中不用逐幀進行計算,本文借鑒幀差法思想,使用間隔5 frame計算一次,實驗結果證明,該方法提高了運行速度,且也不會對異常分類造成影響。
極限學習機(ELM)是由文獻[16]提出的求解單隱層神經網絡的算法。ELM最顯著的優點是求解單隱層前饋神經網絡時,在保證學習精度的前提下其學習速度比傳統方法快得多;在算法中,輸入層與隱含層的連接權值與隱含層神經元閾值使用rand函數生成,訓練過程中無需人為手動調整,只需進行隱含層神經元個數設置就能獲得唯一最優解。本文針對兩組測試數據,選取的隱含層神經元個數分別為315個和305個。為能更好更快地找到最優的連接權值與神經元閾值,使用粒子群優化算法(PSO)進行參數尋優。
粒子群算法[17]思想來源于鳥群的捕食行為,鳥群中的個體用無質量的粒子模擬,粒子具有速度V和位置X兩個屬性,速度代表搜索參數的快慢,位置代表搜索參數移動的方向。粒子在規定的區間內單獨進行最優解搜尋,并將獲得的最優解記為當前個體極值Pbest,并將其分享給其他粒子,找到最優個體極值作為當前整個粒子群體全局最優解Gbest;將所有粒子與全局最優解進行比較,進而調整自己的V和X。使用PSO優化ELM[19]后能得到更好的分類效果。本文使用的速度V的初始化范圍為(-1,1);位置X的初始化范圍為(-1,1);粒子群個數N為100。對于PSO-ELM通過下面步驟訓練測試。
1)訓練集:給定Q個不同樣本(xi,ti)。其中,xi=[xi1,xi2,…,xin]T,ti=[ti1]。xi為上述特征組合;ti為一個標簽,表示目標屬于哪一類人群,即正常或異常。

3)將提取的測試集特征送入訓練好的模型中,實現突散異常檢測。
算法步驟如下:
1)針對兩組測試集,本文隱含層神經元個數設置為315個和305個,對ELM分類器使用PSO進行連接權值與神經元閾值尋優。
2)本文激活函數選取S函數,計算隱含層輸出矩陣H。
相關實驗結果表明[18],在激活函數選取中,不僅可使用非線性激活函數分類非線性樣本,還可用線性激活函數分類非線性樣本,能夠獲得較好的效果。根據多次實驗,本文使用S型函數作為激活函數能獲得較好的分類效果,隱含層神經元個數根據樣本集的變化而做出改變,能獲得較好的分類精度。
本文監控系統是在普通PC機(CPU為8700K,3.70 GHz,8.00 GB內存,顯卡為GTX1080,8 GB)上搭建,YOLO_v3部分在Windows CMD環境下進行訓練與測試,對稀疏光流與PSO-ELM部分是在MATLAB2014a編程環境下完成的;在數據集方面對持械異常使用INRIA,UCF101進行可行性實驗,然后在拍攝的視頻數據集中仿真,對突散異常使用UMN的數據集。在實驗前先將視頻分為多個子區域進行測試,方便對異常進行定位。
YOLO_v3檢測模型仿真結果如圖3所示,從圖中可以看出,通過本文的人群異常檢測模型能很準確檢測出人群中持棍斗毆傷人異常、面部遮擋異常、持槍異常、持刀斗毆傷人異常。這幾類異常是傳統異常檢測模型無法準確檢測到的,傳統模型大多只能檢測單一的人群突然奔跑異常,且一旦監控場景改變,對檢測結果具有較大影響,造成極高的漏檢率,本文的模型對各個監控場景都具有很強的魯棒性,能很好地適用于多監控環境。本文模型的實時性完全能滿足社會生活監控的需要,在硬件設備達到要求時,能實時處理45 frame/s,隨著時間的推移,還會進一步上升。

圖3 異常檢測效果Fig.3 Effect of anomaly detection
本文仿真每輪迭代從處理后的訓練集中隨機抽batch=64個樣本進行訓練,由于本次實驗采用的顯卡為8 GB顯存,為了減輕內存占用壓力,每輪的64個樣本又被均分為subdivision=16次送入網絡參與訓練。最終經過20 000次的迭代,損失值最后保持在0.078 4左右,平均交并比達到85%左右,如圖4所示。

圖4 訓練20 000次的loss值變化示意圖Fig.4 Loss value change diagram of 20 000 training times
對UMN數據集進行無規則突散分析,視頻共323 frame,隱含層神經元個數為315個,分類結果顯示從193 frame開始,群體由無規則行走變為無規則突散,仿真結果如圖5所示。

圖5 無規則突散仿真效果Fig.5 Simulation effect of irregular spur
在突散異常發生之前,人群為正常行走,如圖5(a)所示,其平均動能都較小,但到190多幀時,人群平均動能突然增大,然后到260多幀急劇下降。如圖5(b)所示,說明在190多幀時發生了突散奔跑異常,隨著人群不斷跑出監控區域,人群動能不斷下降,直到所有人都走出監控區域,動能變為0;對于運動方向,如圖5(c)所示,由于異常發生之前人群就在無規則行走,異常發生后也是無規則突散,因此異常前后人群運動方向熵變化不明顯,直到所有人走出監控區域,方向熵降為0。
對于UMN數據集進行同方向突散分析,視頻共338 frame,設置隱含層神經元個數為305,分類結果顯示在270 frame左右發生同向突散異常,仿真結果如圖6所示。

圖6 同向突散仿真效果Fig.6 Simulating effect of co-directional spur
在突散異常發生之前,人群正常無規則行走,如圖6(a)所示,其平均動能有一些波動是因為人群遮擋引起的,檢測出的人數變化對其有一定影響,但到270 frame左右時,人群平均動能突然增大,然后到290 frame左右急劇下降,如6(b)所示,說明在270多幀時發生了突散奔跑異常,隨著人群不斷跑出監控區域,人群動能不斷下降,直到所有人都走出監控區域,動能變為0;對于運動方向,如圖6(c)所示,由于異常發生之前人群就在無規則行走,異常發生后發生的是同方向突散,因此異常前后人群運動方向熵變化較為明顯,直到所有人走出監控區域,方向熵急劇下降,但后面有回升是因為監控區域又有人進入。
PSO-ELM分類結果如圖7所示,其與傳統異常行為檢測方法準確率比較見表2。其中,圖7(a)對應315個隱藏層神經元,圖7(b)對應305個隱藏層神經元。

圖7 PSO-ELM分類效果Fig.7 PSO-ELM classification effect

表2 PSO-ELM突散異常分類準確率Table 2 Classification accuracy rate of PSO-ELM spuranomalies
本文提出一種基于YOLO_v3與稀疏光流的人群異常行為識別與定位方法。首先將監控圖像劃分為多個子圖像,以便于異常定位,然后對引起群體異常的誘因進行檢測,并針對訓練數據不足的問題,采用數據擴充的方法增加訓練數據。使用稀疏光流法獲取人群平均動能與人群運動方向熵,將得到的特征數據送入PSO-ELM進行分類,區分正常行為與突散異常行為。實驗結果表明,本文方法能夠為應對人群異常采取相應應急措施提供更多時間,可有效檢測持械異常與面部遮擋異常,并且能準確定位異常區域,具有較高的檢測準確率。下一步研究將增加一些異常種類[19],將突散異常檢測功能整合到YOLO_v3異常檢測模型中,使修改后的網絡能較好地檢測突散等異常行為。