劉良鑫,林勉芬,鐘良泉,彭雯雯,曲 超,潘家輝
(華南師范大學 軟件學院,佛山 528225)
隨著人工智能和圖像處理技術的快速發展,基于深度學習的智能視頻監控系統研究具有重要意義.近年來,在國家政策的支持下,安防行業飛速發展,政府、企業、機關、城市、社區都在配合國家的安全工作進行相關的部署,努力打造一個智慧和安全的國家.隨著科技的發展,智能監控技術也在不斷地進步,而目前的監控任務主要還是依靠人工實現,需要大量的人力、物力對海量的視頻內容進行觀看和分析.不能有效地利用現有的資源.所以為了解決這個困難,本項目的研究內容就是實現對視頻中異常行為的自動篩選和實時檢測.
1.2.1 智能視頻監控系統研究現狀
智能視頻監控系統是通過計算機視覺技術、圖像視頻處理技術和人工智能的識別技術對監控視頻的內容進行分析,然后根據分析的結果對系統進行控制.
在國外,美國國防高級研究(DARPA)設立了一個視覺監控重大研究項目VSAM.該項目從1997年就開始設立了,由卡內基梅隆大學(CMU)、麻省理工學院(MIT)還有馬里蘭大學等著名高校和研究機構參與研究.VSAM 項目可以說是最早的視頻監控的智能化的開端,主要研究用于戰場、未來城市和普通民用場景進行監控的自動視頻理解技術.
美國的Microsoft、GE、IBM 等公司也對智能監控系統進行了研究,如GE的VideoIQ 產品,可以在多種場景下進行檢測.而國內在這方面發展較晚,但也有比較優秀的成果,如中科院北京自動化研究所下的模式識別國家重點實驗室,主要研究模式識別、計算機視覺、圖像處理與圖形學、自然語言處理以及模式識別應用與系統等.其中譚鐵牛研究員領銜的科研團隊開發了可對突發事件進行全天候實時監控預警的“智能視頻監控系統”,而且成功應用于北京奧運會安保工作.除此之外該研究所還有其他的研究成果,包括:目標異常行為的識別與報警、異常的物體滯留或丟失檢測、人群流量評估及擁堵報警、監控狀態下的人臉跟蹤與識別等.
1.2.2 異常行為檢測研究現狀
在異常行為檢測技術出現的早期,Datta 等提出利用人的運動和肢體定位來檢測人的暴力行為[1],Kooij等使用視頻和音頻數據來檢測監控視頻中的攻擊行為[2],Cao 等提出了暴力流描述符來檢測人群視頻中的暴力行為[3],但這幾種方法都有較大的檢測誤差.最近,Mohammadi 等提出了一種新的基于行為啟發法的方法來對暴力和非暴力視頻進行分類.除了暴力和非暴力模式的區別外,還提出使用跟蹤來對人們的正常運動進行建模,并將偏離正常運動的行為作為異常進行檢測[4].以及Chen 等提出的利用C3D和深度排名模型進行的異常行為識別[5].
但是,上述方法只是能對某種特定的異常行為進行檢測,例如Cao 等提出OpenPose 模型[3]只能識別人體異常行為,而無法對爆炸,車禍等異常行為進行識別.因此本文打算對一種可以在多種視頻環境下對多種行為進行異常檢測,且在檢測過程中能保持較大的精確度和較好的實時性的系統進行研究.
本系統主要實現對視頻中異常行為的檢測功能.本系統的功能介紹如下:打開本軟件后,選擇本地存儲的視頻,確認后即可立即檢測.檢測過程中,系統一邊播放視頻,一邊顯示異常概率曲線.隨著視頻的播放,異常概率曲線會不斷的更新跳躍,其范圍值從0 到1,值越大代表該時間段的發生異常概率行為的可能性越大.系統功能流程圖如圖1所示.

圖1 系統功能流程圖
為了實現異常行為識別算法,將異常行為與正常行為的進行區分是一個不可避免的環節.有效的,精準的異常識別處理能將一段原始視頻對象提取出視頻行為特征.能夠精確分析視頻行為特征并給出異常行為概率估計能夠使得異常行為識別更具準確性和科學性.
異常行為識別系統模塊主要分為5 個子模塊,如圖2所示.

