符祖峰 劉 松 王德紅 牟 珍 鄭維鑫
(1、2、4、5.安順學院電子與信息工程學院,貴州 安順561000)(3.《安順學院學報》編輯部,貴州 安順561000)
傳統的異常檢測方法主要分為兩類:局部特征建模方法和全局特征建模方法。局部特征建模方法基于局部視覺特征的模型來表示事件,并基于統計、詞袋、稀疏表示、特征學習等技術來檢測異常。在文獻[1]中提出了一個用于描述異常活動檢測的統計模型。這個模型主要考慮在高維空間中觀測到的特征。假設正常行為特征的概率分布密度函數為g0(·),異常行為特征的概率分布密度函數為g1(·)。則異常行為檢測就可以看成預測一個實例服從的概率密度函數是g0(·)還是g1(·)。但是這些分布通常是未知的,即使給出了訓練數據也很難估算出來。同時帶標簽數據的不足、異常行為的多樣性、背景的多變性給檢測帶來很多的困難。文獻[2]提出了基于局部時空特征的多尺度的非參數化的異常行為檢測方法,直接計算多尺度局部特征的統計信息。非參數化方法不依賴于從訓練數據中學習到的基于運動和外觀特征的參數模型,而是直接用時空描述符來表達場景的正常程度。文獻[3]提出了稀疏組合學習框架用于異常行為檢測,將原來的復雜問題轉化為小規模的最小二乘優化問題。文獻[4]使用支持向量機進行異常檢測,用最大子序列搜索方法進行異常定位。文獻[5]提出了基于時空信息表示圖像紋理的人群異常檢測算法,用低層次的統計特征來避免復雜的機器學習和識別過程。文獻[6]利用光流特征和前景占用特征從單元結構中提取壓縮的描述性特征,通過高斯混合模型來評估壓縮特征集,用馬爾科夫鏈和詞袋方法來檢測異常事件。
全局特征建模方法將視頻中的實體作為一個整體,常基于密度、軌跡等整體特征進行異常檢測。文獻[7]提出基于整體特征和密度的人群異常檢測方法,從人群沖突、集體性、運動速度、密度四個維度提出了場景層面的整體特征。運動不穩定性在文獻[8]中被用于無監督的識別異常事件。文獻[9]提出結合運動矢量用運動金字塔來對視頻幀進行分層處理。這種分層處理方法減少了計算開銷,從而實現實時的異常檢測。文獻[10]通過計算運動矢量的空間導數,利用假設檢驗技術檢測密集人群中的恐慌行為。文獻[11]建立了一種時空運動分析方法,通過評估幀上運動加速度的一致性來檢測異常事件。文獻[12]基于顯著時空特征和稀疏組合學習,將時空梯度模型與前景檢測相結合,實現了異常行為的自動檢測和識別。
深度學習技術在異常事件檢測中已經有了一定的研究成果,但整個研究尚處于起步階段。本文將從評價指標、常見的神經網絡模型、檢測框架和基準數據集四個方面進行詳細的介紹。
人群異常檢測是指在室內或室外環境中基于視頻檢測人群是否出現異常事件。檢測的異常事件分為暴力性的和非暴力性的。暴力性的異常事件有群毆、踩踏、聚集、奔跑、恐慌逃散等。非暴力性的事件有跌倒、徘徊、圍觀、靜坐等。檢測的目標可以是個體也可以是群體。
異常檢測使用的性能包括真陽性率、假陽性率、精確率、召回率、檢測速度等。令TP是正樣本中被預測正確的數量,TN是正樣本中被漏報的數量;FP是負樣本被誤報的數量,FN是負樣本中被預測正確的數量。
真陽性率(True Positive Rate, TPR)
TPR = TP / (TP +FN).
假陽性率(False Positive Rate, FPR)
FPR = FP / (FP + TN).
精確率(Precision, P)
P = TP / (TP + FP).
召回率(Recall, R)
R = TP / (TP + FN).
幀每秒(Frames per second, FPS),表示算法的處理速度。
ROC(Receiver Operating Characteristic)曲線
ROC曲線是一個二維圖形,其橫軸表示假陽性率,縱軸表示真陽性率。這種曲線能夠可視化的比較各種檢測方法的性能。在異常行為檢測中,它用于顯示檢測方法對真陽性與假陽性之間的性能權衡。
ROC線下面積(AUC)
AUC是指ROC曲線下與坐標軸之間的面積,是衡量檢測算法優劣的一種性能指標。當AUC=1時,對應的分類算法成為完美分類器。
等錯誤率(Equal Error rate, EER)
等錯誤率是指在ROC曲線中錯分正負樣本概率相等的點,也就是ROC曲線與[1,0]-[0,1]連線的交點,用來衡量算法的平均錯誤率。
等檢測率(Equal Detection Rate, EDR)
等檢測率是指在等錯誤率下對應的檢出率(Detection Rate,DR)。
目前已有多種深度神經網絡結構用于檢測異常行為,如卷積神經網絡(CNN)[13]、長短時記憶網絡(LSTM)[14]、自編碼器(AE)[15]和生成對抗網絡(GANs)[16]。
(1)卷積神經網絡
卷積神經網絡已成為深度學習中最常見的網絡結構。改變網絡的深度和廣度,就可以調整模型的能力,使之更具泛化性。在很多問題上卷積神經網絡都獲得很好的效果,主要是因為它的設計是基于圖像的本質上一些強有力且基本正確的假設,如統計結果的穩定性和像素依賴的局部性。在卷積神經網絡中,每一個卷積核可以看成某一種特征的探測器。越是高層的卷積核所提取的特征就越抽象,隱含的語義就越豐富。為了解決具體的問題,卷積神經網絡已經出現了很多變種,如2維卷積和3維卷積已經被用于處理視頻信息。
(2)長短時記憶網絡
與卷積神經網絡相比,遞歸神經網絡(RNN)更擅長處理序列數據,能讓每一步的計算都利用以前的信息,在自然語言處理中取得了巨大的成功。但是,一般的遞歸神經網絡無法處理長期依賴[17]。為了解決這個問題,長短時記憶網絡被設計出來。這種網絡模型屬于遞歸神經網絡,但通過添加一些邏輯門,顯式地允許遞歸神經網絡學習何時使用“忘記門”忘記以前的隱藏狀態,以及何時根據新的輸入更新隱藏狀態。文獻[18]提出了基于時空的長短時記憶網絡(Temporal and Spatial LSTM, TS-LSTM)。文獻[19]提出了基于注意力的長短時記憶網絡(Residual Attention-based LSTM, Res-ATT),解決了分層長短時記憶網絡的退化問題。
(3)生成對抗網絡
生成對抗網絡具有兩個不同的網絡,一個命名為生成器,另一個命名為判別器。在訓練期間,生成器的目標是隨機生成盡可能真實的實例使得能夠騙過判別器,判別器的目標是盡可能判斷準確從而不被生成器欺騙。通過對抗學習,生成器能夠生成非常接近真實數據的新數據,從而使得生成對抗網絡能夠在沒有外界監督的情況下獲得一個很好的信息重建能力。其中內部監督信息是依靠生成器和判別器相互博弈來獲取的。
帶條件的生成對抗網絡(conditional GANs)[16]學到了有附加條件的數據生成模型,被用于解決圖像到圖像的翻譯轉換問題[20]。帶各種條件的生成對抗網絡也已經被設計出來,如深度卷積生成對抗網絡(Deep Convolutional Gans)、循環一致生成對抗網絡(Cycle-Consistent Adversarial Networks)等。
(4)自動編碼器
大多數的異常檢測方法都基于自編碼器。自編碼器能夠通過無監督學習,對原始數據進行重構,從而學到輸入數據的高效表示,網絡結構如圖1所示。

