蔡德秀,楊大為
(沈陽理工大學信息科學與工程學院,沈陽 110159)
從視頻中發(fā)現(xiàn)并檢測出異常事件具有重要的意義,但視頻中異常事件的定義通常比較模糊,比如,在餐廳內(nèi)跑步是異常事件,但在公園跑步則是正常事件。一個人在地鐵站臺上走動是正常的,但一些人也可能因為某種理由認為他可疑,從而是異常的。再加之視頻數(shù)據(jù)維度高,且存在噪聲及大量事件交互,對異常事件的表示及建模構成了一定的挑戰(zhàn)。
在行為識別領域有很多成功的案例[1-3],這些方法只適用于有標簽的視頻片段,其中感興趣的事件是明確定義的,而且為每種類型事件貼上標簽的成本非常高,也不能保證涵蓋所有過去和未來的事件。近年來,人們將異常檢測任務視為二分類問題(正常和異常)[4],證明了該方法的有效性和準確性,但由于異常事件的罕見性,很難獲得異常事件的圖像,因此此類方法的實用性受到了限制。很多研究人員轉向了在很少或者沒有監(jiān)督的情況下的訓練模型,包括時空特征[5-6]、字典學習[7]和自動編碼器[8-9]。隨著深度學習,特別是卷積神經(jīng)網(wǎng)絡在對象識別[10]、人臉檢測[11]、動作識別等應用中的成功[12],使得深度學習的方法在異常檢測中的應用越來越多。使用3D ConvNet 對異常進行分類[4,13],使用端到端的卷積自編碼器來檢測監(jiān)控視頻中的異常[14],證明了通過卷積層對視頻進行學習表示的有效性。長短記憶(LSTM)模型以學習時間模式和預測時間序列數(shù)據(jù)而聞名[15-16]。
在此提出一種基于自編碼器框架的自適應異常檢測方法。利用ConvLSTM 網(wǎng)絡模型構建編碼器與解碼器,分別用來學習視頻序列的空間特征表示和重構視頻序列,并基于重構誤差,進行自適應的異常事件檢測。
RNN 的工作原理類似一個前饋網(wǎng)絡,只是它的輸入向量的值不僅受輸入向量的影響,而且受整個輸入歷史的影響。從理論上講,RNNs 可以在任意長的序列中使用信息,但在實現(xiàn)過程中,由于梯度的消失,它們只能返回幾個步驟。為了克服這一問題,引入了RNN 的一個變種,長短時記憶(LSTM)模型,如圖1所示。使用這種新結構,LSTMs 可以防止反向傳播的誤差彌散和爆炸,因此可以處理長序列,并可以將它們疊加在一起以捕獲更高階別的信息。
圖1 典型LSTM 單元的結構
LSTM 架構的一個變體,卷積長短時記憶(ConvLSTM)模型,與通常的全連通LSTM(FC-LSTM)相比,矩陣運算被卷積所取代。通過對輸入到隱藏連接和隱藏到隱藏連接使用卷積,ConvLSTM 要求更少的權重,并生成更好的空間特征圖。該ConvLSTM單元的公式可概括為以下各式:
其中,ft為遺忘門的輸出值,其決定從存儲單元中刪除或遺忘一部分信息,ht-1為上一時刻的輸出值,Xt為當前的輸入值,W 和b 分別是系數(shù)組成的矩陣和偏置的向量,σ 是激活函數(shù)sigmoid;
此式用來計算輸入門的it值,以此決定更新多少信息,輸出為0~1 之間的某個值;
此式用來更新細胞狀態(tài),舊的細胞狀態(tài)Ct-1與遺忘門輸出值ft相乘,輸出更新的后選值表達式與輸入門it相乘,二者相加得到新的細胞狀態(tài)Ct;
此式用來計算輸出門output gate 的值Ot,它決定多大比例的記憶用于輸出;
此最后一步是使用雙曲正切函數(shù)更新Ct值,使其處于-1~1之間,將輸出門值Ot與其相乘,得到t時刻的最終輸出值ht。
以上各式中:?表示卷積運算;°表示Hadamard乘積;Xt代表t時刻的輸入圖像;it代表t時刻的輸入門輸出信息;Ct-1代表t-1時刻記憶單元的信息;WHI是輸入門到遺忘門的權值矩陣,其余矩陣依此類推。
所提出的異常檢測方法是基于這樣的一個原則:當異常事件發(fā)生時,當前視頻幀與先前視頻幀將有明顯的不用。據(jù)此,訓練一個端到端模型,該模型由一個空間特征提取器和一個時間編碼-解碼器組成,它們共同學習輸入視頻序列的時間模式。該模型只訓練由正常場景組成的視頻,目的是最小化學習模型重建的輸入視頻與輸出視頻之間的重構誤差。對于模型進行適當?shù)挠柧毢?,期望正常的視頻量具有較低的重構誤差,而期望包含異常場景的視頻具有較高的重構誤差。通過對每個測試輸入視頻產(chǎn)生的誤差進行閾值化,可自適應地檢測出異常事件。
預處理的任務是將原始數(shù)據(jù)轉化為模型可接受的輸入。從原始視頻中提取出來每一幀圖像都調(diào)整為統(tǒng)一尺度n×n(在此采用224×224),并進行歸一化處理,即以每幀圖像減去視頻中所有圖像的均值。模型的輸入是視頻卷,即連續(xù)的T幀圖像序列。
基于自編碼器框架來學習訓練視頻中的規(guī)則模式,由兩部分組成,即用于學習每個視頻幀的空間結構的空間自動編碼器和用于學習時間結構的時間編碼解碼器,網(wǎng)絡結構如圖2所示。空間編碼器和解碼器分別由兩個卷積層和反卷積層組成,而時間編碼解碼器是由一個三層卷積LSTM模型構成。
圖2 特征學習自編碼器網(wǎng)絡結構示意圖
它取一個長度為T的序列輸入,然后輸出重構的輸入序列。最右邊的數(shù)字表示每個層的輸出大小??臻g編碼器每次取一幀作為輸入,處理T=4幀后,將T幀的編碼特征串接到時間編碼中進行運動編碼。解碼器鏡像編碼器來重構輸入的視頻卷。
自編碼器由兩部分組成:編碼和解碼。它通過設置編碼器輸出單元的數(shù)量小于輸入來降低維數(shù),并采用無監(jiān)督的反向傳播方法訓練,最大限度地減小解碼結果的重構誤差。由于選擇的激活函數(shù)是非線性的,自動編碼器可以提取出比一些常用的線性變換方法(如PCA)更有用的特征。
卷積網(wǎng)絡中卷積的主要目的是從輸入圖像中提取特征。卷積網(wǎng)絡在訓練過程中會自動學習濾波器的值,但訓練前需要指定濾波器的個數(shù)、大小、層數(shù)等參數(shù)。隨著濾波器數(shù)量的增加,可以提取更多的圖像特征,網(wǎng)絡的識別性能也變得越來越好。但更多的濾波器會增加計算時間并更快地耗盡內(nèi)存,應用中需要合理設置來達到精度與速度的平衡。
訓練好的模型可用于獲得輸入視頻序列的重構。重構誤差由下式表示:
基于誤差值計算視頻的規(guī)律性分數(shù)。規(guī)律分數(shù)將每個視頻序列的重構誤差歸一化到0和1之間。序列的規(guī)律分數(shù)如下式所示:
其中,x是輸出的重建序列,e(x)是該序列的重構誤差。包含正常事件的視頻序列具有較高的規(guī)律分數(shù),因為它們與用于訓練模型的數(shù)據(jù)類似,而包含異常事件的序列具有較低的規(guī)律分數(shù)。
通過對每個測試輸入視頻幀產(chǎn)生的重構誤差進行閾值化得到規(guī)律分數(shù),就可以判斷一個視頻幀是正常還是異常的。每一幀的規(guī)律分數(shù)決定了該幀是否屬于異常。閾值決定了檢測系統(tǒng)的行為有多敏——例如,設置一個較高的閾值會使系統(tǒng)對場景中發(fā)生的事情變得敏感,從而觸發(fā)更多的警報。由規(guī)律分數(shù)自適應地設置閾值,這樣就不會出現(xiàn)過多的誤警誤報的信息。自適應設置閾值的過程如下式:
其中a是調(diào)節(jié)參數(shù),N是視頻的總幀數(shù),g(x)是規(guī)律分數(shù)。
閾值設定之后,出現(xiàn)異常的部分被標記紅色陰影,異常事件計數(shù)。為了減少規(guī)律分數(shù)的噪聲和無意義的極小值,使用固定時間窗W(此處取50)幀的局部極小值進行分組。假設W幀內(nèi)的局部極小值屬于同一異常事件,這是一個合理的時間窗口長度,作為一個異常事件應該至少2~3秒長才有意義。(視頻以24~25幀/秒的速度捕捉)。
為了驗證本算法的有效性,在通用數(shù)據(jù)集上進行了實驗。采用的數(shù)據(jù)集包括Avenue、UCSD Ped1和ped2。所有的訓練視頻只包含正常的事件,測試視頻則既有正常事件,也有異常事件。
Avenue dataset 中共有16 個訓練視頻和21 個測試視頻,每段視頻的時長為1~2 分鐘之間不等。正常的場景是人在樓梯和地鐵入口之間行走,異常的場景包括是人在奔跑、朝相反方向行走等。UCSD Ped1 數(shù)據(jù)集包括34 個訓練視頻和36 個測試視頻,每個視頻包含200 幀。這些視頻由一群人走向和離開攝像機組成。
模型訓練的目的是最小化重構誤差。實驗得到的誤差結果如圖3所示。
圖3 視頻序列的重構誤差
圖中結果來自于avenue dataset#01testing video經(jīng)過訓練好的網(wǎng)絡模型重構視頻幀的重構誤差。正常的視頻幀具有較低的的重構誤差,而包含異常情況的視頻幀具有較高的重構誤差。
由重構誤差歸一化得到對應的規(guī)律分數(shù),圖3曲線所對應的規(guī)律分數(shù)曲線如圖4所示。當出現(xiàn)不規(guī)則運動時,規(guī)律分數(shù)顯著下降。
圖4 視頻序列的規(guī)律分數(shù)
直接設置閾值,異常檢測系統(tǒng)根據(jù)規(guī)律分數(shù)和閾值的大小判斷是否出現(xiàn)異常。圖5為此設置下的的avenue dataset#01testing video 異常檢測結果圖,紅色(陰影)區(qū)域表明視頻中出現(xiàn)異常。視頻中只能檢測出一個異常情況,而且檢測出異常的區(qū)域變窄,這說明檢測異常出現(xiàn)和消失的時間點不是很準確,還存在漏檢的可能。
采用自適應設置閾值,根據(jù)規(guī)律分數(shù),按照自適應的異常事件檢測準則,即可檢測出視頻中的異常事件,圖6為相應的avenue dataset#01testing video異常檢測結果圖,紅色(陰影)部分就是原視頻中出現(xiàn)異常的部分,有兩個異常情況被檢測出來,分別為[508,648]幀和[936,1176]幀之間??梢?,異常檢測系統(tǒng)的能力有了明顯提高。
圖5 avenue dataset#01 異常檢測(直接設置閾值)
圖6 avenue dataset#01 異常檢測(自適應設置閾值)
直接設置閾值也有可能出現(xiàn)檢測錯誤,將正常情況被判為異常。圖7為直接設置閾值時的avenue dataset#04testing video 異常事件檢測結果圖,圖中檢測出兩個異常情況,與實際出現(xiàn)異常的情況相差極大,第一異常情況從第1 幀開始持續(xù)到了第742幀;第二個異常情況發(fā)生在第884 幀到第935 幀。相比之下,采用自適應設置閾值,異常檢測結果如圖8所示,異常區(qū)域有三處,幀數(shù)區(qū)間分別在 [1,137]、[361,464]、[649,740],第一處的異常是由拍攝視頻的攝像頭抖動導致規(guī)律性分數(shù)特別低,第二、三處的異常情況是有人在奔跑。
圖7 avenue dataset#04 異常檢測(直接設置閾值)
實驗結果表明,對于不同的數(shù)據(jù)集,模型能夠自適應地檢測視頻中的異常情況。不斷調(diào)整自適應閾值,檢測效果會越來越好。如圖8所示,出現(xiàn)異常時,規(guī)律分數(shù)有較明顯的下降,出現(xiàn)異常的區(qū)間內(nèi),規(guī)律分數(shù)一直較低,一旦異常消失,規(guī)律分數(shù)便回升正常閾值之上。閾值決定了異常檢測系統(tǒng)的性能,例如,設置較高的閾值會使系統(tǒng)對場景中發(fā)生的事情變得敏感,從而觸發(fā)更多的誤報;設置較低的閾值會使系統(tǒng)檢測異常時對真正的異常漏報。相比之下,自適應設置閾值,可大大提高異常檢測體系的性能。
圖8 avenue dataset#04 異常檢測(自適應設置閾值)
提出的這種基于自編碼器模型的自適應視頻異常事件檢測方法,其自編碼器中的ConvLSTM 層不僅保留了FC-LSTM 的優(yōu)點,而且由于其固有的卷積結構,也適用于時空數(shù)據(jù)。將卷積特征提取器結合到編碼解碼結構中,成功建立起視頻異常檢測的端到端可訓練模型。以該網(wǎng)絡模型來重構輸入幀序列,并利用輸入與重建幀之間的重構誤差進行自適應異常檢測,大大提高了系統(tǒng)異常檢測的能力。