圖2 系統模塊
(1)預處理模塊
通過本地視頻庫或者視頻流獲取待檢測視頻,將每個視頻的大小調整為240×320 像素,并把視頻的幀數率降低并固定到30 幀/s.
(2)特征提取模塊
視頻經過預處理后,我們通過Two-Stream-I3D 網絡提取視頻特征,輸出為fc6-1的文件類型.首先我們將對處理過的視頻進行截取,每16 幀作為視頻片段.接著,我們從Two-Stream-I3D 網絡對視頻片段進行提取,然后進行歸一化處理.
(3)特征處理模塊
這一模塊,運用Python,處理上一步輸出的fc6-1 文件,處理為深度網絡所能學習的二維矩陣txt 文件.
(4)特征概率回歸模塊
這一模塊,將上一步所生成的經過處理的視覺特征txt 文件,送入訓練好的深度網絡模型(GRNN),搭配上已經訓練好的模型權重,通過模型處理對視覺特征文件進行回歸處理,得到異常概率分數,范圍從0 到1(值越大代表發生異常概率的可能性越高).
(5)視頻播放及概率曲線顯示模塊
通過GUI 文件,將視頻片段的異常概率得分通過紅色曲線顯示出來,同時播放視頻.隨著視頻的播放,曲線不斷的跳躍更新,不斷向前滑動,最左端的曲線值代表此時的視頻的異常概率值,最終達到異常行為識別的效果.
I3D 模型[6-8]是由Inception-V1(2D)模型改良而來,其基礎模型結構為InflatedInception-V1.
Inception-V1(2D)是一種目前較為成熟的圖片檢測模型,其初代模型Inception的核心就是把GoogLeNet的一部分較大的卷積層替換成小卷積,以達到減小權值參數數量的目的,而Inception-V1(2D)又對Inception模型的子程序模塊Inc.層進行改良,添加了3 個1×1的卷積層從而降低原模塊的卷積維度.
I3D 模型對Inception-V1(2D)模型改良方法如下:I3D 網絡將原模型的2D 基礎卷積擴展為3D 基礎卷積,并且在卷積核中增加時間維度,具體擴展方式為:沿著時間維度重復2D 濾波器與其的權重相同的次數,再通過除以該次數進行歸一化處理.
InflatedInception-V1的主要的組成成分為卷積層、池化層和Inc 層.
在卷積層中,3D 卷積相比于2D 卷積能夠更好的捕捉視頻中的空間和時間信息,如果3D 卷積的時間維度為N,在檢測過程中,3D Conv 會對視頻的連續N幀圖像進行卷積操作,每一幀的特征地圖都會與相鄰的連續幾幀相連,以此獲取運動信息.
在池化層中,3D 池化層類似于3D 卷積,只不過不做卷積操作,只獲取當前窗口最大值或者平均值作為新的圖像的像素值.然后在深度上以步長進行滑動,得到多個特征地圖.
在Inc 層中,Inc 層為Inflated Inception-V1 模型的一個子程序模塊,在Inc 中,同時使用了1×1×1,3×3×3的卷積,增加了網絡對尺度的適應性.其次,1×1×1 卷積有著特殊的作用,它可以用于減小權重的大小和特征地圖的維度,同時由于1×1×1 卷積只有一個參數,相當于對原始特征值做了一個scale,這無疑會對識別精度有所提升,如圖3.

圖3 Inc 層模型
在模型的最后還含有一個Softmax 層對輸出進行分類.整個模型的架構圖如圖4.

圖4 I3D 模型
在異常行為識別方面,基于深度學習的網絡模型無論在識別速度,識別精度還是系統的魯棒性都要遠遠優于傳統方法.而在深度學習方法的選擇上,過去人們大多使用C3D 及其改進的方法來對視頻進行處理,但是由于C3D 其較為簡單的網絡模型,往往不能對視頻中的時空特征進深度處理,當遇到較復雜的情況時,傳統的3 維卷積神經網絡就容易遺漏部分運動特征,從而對檢測結果造成影響.因此,我們采用雙流的I3D網絡作為我們系統的特征提取模型,從而應變各種較為復雜的情況.
廣義回歸神經網絡(GRNN)[9,10]是徑向基神經網絡的一種,相較于傳統的回歸神經網絡,GRNN 多添加了一層求和層,并去掉了隱含層與輸出層的權值連接(對高斯權值的最小二乘疊加),具有更高的精確度,同時GRNN 作為一個前向傳播神經網絡,不需要反向傳播求模型參數,收斂速度快.GRNN 具有很強的非線性學習能力和學習速度,網絡最后普收斂于樣本量聚集較多的優化回歸,當樣本數據較少時或數據精確度較差時,GRNN 能發揮出很大的優勢.
GRNN是一個相對簡單的4 層網絡結構,分別為輸入層、模式層、求和層和輸出層.如圖5.