圖1 自編碼器的結構示意圖
自編碼器的重構誤差為
其中xi對應于原始數據,oi對應于重構的輸出。自編碼器通過極小化重構誤差來學習數據的統計特征。為了應對各種實際任務,自編碼器出現了很多變種。在重構誤差中增加針對隱藏層參數的懲罰項使得自編碼器的參數稀疏。這樣的自編碼器被稱為稀疏自編碼器(Sparse AE,SAE),常用來處理遷移學習問題。去噪自編碼器(Denoising AE, DAE)是自編碼器的隨機增強版,在輸入端增加了隨機腐蝕層,腐蝕樣本常用白噪聲或椒鹽噪聲。將多個去噪自編碼器聯接起來,形成一個深度框架,就變成了棧式去噪自編碼器(Stacked denoising AE, SDAE),常被用于學習視頻數據的外觀和運動特征表示。為了加快運算速度,使用單層的自編碼器的邊緣棧式去噪自編碼器(Marginalized Denoising AE, MDA)被提出,在計算速度和性能之間作了一個平衡。
深度神經網絡的訓練是耗時的,利用預訓練的網絡模型進行遷移學習是加速網絡訓練的常用手段。經常被使用的預訓練網絡模型有AlexNet、ZFNet、VGGNET、Fast-rcnn等。
(1)AlexNet
AlexNet[13]是一個深度卷積神經網絡,在2010年的ImageNet競賽中獲得了圖像分類大賽的第一名。這個網絡有5個卷積層、最大池化層、3個全連接層,有650000個神經元和6000萬個參數,能夠實現1000類的圖像分類。AlexNet網絡用ReLU函數作為激活函數,用局部歸一化方法增強泛化能力,并用數據擴張和輟學機制(dropout)減少過擬合的出現。基于在圖像分類問題上的成功,訓練好的AlexNET常被用于作為一個部件,組合到其他的網絡結構中實現遷移學習。ZFNet是AlexNet的修改版,使用特征可視化技術對網絡結構進行了優化,在2014年ImageNet競賽中獲得了很好的成績。
(2)VGGNet
VGGnet[21]是2014年ImageNet競賽的第二名,因具有很好的可遷移性而備受關注。該網絡模型使用具有非常小的接受域的卷積核,如3×3的卷積核剛好可以捕捉上/下/左/右/中的信息,1×1的卷積核被看成是一種線性變換。整個網絡結構是多個卷積層堆疊后接入三個全連接層,最后用Softmax層來實現1000類的圖像分類。常見的VGGNet是16層卷積層加上3層的全連接層,具有14400萬個參數。
(3)Fast-rcnn
Fast-rcnn[22]網絡將卷積神經網絡用于目標檢測,極大的提高了檢測速度。該網絡首先用卷積神經網絡來提取圖像特征,再借助篩選過的Region Proposals使用Roi pooling層抽取里面的特征,同時使用金字塔池化方法來應對不同尺度的目標,最后用Roi Network進行分類判斷和邊框回歸。
傳統的異常檢測方法依賴于手工提取的特征,并根據這些特征來設計分類算法實現異常事件的識別。算法的優劣取決于特征提取算法和分類算法的性能。基于深度學習的異常檢測使用深度神經網絡實現特征的自動提取、自動選擇有用的特征、自動利用特征進行識別,基本上實現了端到端的識別與檢測。傳統方法和深度學習方法的不同如圖2所示。基于深度學習的異常檢測方法可以分為四種模型:時間規律模型、時空模型、表示學習模型、生成模型。

