顧嘉城,龍英文,吉明明
(上海工程技術大學 電子電氣工程學院 上海 201620)
監(jiān)控視頻中的異常檢測是一項基本的計算機視覺任務,在視頻分析和潛在的應用如事故預測、城市交通分析、證據(jù)調查中起著至關重要的作用。盡管近年來該問題已引起了強烈的關注,但由于正常樣本與異常樣本嚴重不平衡、缺乏細致的異常標記數(shù)據(jù)以及異常行為概念的模糊性,視頻異常檢測仍然是一個非常具有挑戰(zhàn)性的問題。
為了解決這個問題,研究人員提出了大量的解決方法。根據(jù)文獻[1],現(xiàn)有的異常檢測方法可以分為基于密度估計和概率模型的方法、基于單類分類的方法以及基于重構的方法?;诿芏裙烙嫼透怕誓P偷姆椒ǎ?-3]首先計算樣本的概率密度函數(shù),然后通過測試樣本距離密度函數(shù)中心的距離來進行判斷。經典非參數(shù)密度估計器的方法雖然在處理低維問題時表現(xiàn)相當好,但它們獲得固定精度水平所需的樣本大小在特征空間的維數(shù)上呈指數(shù)增長?;趩晤惙诸惖姆椒ǎ?-5]試圖避免將密度的完全估計作為異常檢測的中間步驟。這些方法旨在直接學習與正例樣本相對應的決策邊界,通過測試待測樣本是否屬于決策邊界內判斷其是否屬于異常。基于重建的方法[6-7]學習一個模型,該模型經過優(yōu)化可以很好地重建正常數(shù)據(jù)實例,從而通過未能在學習的模型下準確地重建異常來檢測異常。
近年來,深度學習通過訓練靈活的多層深度神經網絡從數(shù)據(jù)本身學習有效表示,并在許多涉及復雜數(shù)據(jù)類型的應用中取得了突破性進展,如計算機視覺[8-9]、語音識別[10-11]和自然語言處理[12-13]等領域。基于深度神經網絡的方法能夠通過其多層分布式特征表示來利用數(shù)據(jù)通常固有的分層或潛在結構。此外,并行計算、隨機梯度下降優(yōu)化和自動微分方面的進步使得在大型數(shù)據(jù)集大規(guī)模應用深度學習成為可能。針對異常檢測問題,深度學習方法可以對整個異常檢測模型進行端到端優(yōu)化,并且還可以學習專門為異常檢測問題的表示。此外,深度學習方法對于大型數(shù)據(jù)集的能力有助于大幅提高標記正常數(shù)據(jù)或一些標記異常數(shù)據(jù)的利用率。
在深度學習的框架下,本文提出了一種基于單類分類的異常檢測方法。這種方法是生成對抗網絡(Generative Adversarial Networks,GAN)[14]的改進形式,稱為集成生成對抗網絡(GAN en?sembles)。GAN利用生成器和判別器之間的競爭,生成器學習樣本的分布,判別器則學習如何檢測異常。集成GAN由多個編碼器-解碼器和鑒別器組成,它們隨機配對并通過對抗性訓練進行訓練。在這個過程中,編碼器-解碼器從多個判別器獲得反饋,而判別器從多個生成器獲取“訓練樣本”。與單個GAN相比,集成GAN可以更好地對正常數(shù)據(jù)的分布進行建模,從而更好地檢測異常。最后,通過從所有編碼器-解碼器、鑒別器對計算出的異常分數(shù)的平均值獲取總異常分數(shù)以進行判別。在幾個公共基準數(shù)據(jù)集上的實驗結果表明,集成GAN在一系列異常檢測任務中明顯優(yōu)于現(xiàn)有方法。
假設正常樣本訓練集X={xi∈Rd:i=1,…,N}包含N個數(shù)據(jù),來自未知分布D,待測樣本x′∈Rd可能不屬于未知分布D。那么,異常檢測的問題是通過X訓練模型,使模型可以將x′歸類為分布D,為正常樣本;反之,如果x′來自不同的分布,則為異常。通常,用模型計算x′的異常分布y′∈Rd并通過對y′設定閾值處理來判斷x′的標簽。
GAN包含有兩個神經網絡,分別是生成器和判別器。其中,生成器包含一個編碼器Ge(?;?)和一個解碼器Gd()?;ψ,編碼器將樣本x編碼成一個向量z,解碼器將其重建成x?,即有
而判別器D(?;γ)則判斷測試樣本是來自數(shù)據(jù)集X而不是生成器生成樣本的概率。那么,判別器應該提供比正常樣本更高的重構誤差值。由于模型由編碼器-解碼器和判別器組成,因此訓練過程通常會考慮從兩個模型繼承的損失函數(shù)。對抗性損失來自GAN訓練,損失定義如式(3)所示:
另一個是重構損失,用于訓練編碼器和解碼器。實際上原始樣本和重構結果的差異往往通過l-范數(shù)進行計算:
先前研究表明,鑒別器D(?;γ)最后一個隱藏層中一個樣本的隱藏向量h對于區(qū)分正常樣本和異常樣本很有效。定義h=D(x;γ)為D(?;γ)中的隱向量,那么基于h的判別損失可以表示為:
此外,GAN還考慮了正常樣本x的編碼向量與其重構?之間的差異。特別地,它使用單獨的編碼器對重構?進行編碼。那么編碼損失為:
其中,編碼器參數(shù)?和?明顯不同。為了訓練鑒別器,GAN模型需要最大化對抗性損失,即
在GAN參數(shù)訓練完后,需要對測試樣本x′計算異常得分A(x′),那么異常分數(shù)是通過重建損失和判別損失的加權和計算獲得:
其中,權值β通過經驗選擇獲得。較高的異常得分表明高異常概率。
本文提出了一個基于集成GAN的異常檢測方法。該方法有多個生成器和鑒別器,具有不同的參數(shù)化。假設定義I個生成器{Ge(?;?i),Gd(?;ψi):i=1,…,I}和J個判別器{De(?;γi),:j=1,…,J},單個生成器或判別器與基本模型相同。在對抗訓練過程中,將每個生成器與每個鑒別器匹配,然后每個判別器對生成器進行評價,判別器從每個生成器接收合成樣本。
對于多對生成器和判別器,對抗性損失和判別性損失都是從所有生成器-判別器對計算的。每個生成器-鑒別器對之間的損失如式(9)和式(10)所示:
類似地,單個生成器i的重構損失和編碼損失為如式(11)和式(12)所示:
然后通過最大化對抗性損失的總和來訓練鑒別器,同時最小化所有損失的總和訓練生成器。目標函數(shù)如式(13)和式(14)所示:
在一次訓練迭代中,只更新一對生成器-鑒別器,而不是所有生成器和鑒別器。特別是,可以隨機選擇一個生成器和一個鑒別器,并用隨機一批訓練數(shù)據(jù)計算損失。
對于多個生成器和判別器,待測樣本x′集成GAN的異常得分為:
如果模型在特定測試實例中沒有得到很好的訓練,則異常分數(shù)的平均值有助于消除虛假分數(shù),并設定門限值θ判斷其是否為異常:
圖1為本文方法的基本原理框架,通過具有不同參數(shù)的多個GAN,實現(xiàn)對視頻中異常行為的高精度檢測。
圖1 基于集成生成對抗網絡的異常檢測方法框架Fig.1 Methodology of abnormal event detection based on GAN ensembles
為了評估所提出的GAN ensemble異常方法的定性和定量結果并將其與最新的算法進行比較,本文選取兩個公共視頻異常檢測數(shù)據(jù)集進行了實 驗:CUHK Avenue[15]和ShanghaiTech[16]。CUHK Avenue數(shù)據(jù)集拍攝于香港中文大學街道,包括16個訓練和21個測試視頻,從固定場景收集。訓練正常數(shù)據(jù)僅包含行人步行,異常事件包括跑步、丟包等共47個。相比于CUHK Ave?nue數(shù)據(jù)集,ShanghaiTech數(shù)據(jù)集非常具有挑戰(zhàn)性,包含來自13個場景的視頻,具有復雜的光照條件和攝像機角度,訓練和測試的總幀數(shù)分別達到27.4萬幀和4.2萬幀。測試集中包括追逐、爭吵、突然動作等130個異常事件,分散在1.7萬幀中。
根據(jù)先前的工作[15-16],本文采用受試者工作特征曲線(ROC)下面積(AUC)來評估性能。ROC曲線是通過改變閾值并計算每個幀級預測的異常分數(shù)來獲得的。
對于兩個數(shù)據(jù)集,每幀視頻被調整到286×286,并在每次迭代過程中隨機裁剪大小為256×256的視頻塊。生成器的結構采用C64×(4×4)-C128×(4×4)-C256×(4×4)-C512×(4×4)-C512×(4×4)-DC256×(4×4)-DC128×(4×4)-DC64×(4×4)的結構。前半部分為編碼器,后半部分為解碼器。編碼器首先為64個大小為4×4卷積核的卷積層,接下來采用128個大小為4×4卷積核的卷積層,然后采用256個大小為4×4卷積核的卷積層和512個大小為4×4卷積核的卷積層。解碼器和編碼器結構完全相反,包含了大小相同的反卷積層。每層后都連接了BatchNorm層和ReLU激活函數(shù)。判別器共包括5層卷積層,卷積核大小也是4×4,結構采用C64×(4×4)-Pooling-C128×(4×4)-Pooling-C256×(4×4)-Pooling-C512×(4×4),最后輸出一維數(shù)據(jù)。本文采用Tensorflow2.0來實現(xiàn)GAN ensembles方法,并采用Adam優(yōu) 化 器ρ1=0.9,ρ2=0.999對 其 進 行優(yōu)化。初始學習率設置為1e?4,每50個epoch后衰減0.8,共訓練300 epoch。
為了驗證本文提出方法的優(yōu)勢,本文將所提出的方法同現(xiàn)有的方法進行比較;(1)基于密度估計和概率模型的方法Frame-Pred.[17]、VEC[18]、Conv-VRNN[19];(2)基于單類分類的方法MNAD-P[20]、AMDN[21];(3)基 于 重構 的 方法Conv2D-AE[6]、Conv3D-AE[6]、StackRNN[22]。表1給出了對比結果,其他方法的結果從相關論文中獲得。
表1 幀級異常檢測結果與最先進方法的比較Tab.1 Comparison of frame-level anomaly detection per?formance with state-of-the-art methods(AUC%)
通過表1可以觀察到,本文提出的GAN en?sembles模型在這兩個數(shù)據(jù)集上都比其他最先進的方法取得了更好的結果,這證明了本文提出方法的有效性。特別是在CUHK Avenue數(shù)據(jù)集上達到了91.1%的AUC,遠超過除了VEC[18]方法的其他方法。值得注意的是,這些方法在CUHKAvenue上的表現(xiàn)優(yōu)于在ShanghaiTech上的表現(xiàn),這是由于ShanghaiTech是新提出的數(shù)據(jù)集,幀數(shù)較多,而且不同樣本分辨率變化較大。即便如此,本文提出方法在ShanghaiTech數(shù)據(jù)集上取得了75.1%幀級AUC,也超過其他方法中最優(yōu)的VEC 0.3%。此外,本文還在ShanghaiTech數(shù)據(jù)集上對比了幾類方法的相同異常場景所需要的平均時間,其中VEC、MNAD-P、和AMDN的時間分別為30.4,26.3,21.9 ms,本文方法為20.1 ms。對比可見,本文方法的運行效率更高。綜合檢測精度和運行效率,本文方法的優(yōu)勢更為顯著。
圖2展示了本文提出方法的兩個測試數(shù)據(jù)集的異常示例。異常曲線依次顯示了視頻所有幀的異常分數(shù),通過它可以更直觀地觀測方法的性能。綠色區(qū)域表示真實標注的異常部分,藍色區(qū)域表示方法檢測出的異常區(qū)域??梢钥闯觯{色區(qū)域能夠和綠色區(qū)域相對應。在正常幀部分,本文提出的GAN ensembles異常分數(shù)低且非常穩(wěn)定。而當異常出現(xiàn)時,如人行道上出現(xiàn)自行車、小車,打架推搡,異常得分突然增加。圖中得分值與這些場景的出現(xiàn)能夠完全相符。
圖2 兩個數(shù)據(jù)集的部分檢測結果示例Fig.2 Anomaly detection comparison on CUHK Avenue Dataset and ShanghaiTech Dataset
在接下來的實驗中,為了評估集合個數(shù)I、J對視頻異常檢測事件性能的影響,通過改變集合個數(shù)I,J∈{1,3,5,7}并保持相同數(shù)量的生成器和判別器來進行檢測。圖3展示了在兩個數(shù)據(jù)集上的檢測結果隨著集合個數(shù)變化的曲線??梢杂^測到,集合個數(shù)從1~3,檢測結果有明顯的改進,AUC在所有模型中的平均增長為14.2%。然而,當集合個數(shù)從3~7變化時,性能提升不明顯。在本實驗中,采用I=J=3的集合個數(shù)時,訓練時間是集合個數(shù)為1時的3倍。值得注意的是,這還是在每個生成器或判別器每3次迭代更新一次的情況下獲得。那么,綜合計算代價和性能,集合個數(shù)為3時實驗效果最好。
圖3 不同集合個數(shù)對于數(shù)據(jù)集實驗結果的影響Fig.3 Difference detection performances with different ensemble sizes
本文將集成學習引入基于GAN的異常模型以進行異常檢測。GAN的鑒別器對異常檢測非常有效,而且集成學習可以進一步改進鑒別器的訓練,這意味著本文提出的方法不是集成學習和GAN的簡單組合,而是集成學習可以有效地影響預測質量。在兩個數(shù)據(jù)集上的實驗證明,本文提出的方法超過了現(xiàn)有技術發(fā)展水平。大量實驗表明,與單個模型相比,集成方法在兩個數(shù)據(jù)集中都取得了更優(yōu)異的結果。