圖5 GRNN 模型
輸入層的輸入為測試樣本,節點取決于樣本的特征維度;模式層計算每一個樣本中的Gauss 函數取值,其節點個數為訓練樣本的個數求和層中使用兩種計算方式,第一個節點將對模式層的輸出進行算術求和,其他節點將對模式層的神經元進行加權求和,其節點數為輸出樣本的維度加1;輸出層的節點數等于樣本中輸出向量的維度,輸出為對應求和與求和層第一個節點的輸出相除.
求和層第一類求和公式:

求和層第二類求和公式:

從總體上看:本文提出的算法主要有兩部分組成:I3D 特征提取器+GRNN 分類器.
首先,視頻信息可以分為空間信息和時間信息.空間信息指的是幀畫面的表面信息;時間信息指的是幀與幀的之間的聯系.對于I3D 來說,時間維度需要設定一個適中的縮減速度,過快則可能把不同物體的邊緣信息混雜在一起,反之將無法捕捉到動態場景.因此:Two-Stream-I3D是由兩個I3D 網絡組成的.第一個子網絡是提取視頻的RGB的特征.第二個子網絡是提取光流的特征.雖然單個I3D 模型已經具備從RGB 流中提取運動特征的功能,但單個模型只包含前饋計算算法,因此我們將兩個I3D 網絡分開訓練,一個對RGB 流進行訓練,輸入為間隔16 幀提取的RGB 視頻幀信息;另一個對光流進行訓練,我們分別提取視頻中水平和垂直方向的光流幀,將多幅光流圖構成一個光流組,然后將攜帶優化的光流信息的光流組作為輸入,同時我們在第二個I3D 模型中采用TV-L1 算法對光流進行計算,該算法作為一個遞歸型算法,其對視頻中運動特征的提取效率優于單個模型.
在經過幾層卷積和匯集后,將訓練RGB 流子網所提取的特征和與訓練光流子網所得的特征進行融合,具體的融合方法為:對兩個子網的輸出進行加權平均.融合后將得到進一步的視覺特征.為了避免過度擬合,我們在每個卷積層上添加L2 正則化.如圖6.
其次,我們將 Two-Stream-I3D 模型的Softmax 分類層用GRNN 分類器代替(如圖7),將Two-Stream-I3D 網絡提取出的特征作為GRNN 分類器的輸入,最終達到對視覺特征進行一個概率回歸的作用.
最后,關于優化函數,訓練模型采用AdaGrad[11,12]隨機梯度下降函數作為模型優化函數.AdaGrad 相較于其他優化函數,它可以自適應學習率,自適應地為各個參數分配不同學習率.如果這次梯度大,那么學習速率衰減的就快一些;如果這次梯度小,那么學習速率衰減的就慢一些.

圖6 Two-Stream-I3D 模型

圖7 I3D-GRNN 模型結構
本項目訓練采用的數據集為UCF-Crime-dataset[13].該數據集是由佛羅里達大學開發的,是一個總時長為128 個小時且由1900 個時長相等未經剪輯的真實世界監控錄像組成的視頻集合,其中包含13 個現實世界中的反常現象,如:打斗、交通事故、盜竊、爆炸、搶劫等,同時還包含正常的活動,視頻集大致可分為包含異常行為的視頻和不包含異常行為的視頻兩大類.其中視頻平均的幀數為7274 幀.
本次實驗環境為Ubuntu18.04和Python3,編譯環境為PyCharm,硬件環境的測試機型是戴爾G3 系列.CPU是英特爾酷睿i7 8 代系列;內存是8 GB;硬盤是2 TB.
測試實驗分別以包含異常行為的視頻,無異常行為的視頻,隱蔽異常行為的視頻,失真度較高的視頻等不同類別的視頻為樣本,每類視頻對應不同的情況和不同的視頻質量,每個視頻都包含不同的場景,共50例進行了測試
點擊運行程序進入主界面如圖8(b),界面中央有一個選擇視頻的按鈕,點擊按鈕彈出一個視頻文件選擇的對話框,選擇一個需要進行檢測的視頻.左方就會出現一個視頻窗口演示所選擇的視頻如圖8(a).在播放視頻的過程中,控制臺會實時提示所顯示的幀數.在左方出現視頻窗口的同時,系統會對視頻中每一幀的畫面進行訓練學習,提取出特征,然后在PyCharm的SciView 里將計算出來的數據在坐標軸上描繪出一條連續的曲線如圖8(c).橫坐標是幀數,縱坐標是訓練出來的特征數據,范圍是0 到1.當視頻中沒有異常行為出現的時候,曲線的縱坐標接近于0;當視頻中出現異常行為的時候,曲線將會有很大的浮動.