圖2 傳統方法與深度學習算法對比
該模型側重于評估卷積神經網絡提取的特征隨時間的變化,采用類似于二值分類器的分類方法對連續視頻幀進行迭代區分,從而實現在視頻中捕捉異常信息。文獻[20]提出了時間卷積網絡,用二值量化層作為卷積神經網絡的最后一層,來表達時間運動模式。為了維護相鄰幀的局部信息,文獻[23]使用棧式遞歸神經網絡(Stacked RNN)實現時間連續的稀疏編碼,采用淺層結構加快了異常行為的識別速度。基于稀疏編碼進行異常行為檢測,讓正常行為對應一個較小的重構誤差,發生異常時出現較大的重構誤差。
時空模型的靈感來自于從視頻獲得的顯著性信息。通過從幀的顯著性區域獲取空間信息,用多尺度直方圖光流來獲取運動的時間信息,實現了異常事件的檢測。文獻[24]首次使用時空卷積神經網絡進行異常檢測和定位。文獻[25]將一個多尺度的Fast-rcnn網絡與環境特異性異常檢測相結合實現異常檢測與計數。文獻[26]為了對視頻中實體的速度和方向進行建模,將光流特征輸入到卷積神經網絡,結合支持向量機實現了端到端的異常檢測。
文獻[27]使用深度緩增特征分析網絡對視頻進行高層次的抽象后實現異常事件識別。全局異常檢測采用時間建模方法,局部異常檢測采用基于差的平方和的多尺度分析方法。這種方法不依賴于任何分類器,也不使用手工制作的特性表示。文獻[28]提出了基于回歸的深度度量學習方法,不僅可以基于特征提取密度,還可以實現更好的距離測量,可以被用于異常行為檢測。
全卷積神經網絡首次在[29]中被用于異常檢測。這種方法使用預訓練的AlexNet網絡提取特征,用稀疏自編碼器來表示特征,用高斯模型來檢測異常。文獻[30]提出了競爭級聯的深度神經網絡,它組合了棧式自編碼器和卷積神經網絡。為了實現高效的時間異常檢測,利用級聯神經網絡的淺層特征來檢測背景簡單的圖片碎片,而深層特征用來檢測其他復雜的圖片碎片。文獻[31]用三個堆疊去噪自編碼器來學習外觀和運動的聯合表示,并用支持向量機對異常進行評分。為了解決缺乏異常真實數據和異常的模糊性等問題,對抗生成網絡被用于異常檢測[32]。在這種框架下,多通道的表示形式用于外觀和運動信息的融合。
為了更好地驗證各種檢測方法的效果,需要在公開數據集上做對比實驗。目前常用的用于異常檢測的基準數據集有UMN數據集、USCSD數據集、PETS數據集、Subway數據集、Avenue數據集、Train數據集、ScenicSpot數據集。
(1)UMN數據集
UMN數據集是明尼蘇達州大學搜集的一個數據集,其中包含11個正常和異常的人群視頻,分別在草坪、廣場和室內三個不同的場景中。每個視頻都有一個正常行為的初始階段,并以一系列異常行為結束。行人四處走動的場景認為是正常樣本,模擬人們奔跑的恐慌場景被視為異常樣本。數據集的圖像分辨率為240×320。
(2)UCSD數據集[33]
UCSD行人數據集是用靜態攝像機以每秒10幀的速度捕捉不同的擁擠場景和異常情況,人群密度從稀疏到極度擁擠變化很大。整個數據集分為兩個子集Ped1和Ped2。Ped1有34個訓練序列和16個測試序列,約有3400個異常幀和5500個正常幀,圖像分辨率為238×158像素。Ped2有16個訓練和12個測試圖像序列,約有1652個異常幀和346個正常幀,圖像分辨率為360×240像素。訓練數據集只包含由行人組成的正常視頻事件。異常事件以非行人或異常運動模式為特征。
(3)PETS數據集
PETS數據集常被用于行為識別、跟蹤等任務。該數據集包含兩種不同的異常事件場景。在第一個場景中,正常事件被定義為朝不同方向行走的人,而異常事件被定義為朝同一方向聚集并向前行走的人。在第二個場景中,正常事件定義為在一個隊列中行走的人,而異常事件定義為離開隊列的人。由于視野和光照有明顯的變化,行為檢測具有一定的難度。
(4)Subway數據集[33]
Subway數據集對應兩個不同的地鐵站場景(入口和出口)監控視頻。視頻時長分別為96分鐘(144,249幀)和43分鐘(64,900幀)。在入口場景中,有66個不正常的事件,包括錯誤方向移動、人們不尋常的手勢交互、突然停止或奔跑、逃票。在出口場景中包括19個異常事件,如錯誤方向移動和游蕩。圖像分辨率為512×384像素。該數據集存在異常數量少、空間可預測的不足。
(5)Avenue數據集[3]
Avenue數據集包含16個和21個分別用于訓練和測試的視頻。異常事件包括游蕩、運行、拋出對象等。主要的挑戰是輕微的相機抖動、訓練視頻中的一些異常值以及訓練集部分正常模式缺失。
(6)Train數據集[34]
Train數據集主要是記錄了在火車里走來走去的人,包含19218幀。異常事件主要是因人的異常動作造成。因動態光照變化和相機抖動問題,該數據集成為一個具有挑戰性的異常事件檢測數據集。
(7)ScenicSpot數據集[35]
ScenicSpot數據集是一個旅游視頻數據集,包括18個視頻剪輯(5964幀)。人的正常行走是正常事件。人群突然恐慌分散、快速運行、擁堵、踩踏、打架、亂扔東西是異常事件。
異常檢測一直是計算機視覺的研究熱點,對提高室內和室外場所的安全性具有重要意義。本文從檢測指標、基本網絡模型、檢測框架、基準數據集四個方面介紹了深度學習在異常檢測方面的研究進展。雖然利用深度學習進行異常檢測已經取得了顯著的效果,但離解決實際問題還有很大的距離。基于深度學習的異常檢測面臨以下的挑戰:
在實際問題中攝像機抖動、視頻解碼偽影、運動對象的遮擋、光照變化、尺度比例的變化、噪聲等因素,給異常檢測工作帶來很大挑戰。如何檢測和改善相機狀態、應對遮擋和各種變化、消除噪聲影響等問題需要進一步的研究。
不同角度的觀察會對異常行為的判斷產生不同的結果。一個角度看是正常的,另一個角度看卻是異常的。怎么利用多個角度的視頻進行綜合判斷是一個極具挑戰的工作。
深度學習經常面臨的問題是被標定的訓練數據不足。在異常檢測活動中,往往缺乏足夠的被標記的異常行為訓練數據。設計更有效的策略進行無監督學習、利用上下文信息來進行異常檢測,成為應對異常訓練數據不足的一種手段。
異常檢測研究領域是一個非常有前途的領域,因為它將作為未來許多基于計算機視覺的項目的基石,能夠減輕對敏感地區持續監控的壓力。將深度學習用于異常事件的實時檢測仍有待深入研究。