劉良鑫,林勉芬,鐘良泉,彭雯雯,曲 超,潘家輝
(華南師范大學(xué) 軟件學(xué)院,佛山 528225)
隨著人工智能和圖像處理技術(shù)的快速發(fā)展,基于深度學(xué)習(xí)的智能視頻監(jiān)控系統(tǒng)研究具有重要意義.近年來,在國家政策的支持下,安防行業(yè)飛速發(fā)展,政府、企業(yè)、機(jī)關(guān)、城市、社區(qū)都在配合國家的安全工作進(jìn)行相關(guān)的部署,努力打造一個智慧和安全的國家.隨著科技的發(fā)展,智能監(jiān)控技術(shù)也在不斷地進(jìn)步,而目前的監(jiān)控任務(wù)主要還是依靠人工實現(xiàn),需要大量的人力、物力對海量的視頻內(nèi)容進(jìn)行觀看和分析.不能有效地利用現(xiàn)有的資源.所以為了解決這個困難,本項目的研究內(nèi)容就是實現(xiàn)對視頻中異常行為的自動篩選和實時檢測.
1.2.1 智能視頻監(jiān)控系統(tǒng)研究現(xiàn)狀
智能視頻監(jiān)控系統(tǒng)是通過計算機(jī)視覺技術(shù)、圖像視頻處理技術(shù)和人工智能的識別技術(shù)對監(jiān)控視頻的內(nèi)容進(jìn)行分析,然后根據(jù)分析的結(jié)果對系統(tǒng)進(jìn)行控制.
在國外,美國國防高級研究(DARPA)設(shè)立了一個視覺監(jiān)控重大研究項目VSAM.該項目從1997年就開始設(shè)立了,由卡內(nèi)基梅隆大學(xué)(CMU)、麻省理工學(xué)院(MIT)還有馬里蘭大學(xué)等著名高校和研究機(jī)構(gòu)參與研究.VSAM 項目可以說是最早的視頻監(jiān)控的智能化的開端,主要研究用于戰(zhàn)場、未來城市和普通民用場景進(jìn)行監(jiān)控的自動視頻理解技術(shù).
美國的Microsoft、GE、IBM 等公司也對智能監(jiān)控系統(tǒng)進(jìn)行了研究,如GE的VideoIQ 產(chǎn)品,可以在多種場景下進(jìn)行檢測.而國內(nèi)在這方面發(fā)展較晚,但也有比較優(yōu)秀的成果,如中科院北京自動化研究所下的模式識別國家重點實驗室,主要研究模式識別、計算機(jī)視覺、圖像處理與圖形學(xué)、自然語言處理以及模式識別應(yīng)用與系統(tǒng)等.其中譚鐵牛研究員領(lǐng)銜的科研團(tuán)隊開發(fā)了可對突發(fā)事件進(jìn)行全天候?qū)崟r監(jiān)控預(yù)警的“智能視頻監(jiān)控系統(tǒng)”,而且成功應(yīng)用于北京奧運(yùn)會安保工作.除此之外該研究所還有其他的研究成果,包括:目標(biāo)異常行為的識別與報警、異常的物體滯留或丟失檢測、人群流量評估及擁堵報警、監(jiān)控狀態(tài)下的人臉跟蹤與識別等.
1.2.2 異常行為檢測研究現(xiàn)狀
在異常行為檢測技術(shù)出現(xiàn)的早期,Datta 等提出利用人的運(yùn)動和肢體定位來檢測人的暴力行為[1],Kooij等使用視頻和音頻數(shù)據(jù)來檢測監(jiān)控視頻中的攻擊行為[2],Cao 等提出了暴力流描述符來檢測人群視頻中的暴力行為[3],但這幾種方法都有較大的檢測誤差.最近,Mohammadi 等提出了一種新的基于行為啟發(fā)法的方法來對暴力和非暴力視頻進(jìn)行分類.除了暴力和非暴力模式的區(qū)別外,還提出使用跟蹤來對人們的正常運(yùn)動進(jìn)行建模,并將偏離正常運(yùn)動的行為作為異常進(jìn)行檢測[4].以及Chen 等提出的利用C3D和深度排名模型進(jìn)行的異常行為識別[5].
但是,上述方法只是能對某種特定的異常行為進(jìn)行檢測,例如Cao 等提出OpenPose 模型[3]只能識別人體異常行為,而無法對爆炸,車禍等異常行為進(jìn)行識別.因此本文打算對一種可以在多種視頻環(huán)境下對多種行為進(jìn)行異常檢測,且在檢測過程中能保持較大的精確度和較好的實時性的系統(tǒng)進(jìn)行研究.
本系統(tǒng)主要實現(xiàn)對視頻中異常行為的檢測功能.本系統(tǒng)的功能介紹如下:打開本軟件后,選擇本地存儲的視頻,確認(rèn)后即可立即檢測.檢測過程中,系統(tǒng)一邊播放視頻,一邊顯示異常概率曲線.隨著視頻的播放,異常概率曲線會不斷的更新跳躍,其范圍值從0 到1,值越大代表該時間段的發(fā)生異常概率行為的可能性越大.系統(tǒng)功能流程圖如圖1所示.
圖1 系統(tǒng)功能流程圖
為了實現(xiàn)異常行為識別算法,將異常行為與正常行為的進(jìn)行區(qū)分是一個不可避免的環(huán)節(jié).有效的,精準(zhǔn)的異常識別處理能將一段原始視頻對象提取出視頻行為特征.能夠精確分析視頻行為特征并給出異常行為概率估計能夠使得異常行為識別更具準(zhǔn)確性和科學(xué)性.
異常行為識別系統(tǒng)模塊主要分為5 個子模塊,如圖2所示.
圖2 系統(tǒng)模塊
(1)預(yù)處理模塊
通過本地視頻庫或者視頻流獲取待檢測視頻,將每個視頻的大小調(diào)整為240×320 像素,并把視頻的幀數(shù)率降低并固定到30 幀/s.
(2)特征提取模塊
視頻經(jīng)過預(yù)處理后,我們通過Two-Stream-I3D 網(wǎng)絡(luò)提取視頻特征,輸出為fc6-1的文件類型.首先我們將對處理過的視頻進(jìn)行截取,每16 幀作為視頻片段.接著,我們從Two-Stream-I3D 網(wǎng)絡(luò)對視頻片段進(jìn)行提取,然后進(jìn)行歸一化處理.
(3)特征處理模塊
這一模塊,運(yùn)用Python,處理上一步輸出的fc6-1 文件,處理為深度網(wǎng)絡(luò)所能學(xué)習(xí)的二維矩陣txt 文件.
(4)特征概率回歸模塊
這一模塊,將上一步所生成的經(jīng)過處理的視覺特征txt 文件,送入訓(xùn)練好的深度網(wǎng)絡(luò)模型(GRNN),搭配上已經(jīng)訓(xùn)練好的模型權(quán)重,通過模型處理對視覺特征文件進(jìn)行回歸處理,得到異常概率分?jǐn)?shù),范圍從0 到1(值越大代表發(fā)生異常概率的可能性越高).
(5)視頻播放及概率曲線顯示模塊
通過GUI 文件,將視頻片段的異常概率得分通過紅色曲線顯示出來,同時播放視頻.隨著視頻的播放,曲線不斷的跳躍更新,不斷向前滑動,最左端的曲線值代表此時的視頻的異常概率值,最終達(dá)到異常行為識別的效果.
I3D 模型[6-8]是由Inception-V1(2D)模型改良而來,其基礎(chǔ)模型結(jié)構(gòu)為InflatedInception-V1.
Inception-V1(2D)是一種目前較為成熟的圖片檢測模型,其初代模型Inception的核心就是把GoogLeNet的一部分較大的卷積層替換成小卷積,以達(dá)到減小權(quán)值參數(shù)數(shù)量的目的,而Inception-V1(2D)又對Inception模型的子程序模塊Inc.層進(jìn)行改良,添加了3 個1×1的卷積層從而降低原模塊的卷積維度.
I3D 模型對Inception-V1(2D)模型改良方法如下:I3D 網(wǎng)絡(luò)將原模型的2D 基礎(chǔ)卷積擴(kuò)展為3D 基礎(chǔ)卷積,并且在卷積核中增加時間維度,具體擴(kuò)展方式為:沿著時間維度重復(fù)2D 濾波器與其的權(quán)重相同的次數(shù),再通過除以該次數(shù)進(jìn)行歸一化處理.
InflatedInception-V1的主要的組成成分為卷積層、池化層和Inc 層.
在卷積層中,3D 卷積相比于2D 卷積能夠更好的捕捉視頻中的空間和時間信息,如果3D 卷積的時間維度為N,在檢測過程中,3D Conv 會對視頻的連續(xù)N幀圖像進(jìn)行卷積操作,每一幀的特征地圖都會與相鄰的連續(xù)幾幀相連,以此獲取運(yùn)動信息.
在池化層中,3D 池化層類似于3D 卷積,只不過不做卷積操作,只獲取當(dāng)前窗口最大值或者平均值作為新的圖像的像素值.然后在深度上以步長進(jìn)行滑動,得到多個特征地圖.
在Inc 層中,Inc 層為Inflated Inception-V1 模型的一個子程序模塊,在Inc 中,同時使用了1×1×1,3×3×3的卷積,增加了網(wǎng)絡(luò)對尺度的適應(yīng)性.其次,1×1×1 卷積有著特殊的作用,它可以用于減小權(quán)重的大小和特征地圖的維度,同時由于1×1×1 卷積只有一個參數(shù),相當(dāng)于對原始特征值做了一個scale,這無疑會對識別精度有所提升,如圖3.
圖3 Inc 層模型
在模型的最后還含有一個Softmax 層對輸出進(jìn)行分類.整個模型的架構(gòu)圖如圖4.
圖4 I3D 模型
在異常行為識別方面,基于深度學(xué)習(xí)的網(wǎng)絡(luò)模型無論在識別速度,識別精度還是系統(tǒng)的魯棒性都要遠(yuǎn)遠(yuǎn)優(yōu)于傳統(tǒng)方法.而在深度學(xué)習(xí)方法的選擇上,過去人們大多使用C3D 及其改進(jìn)的方法來對視頻進(jìn)行處理,但是由于C3D 其較為簡單的網(wǎng)絡(luò)模型,往往不能對視頻中的時空特征進(jìn)深度處理,當(dāng)遇到較復(fù)雜的情況時,傳統(tǒng)的3 維卷積神經(jīng)網(wǎng)絡(luò)就容易遺漏部分運(yùn)動特征,從而對檢測結(jié)果造成影響.因此,我們采用雙流的I3D網(wǎng)絡(luò)作為我們系統(tǒng)的特征提取模型,從而應(yīng)變各種較為復(fù)雜的情況.
廣義回歸神經(jīng)網(wǎng)絡(luò)(GRNN)[9,10]是徑向基神經(jīng)網(wǎng)絡(luò)的一種,相較于傳統(tǒng)的回歸神經(jīng)網(wǎng)絡(luò),GRNN 多添加了一層求和層,并去掉了隱含層與輸出層的權(quán)值連接(對高斯權(quán)值的最小二乘疊加),具有更高的精確度,同時GRNN 作為一個前向傳播神經(jīng)網(wǎng)絡(luò),不需要反向傳播求模型參數(shù),收斂速度快.GRNN 具有很強(qiáng)的非線性學(xué)習(xí)能力和學(xué)習(xí)速度,網(wǎng)絡(luò)最后普收斂于樣本量聚集較多的優(yōu)化回歸,當(dāng)樣本數(shù)據(jù)較少時或數(shù)據(jù)精確度較差時,GRNN 能發(fā)揮出很大的優(yōu)勢.
GRNN是一個相對簡單的4 層網(wǎng)絡(luò)結(jié)構(gòu),分別為輸入層、模式層、求和層和輸出層.如圖5.
圖5 GRNN 模型
輸入層的輸入為測試樣本,節(jié)點取決于樣本的特征維度;模式層計算每一個樣本中的Gauss 函數(shù)取值,其節(jié)點個數(shù)為訓(xùn)練樣本的個數(shù)求和層中使用兩種計算方式,第一個節(jié)點將對模式層的輸出進(jìn)行算術(shù)求和,其他節(jié)點將對模式層的神經(jīng)元進(jìn)行加權(quán)求和,其節(jié)點數(shù)為輸出樣本的維度加1;輸出層的節(jié)點數(shù)等于樣本中輸出向量的維度,輸出為對應(yīng)求和與求和層第一個節(jié)點的輸出相除.
求和層第一類求和公式:
求和層第二類求和公式:
從總體上看:本文提出的算法主要有兩部分組成:I3D 特征提取器+GRNN 分類器.
首先,視頻信息可以分為空間信息和時間信息.空間信息指的是幀畫面的表面信息;時間信息指的是幀與幀的之間的聯(lián)系.對于I3D 來說,時間維度需要設(shè)定一個適中的縮減速度,過快則可能把不同物體的邊緣信息混雜在一起,反之將無法捕捉到動態(tài)場景.因此:Two-Stream-I3D是由兩個I3D 網(wǎng)絡(luò)組成的.第一個子網(wǎng)絡(luò)是提取視頻的RGB的特征.第二個子網(wǎng)絡(luò)是提取光流的特征.雖然單個I3D 模型已經(jīng)具備從RGB 流中提取運(yùn)動特征的功能,但單個模型只包含前饋計算算法,因此我們將兩個I3D 網(wǎng)絡(luò)分開訓(xùn)練,一個對RGB 流進(jìn)行訓(xùn)練,輸入為間隔16 幀提取的RGB 視頻幀信息;另一個對光流進(jìn)行訓(xùn)練,我們分別提取視頻中水平和垂直方向的光流幀,將多幅光流圖構(gòu)成一個光流組,然后將攜帶優(yōu)化的光流信息的光流組作為輸入,同時我們在第二個I3D 模型中采用TV-L1 算法對光流進(jìn)行計算,該算法作為一個遞歸型算法,其對視頻中運(yùn)動特征的提取效率優(yōu)于單個模型.
在經(jīng)過幾層卷積和匯集后,將訓(xùn)練RGB 流子網(wǎng)所提取的特征和與訓(xùn)練光流子網(wǎng)所得的特征進(jìn)行融合,具體的融合方法為:對兩個子網(wǎng)的輸出進(jìn)行加權(quán)平均.融合后將得到進(jìn)一步的視覺特征.為了避免過度擬合,我們在每個卷積層上添加L2 正則化.如圖6.
其次,我們將 Two-Stream-I3D 模型的Softmax 分類層用GRNN 分類器代替(如圖7),將Two-Stream-I3D 網(wǎng)絡(luò)提取出的特征作為GRNN 分類器的輸入,最終達(dá)到對視覺特征進(jìn)行一個概率回歸的作用.
最后,關(guān)于優(yōu)化函數(shù),訓(xùn)練模型采用AdaGrad[11,12]隨機(jī)梯度下降函數(shù)作為模型優(yōu)化函數(shù).AdaGrad 相較于其他優(yōu)化函數(shù),它可以自適應(yīng)學(xué)習(xí)率,自適應(yīng)地為各個參數(shù)分配不同學(xué)習(xí)率.如果這次梯度大,那么學(xué)習(xí)速率衰減的就快一些;如果這次梯度小,那么學(xué)習(xí)速率衰減的就慢一些.
圖6 Two-Stream-I3D 模型
圖7 I3D-GRNN 模型結(jié)構(gòu)
本項目訓(xùn)練采用的數(shù)據(jù)集為UCF-Crime-dataset[13].該數(shù)據(jù)集是由佛羅里達(dá)大學(xué)開發(fā)的,是一個總時長為128 個小時且由1900 個時長相等未經(jīng)剪輯的真實世界監(jiān)控錄像組成的視頻集合,其中包含13 個現(xiàn)實世界中的反?,F(xiàn)象,如:打斗、交通事故、盜竊、爆炸、搶劫等,同時還包含正常的活動,視頻集大致可分為包含異常行為的視頻和不包含異常行為的視頻兩大類.其中視頻平均的幀數(shù)為7274 幀.
本次實驗環(huán)境為Ubuntu18.04和Python3,編譯環(huán)境為PyCharm,硬件環(huán)境的測試機(jī)型是戴爾G3 系列.CPU是英特爾酷睿i7 8 代系列;內(nèi)存是8 GB;硬盤是2 TB.
測試實驗分別以包含異常行為的視頻,無異常行為的視頻,隱蔽異常行為的視頻,失真度較高的視頻等不同類別的視頻為樣本,每類視頻對應(yīng)不同的情況和不同的視頻質(zhì)量,每個視頻都包含不同的場景,共50例進(jìn)行了測試
點擊運(yùn)行程序進(jìn)入主界面如圖8(b),界面中央有一個選擇視頻的按鈕,點擊按鈕彈出一個視頻文件選擇的對話框,選擇一個需要進(jìn)行檢測的視頻.左方就會出現(xiàn)一個視頻窗口演示所選擇的視頻如圖8(a).在播放視頻的過程中,控制臺會實時提示所顯示的幀數(shù).在左方出現(xiàn)視頻窗口的同時,系統(tǒng)會對視頻中每一幀的畫面進(jìn)行訓(xùn)練學(xué)習(xí),提取出特征,然后在PyCharm的SciView 里將計算出來的數(shù)據(jù)在坐標(biāo)軸上描繪出一條連續(xù)的曲線如圖8(c).橫坐標(biāo)是幀數(shù),縱坐標(biāo)是訓(xùn)練出來的特征數(shù)據(jù),范圍是0 到1.當(dāng)視頻中沒有異常行為出現(xiàn)的時候,曲線的縱坐標(biāo)接近于0;當(dāng)視頻中出現(xiàn)異常行為的時候,曲線將會有很大的浮動.
圖8 異常行為檢測系統(tǒng)
經(jīng)過上一步的實驗測試,我們選取了具有代表性的視頻樣例進(jìn)行分析,具體試驗情況如下:
(1)對包含異常行為的視頻檢測:如圖9所示,上方播放的是一個爆炸視頻,下方則是系統(tǒng)對該視頻的檢測結(jié)果.實驗結(jié)果分析,橫坐標(biāo)是幀數(shù),縱坐標(biāo)是訓(xùn)練出來的特征數(shù)據(jù),范圍是0 到1.如圖所示,當(dāng)沒有發(fā)生異常行為時,預(yù)測曲線縱坐標(biāo)無限趨近于零且?guī)缀鯖]有變化,當(dāng)異常行為發(fā)生時,曲線則會發(fā)生大幅度的向上變化,縱坐標(biāo)上升至0.7 上下,甚至在最高峰可以達(dá)到1.
(2)對無異常行為的視頻檢測:圖10為對無異常行為的視頻的檢測結(jié)果.實驗分析,由于此次視頻畫面無異常行為的發(fā)生,預(yù)測曲線縱坐標(biāo)一直處于10-9上下.將縱坐標(biāo)放大演示后,曲線也發(fā)生了上下變動,實際在原坐標(biāo)中曲線只是出現(xiàn)了小幅度的波動.
圖9 對包含異常行為的視頻檢測
圖10 對無異常行為的視頻檢測
(3)對隱蔽異常行為的視頻檢測:圖11為視頻中演示的是一名女性在超市中盜竊水杯的場景,作案動作幅度較小,畫面沒有發(fā)生大幅變化.實驗結(jié)果分析,即便此異常行為較為隱蔽,系統(tǒng)仍然檢測出了該異常行為.當(dāng)異常行為發(fā)生時,預(yù)測曲線出現(xiàn)了大幅跳躍,縱坐標(biāo)一度達(dá)到了0.8 以上.
圖11 對隱蔽異常行為的視頻檢測
(4)對失真度較高的視頻檢測:圖12為系統(tǒng)檢測失真度較高且包含異常行為的視頻的結(jié)果.視頻中演示的是較遠(yuǎn)處發(fā)生爆炸的畫面,視頻沒有發(fā)生較大幅度的畫面變化,只在畫面左上方出現(xiàn)了爆炸的濃煙.實驗結(jié)果分析,當(dāng)視頻失真度較高時,系統(tǒng)依舊能檢測出異常行為的發(fā)生,即使縱坐標(biāo)只能達(dá)到0.4 便出現(xiàn)了下降的趨勢.
實通過上述實驗結(jié)果可以看出經(jīng)過近50 例的測試集視頻的測試,發(fā)現(xiàn)系統(tǒng)能較為正常高效運(yùn)行.異常行為發(fā)生時的預(yù)測值與無異常行為時相差最高可為0.9 以上,最低也能達(dá)到0.3 以上,遠(yuǎn)遠(yuǎn)大于無異常行為時的數(shù)值波動,可以明確的檢測出異常行為的發(fā)生.
圖12 對失真度較高的視頻檢測
由表1數(shù)據(jù)可得出,通過4 種類型的視頻進(jìn)行測試,對無異常行為類型視頻識別準(zhǔn)確率最高達(dá)到80%.對包含隱蔽異常行為的視頻類型識別率最低,只有55.6%.在實際測試發(fā)現(xiàn),系統(tǒng)常常把含隱蔽異常行為的視頻當(dāng)作無異常行為進(jìn)行識別.最后系統(tǒng)測試的平均準(zhǔn)確率達(dá)74%,具有較精準(zhǔn)的識別功能.
表1 視頻類別數(shù)據(jù)量與識別準(zhǔn)確率
為了驗證本文算法驗證本文算法的優(yōu)越性,選用支持向量機(jī)[14]、隨機(jī)森林[15],C3D-GRNN[16]、KNN 以及普通 C3D 模型這5 種方法對異常行為視頻進(jìn)行分類識別,識別所耗時間分別如表2所示.由表2的結(jié)果可知,與普通 C3D 模型、C3D-GRNN 模型等典型方法相比,本文算法識別單個樣本幀效率具有較大的提高,同時也十分接近目前較優(yōu)的算法(SVM、KNN)的檢測時間.
本文利用目前火熱的深度學(xué)習(xí)網(wǎng)絡(luò)技術(shù)和Two-Stream-I3D 技術(shù),開發(fā)出一款智能識別視頻異常行為的系統(tǒng),能夠有效幫助監(jiān)控機(jī)構(gòu)智能化監(jiān)控,減少人工資源的浪費.
本文利用Two-Stream-I3D 特征提取技術(shù)提取出視頻特征,經(jīng)過Python 處理視覺特征后,進(jìn)行GRNN回歸網(wǎng)絡(luò)訓(xùn)練,最終達(dá)到根據(jù)視覺特征能進(jìn)行概率估計回歸的一個效果.最后,經(jīng)過一定數(shù)量測試集視頻測試,證明本文所述方法編寫的系統(tǒng)具備了對視頻監(jiān)控中異常行為的檢測能力,可以滿足多種異常行為的檢測,可以在多種視頻環(huán)境下進(jìn)行異常行為檢測,且在檢測過程中能保持較大的精確度和較好的實時性,對于監(jiān)控機(jī)構(gòu)進(jìn)行智能化監(jiān)控具有重要的現(xiàn)實意義.
表2 視頻類別數(shù)據(jù)量與識別準(zhǔn)確率