圖8 異常行為檢測系統
經過上一步的實驗測試,我們選取了具有代表性的視頻樣例進行分析,具體試驗情況如下:
(1)對包含異常行為的視頻檢測:如圖9所示,上方播放的是一個爆炸視頻,下方則是系統對該視頻的檢測結果.實驗結果分析,橫坐標是幀數,縱坐標是訓練出來的特征數據,范圍是0 到1.如圖所示,當沒有發生異常行為時,預測曲線縱坐標無限趨近于零且幾乎沒有變化,當異常行為發生時,曲線則會發生大幅度的向上變化,縱坐標上升至0.7 上下,甚至在最高峰可以達到1.
(2)對無異常行為的視頻檢測:圖10為對無異常行為的視頻的檢測結果.實驗分析,由于此次視頻畫面無異常行為的發生,預測曲線縱坐標一直處于10-9上下.將縱坐標放大演示后,曲線也發生了上下變動,實際在原坐標中曲線只是出現了小幅度的波動.

圖9 對包含異常行為的視頻檢測

圖10 對無異常行為的視頻檢測
(3)對隱蔽異常行為的視頻檢測:圖11為視頻中演示的是一名女性在超市中盜竊水杯的場景,作案動作幅度較小,畫面沒有發生大幅變化.實驗結果分析,即便此異常行為較為隱蔽,系統仍然檢測出了該異常行為.當異常行為發生時,預測曲線出現了大幅跳躍,縱坐標一度達到了0.8 以上.

圖11 對隱蔽異常行為的視頻檢測
(4)對失真度較高的視頻檢測:圖12為系統檢測失真度較高且包含異常行為的視頻的結果.視頻中演示的是較遠處發生爆炸的畫面,視頻沒有發生較大幅度的畫面變化,只在畫面左上方出現了爆炸的濃煙.實驗結果分析,當視頻失真度較高時,系統依舊能檢測出異常行為的發生,即使縱坐標只能達到0.4 便出現了下降的趨勢.
實通過上述實驗結果可以看出經過近50 例的測試集視頻的測試,發現系統能較為正常高效運行.異常行為發生時的預測值與無異常行為時相差最高可為0.9 以上,最低也能達到0.3 以上,遠遠大于無異常行為時的數值波動,可以明確的檢測出異常行為的發生.

圖12 對失真度較高的視頻檢測
由表1數據可得出,通過4 種類型的視頻進行測試,對無異常行為類型視頻識別準確率最高達到80%.對包含隱蔽異常行為的視頻類型識別率最低,只有55.6%.在實際測試發現,系統常常把含隱蔽異常行為的視頻當作無異常行為進行識別.最后系統測試的平均準確率達74%,具有較精準的識別功能.

表1 視頻類別數據量與識別準確率
為了驗證本文算法驗證本文算法的優越性,選用支持向量機[14]、隨機森林[15],C3D-GRNN[16]、KNN 以及普通 C3D 模型這5 種方法對異常行為視頻進行分類識別,識別所耗時間分別如表2所示.由表2的結果可知,與普通 C3D 模型、C3D-GRNN 模型等典型方法相比,本文算法識別單個樣本幀效率具有較大的提高,同時也十分接近目前較優的算法(SVM、KNN)的檢測時間.
本文利用目前火熱的深度學習網絡技術和Two-Stream-I3D 技術,開發出一款智能識別視頻異常行為的系統,能夠有效幫助監控機構智能化監控,減少人工資源的浪費.
本文利用Two-Stream-I3D 特征提取技術提取出視頻特征,經過Python 處理視覺特征后,進行GRNN回歸網絡訓練,最終達到根據視覺特征能進行概率估計回歸的一個效果.最后,經過一定數量測試集視頻測試,證明本文所述方法編寫的系統具備了對視頻監控中異常行為的檢測能力,可以滿足多種異常行為的檢測,可以在多種視頻環境下進行異常行為檢測,且在檢測過程中能保持較大的精確度和較好的實時性,對于監控機構進行智能化監控具有重要的現實意義.

表2 視頻類別數據量與識別準確率