陳 澄,胡 燕
武漢理工大學 計算機科學與技術學院,武漢 430070
隨著監控設備的增多,視頻異常檢測在過去幾年已經吸引了很多關注[1-5]。自動識別監控視頻中的異常事件是該領域相關研究中的一項基本任務,因為它在構建智能視頻監控系統中起著重要作用[6]。由于不同場景中異常的歧義和多樣性,從視頻中自動檢測異常行為、事件或對象仍然具有挑戰性[2]。由于異常事件很少發生,視頻片段中大多數都是正常事件,并且幾乎不可能收集所有事件。因此獲取足夠多的異常樣本是困難的,大多數訓練數據僅包含正常視頻,這就限制了傳統的監督學習的方法在視頻異常檢測上的應用。因此,視頻異常檢測通常作為半監督或無監督任務[7]。
大多數方法都通過訓練模型來表示視頻序列中的常規事件,并認為測試集中任何異常值都是異常事件[8]。一些研究集中在手工特征的提取上,這些特征用于精確表示視頻片段中的外觀和運動特征,包括HOG/HOF[4]、光流特征[9]。但是,這些手工特征僅提供了復雜運動的有限表示,這限制了傳統機器學習的使用。
隨著深度神經網絡的廣泛流行,通過神經網絡進行異常檢測的方法取得了較好的效果。文獻[10]認為視頻中的正常事件更可能是可重構的,異常事件相對于正常事件來說無法通過學習到的模型進行良好的重構,因此通過真實幀與重構幀之間的重構誤差來區分正常和異常[1,6]。Cong等人[10]利用稀疏重建成本來衡量測試樣本是否異常。受文獻[10]啟發,Luo等人[1]通過堆疊的RNNs框架來計算重構誤差,提出了一種時間相干的稀疏編碼模型。文獻[11]的工作表明卷積自動編碼器可以有效地學習視頻中的時間規律。
由于異常事件定義為和期望不符,文獻[2]認為正常幀比異常幀更可預測,提出通過視頻幀預測來檢測視頻中的異常。通過視頻的前幾幀來預測下一幀,并且將預測的幀和真實的幀進行比較。這樣學習到的模型對正常事件有一個較好的預測,對異常事件有一個較差的預測。有學者提出兩分支預測自動編碼器[12],包括重構解碼器和預測解碼器,從而將端到端框架中的重構和預測方法統一起來。在文獻[13]中,Ye等人使用卷積LSTM和RGB差異來捕獲長期的運動信息。
U-Net代替自動編碼器來預測未來幀[2],通過在不同卷積層間添加跳躍連接使預測的圖片細節更加清晰。但是這種方法不能保證異常事件對應于較高的重構錯誤或預測錯誤[12]。由于自動編碼器的“泛化”能力太強,異常幀也可能被完整地重構或預測。為了解決模型“泛化”能力太強的問題,MemAE[7]通過一個簡單的記憶增強模塊,對正常場景高維特征進行稀疏映射,這樣學習到的模型限制了對異常場景的預測。
基于先前研究[2,7],為了讓模型僅能預測出正常事件,同時能夠有清晰的細節信息,結合U-Net[14]和MemAE[7]的優勢,在編碼器和解碼器的低層次特征間添加跳躍連接,同時疊加記憶增強模塊,將記憶增強模塊添加到U-Net的每一層以構建含有跳躍連接和記憶增強模塊的預測網絡,在預測圖片的清晰度和異常事件區分度間達到一個平衡。由于監控視頻中背景所占空間較大,傳統的獲取預測誤差的方法是通過預測幀和真實幀中每個像素的差異來計算,當異常區域較小時無法突出異常。通過增加背景提取模塊,對當前幀的背景進行提取,在計算預測幀與原始幀差異時,只計算前景部分的差異,通過這樣的約束,可以突出異常區域對最終異常得分的影響。
在UCSD Ped2[15]、Avenue[16]和ShanghaiTech[1]數據集上將改進后的模型與最新的基于自動編碼器的方法進行對比,同時分析了添加背景提取模塊對實驗結果的影響,證明了方法的有效性。
視頻異常檢測的整體框架如圖1所示。網絡通過預測模塊對輸入的前4幀進行預測得到預測幀。通過背景提取模塊獲取背景。通過重構的背景與真實幀I t計算出前景區域,得到一個標記每個像素點是否為前景的掩碼MASK。最后通過預測幀、真實幀和掩碼來計算異常得分。

圖1 異常檢測的總體流程圖Fig.1 Flow chart of anomaly detection
MemAE模型是為了解決自動編碼器泛化能力太強的問題而提出的[7]。MemAE模型由編碼器、解碼器、內存模塊組成。存儲模塊通過基于注意力的尋址運算檢索記憶存儲單元中最相關的項,然后通過這些項進行高維特征的重建。給定一個測試樣本,該模型僅使用記錄在存儲器中的有限數量的正常模式執行特征重建。最終得到的輸出趨于接近正常樣本,導致正常樣本的重建誤差較小,異常樣本的重建誤差較大。
1.1.1 記憶增強模塊的實現
圖2介紹了記憶增強模塊的結構,由于輸入存儲模塊的特征z都由正常樣本組合而成,記憶存儲單元M通過特征優化得到的,經過記憶增強模塊的輸出z?也主要由正常樣本的特征組成,迫使預測后的圖像接近正常樣本。具體的,將所有正常樣本經過編碼得到的特征保存在存儲單元中。w表示當前輸入特征與記憶存儲單元M的相關系數,w?是經過硬壓縮后的相關系數。通過硬壓縮的操作,促使模型使用更少的記憶存儲單元中的項來重建輸入的特征z。

圖2 記憶增強模塊結構Fig.2 Structure of memory augmented module
記憶增強模塊的輸出通過權重向量與記憶存儲單元相乘得到的:

w是一個和為1的非負行向量,w i表示w中的其中一項。權重向量是通過輸入z計算得到的。N表示記憶存儲單元的容量。
在訓練和預測過程中,w通過z和記憶項M的相似性來計算:

d(z,m i)表示輸入特征z和記憶存儲單元的第i項m i的相似性度量,被定義為:

通過公式(1)~(3)記憶增強模塊會從記憶存儲單元檢索和輸入z最接近的存儲在M中的項來重建特征輸出z?。為了限制對異常特征的重建,對相關系數w進行約束,將小權重系數設置為0進行硬壓縮。

λ作為一個稀疏閾值,參考文獻[7],在實驗中取值為1/N。由于不是連續的函數,無法在訓練中實現反向傳播,使用連續的ReLU激活函數,重寫約束系數:

其中,ε是一個非常小的正標量。
1.1.2 針對MemAE異常檢測模型的改進
MemAE模型[7]通過在自動編碼器的編碼器和解碼器之間添加記憶增強模塊對視頻中異常幀的預測進行約束。為了捕獲視頻的運動特征,文獻[7]將堆疊的16幀灰度圖作為編碼器的輸入,使用3D卷積來學習視頻中的運動信息。同時,考慮到視頻特征的復雜性,文獻[7]在編碼器和解碼器兩個模塊之間,僅對在編碼器最后一層提取到的高層次特征矩陣上的一個特征點進行記憶增強約束,這只對應于視頻數據中某個固定區域。
在本文的模型中,將文獻[7]中的記憶增強模塊用在視頻幀預測和背景重構兩個分支上。在預測分支上,編解碼器不同層之間添加跳躍連接的同時在跳躍連接之間添加記憶增強模塊,使得預測幀的細節信息更加清晰,并對多個層次的特征進行約束。如圖3所示,在編碼器和解碼器第2、3、4層之間采用了和文獻[7]相同的連接方式對特征矩陣上的一個特征點進行約束。不同的是在跳躍連接的第1層,將特征矩陣進行壓縮后將所有特征點壓縮為一維向量傳入記憶增強模塊,并在解碼器的對應層進行不同比例的連接。采取這樣的做法主要是考慮到自動編碼器的輸入是將每個視頻片段上的連續幀在通道維度上進行疊加,這樣經過第一層的卷積操作提取到了一部分的運動信息,這部分運動信息會在后續的編碼過程中逐漸減弱。為了對提取到的運動特征進行約束,在編碼器和解碼器第一層之間添加跳躍連接的同時,通過記憶增強模塊來約束運動特征。

圖3 預測模塊的結構Fig.3 Structure of prediction module
由于3D卷積需要做更多的運算,同時在編碼器和解碼器之間添加跳躍連接的方式可以對運動特征進行約束,采用和文獻[2]中相同的方式,將連續的4幀作為編碼器的輸入獲取第5幀的預測,與文獻[2]中通過光流對運動信息進行約束不同的是,使用RGB差異[3]來代替光流對運動信息進行約束。
MemAE通過在編碼器和解碼器之間添加記憶增強模塊讓異常事件無法很好的重建,從而提高對異常事件的識別能力。但是原始的自動編碼器無法很好的對預測圖片的細節信息進行預測,無法重現圖片的細節信息導致生成圖片和預測圖片之間的差別較大。
受U-Net[14]的啟發,通過在低層次特征之間添加跳躍連接可以使預測圖片細節清晰。但是,直接將低層次特征進行連接,通過跳躍連接會傳遞到最終的預測結果中去,導致記憶增強模塊在高層次無法有效地約束異常特征。為了解決這個問題,如圖3所示,將跳躍連接應用到本文的模型中,同時在原有連接每層之間添加記憶增強模塊。
由于視頻圖片應用的復雜性,在高層次特征的約束方面和文獻[7]做了相同的處理,選取了特征中的某一個點進行約束。然后將經過記憶增強模塊的特征點和原始的特征拼接起來。與其不同的是,在低層次中這樣的特征提取方式并不能有效地抑制對異常事件低層次特征的重建??紤]到在第一層的特征結構為(256,256,64),提取其中的一個像素點對整體約束不大。通過卷積操作將低層次特征進行壓縮,獲取低層次的關鍵特征信息,之后將壓縮后的特征向量轉換為一維向量,輸入到記憶增強模塊進行處理。通過記憶增強模塊重建的特征數量減少,對應地調整了在解碼階段從跳躍連接得到的特征和從高層次得到特征的權重,每一層的具體設置在圖3中標出。
由于監控視頻中背景所占空間較大,傳統的獲取預測誤差的方法是通過預測幀與真實幀中每個像素的差異來計算異常,本文增加了一個背景提取模塊,對當前幀的背景進行提取。在計算預測幀與真實幀差異時,只計算前景部分的差異,通過這樣的約束,可以突出異常區域對最終異常得分的影響。
圖4展示了背景提取模塊的結構,由于只需要提取當前幀的背景信息,只用輸入當前幀I來進行重構得到提取到的背景,其中記憶增強模塊采用和預測模塊相同的實現。

圖4 背景提取模塊的結構Fig.4 Structure of background extraction module
在圖像預測階段,為了更好地獲得預測圖片,采用了和文獻[2]類似的做法,包括對預測幀和真實幀之間的強度和梯度進行約束。為了約束運動信息,將文獻[2]中采用的通過FlowNet計算光流的方法改為計算之前幀和當前幀之間的RGB差異來進行約束。為了讓正常特征可以通過稀疏的相關系數從記憶增強模塊中的記憶存儲單元獲得重建特征,對每次訓練得到的特征和記憶項之間相關系數的熵進行最小化優化。
1.4.1 記憶增強模塊的優化目標
記憶增強模塊能夠限制對異常特征的重建,為了得到?的稀疏表示。對于第t張圖片I t,在生成預測圖片的過程中,用表示某一次訓練過程中記憶存儲單元的相關系數。在訓練階段對?的熵進行最小化約束[7]:

在預測模型中使用了4個記憶存儲單元,每次迭代過程中獲得的相關系數的熵,分別記為L w1、L w2、L w3、L w4。在背景重構中使用了一個記憶存儲單元將需要優化的E記為L w0。得到了針對記憶存儲模塊的約束:

Lwpr表示預測模塊中需要優化的記憶模塊,其中w e1、w e2、w e3、w e4分別為每個稀疏項對應的權重,這里簡單地對每個系數取值為0.25。
Lwre表示背景重構模塊需要優化的記憶模塊,w re表示對應的權重,取值為0.5。
1.4.2 預測模塊的優化目標
在預測模塊中,對預測圖片和真實圖片的強度和梯度[17]做了約束:

其中,I*表示預測幀,I表示原始幀,i、j表示視頻幀的空間位置。
有很多研究通過提取光流來對視頻的運動信息進行約束[2,12],盡管使用光流的方法能夠獲得較好的運動表現,但光流提取需要巨大的時間成本。為了解決這一問題,采用RGB差異[3,18],通過連續幀之間RGB像素強度的疊加差異約束運動特征:

鑒于生成對抗網絡在圖片生成任務上表現出的良好效果,使用生成對抗網絡來優化生成圖片的質量。將預測模塊作為生成器,鑒別器采用文獻[19]的實現。生成對抗網絡包括一個生成器G和一個鑒別器D,生成器生成圖片讓鑒別器很難區分,鑒別器盡可能正確區分生成的圖片和原始圖片。當訓練鑒別器時,固定生成器,通過計算均方誤差來進行約束:
i、j表示空間中每一個位置,均方誤差定義為:

其中,Y取值{0,1},Y*∈[0,1]。
當訓練生成器時,固定鑒別器,同樣使用均方誤差進行約束:

1.4.3 背景重構模塊的優化目標
通過重構圖片和原始圖片的強度差異進行約束:

其中,I*b表示重構的背景,I表示原始幀。
訓練生成器通過最小化L G:

λ表示每一部分的權重,分別設置λint、λgd、λrgb、λadv、λbint、λwpr、λwre為1、1、2、0.05、1、0.002、0.000 2,這些設置和之前的工作[2,7]類似。
訓練對抗器通過最小化L D:

針對不同的數據集,對灰度圖使用單通道圖片作為輸入,彩色圖片使用3通道作為輸入,把每個像素的強度歸一化到[-1,1]之間,并且將圖片的輸入裁剪為256×256大小。
得到訓練模型后,在測試階段可以通過比較預測圖片和測試圖片的差別峰值信噪比(PSNR)[20]來檢測異常。和文獻[2-3]不同的是,在計算PSNR時利用重建得到的背景圖片與原始圖片得到前景掩碼:

其中,Fdiff是[-1,1]之間的值。

δ表示允許的背景I*b和原始圖片I之間的誤差,在實驗中取值為0.06。Mdiff用來標記圖片二維空間中前景位置,其中前景區域為1,背景區域為0。
為了消除背景區域對后續計算的影響,將原始圖片和預測圖片相應背景位置用0標記:

其中,I m、I*m分別表示真實幀和預測幀去掉背景后得到的像素空間。計算預測圖片和原始圖片去掉背景后的PSNR:

Im*max表示圖片Im*像素的最大強度,N m表示掩碼Mdiff中有多少個值為1的項,i表示每一個像素的位置。PSNR可以被歸一化為:

I mt、I*mt分別表示第t張圖片的真實幀和預測幀去掉背景后的得到的像素空間。PSNRmax、PSNRmin指在每個測試視頻的所有預測幀中,得到的PSN R的最大值和最小值。
將PSNR作為最終異常得分,更高的得分代表更不可能發生異常。
步驟1數據預處理,對訓練集和測試集的視頻片段分幀,并對測試集的標簽進行處理。
步驟2模型訓練,采用批數據處理的方式,一次讀取4批數據,每批數據包含5張圖片,其中前4張圖片作為預測模塊的輸入,第5張圖片作為背景生成模塊的輸入,通過優化函數對模型進行更新。
步驟3模型測試,將預測模塊和背景生成模塊得到的圖片和真實圖片結合處理,得到每張圖片的PSNR值。
步驟4判斷模型效果,通過PSNR計算每個視頻片段的異常得分,獲取測試集的AUC。
UCSD Ped2[15]數據集,訓練集有16個視頻片段,測試集有12個視頻片段。異常場景包括穿過人行道的自行車、汽車、滑板手和輪椅等。
CUHK Avenue[16]數據集包含16個訓練視頻,共15 328幀,以及21測試視頻,共15 324幀。每個視頻幀的分辨率為360×640。異常場景包括奔跑,投擲物體和游蕩等。
ShanghaiTech[1]數據集(SH.Tech)是用于異常事件檢測的最大數據集之一。訓練集有330個視頻片段包含27萬多個訓練幀,測試集有107個視頻片段包含4.2萬多個測試幀(異常幀約1.7萬個),覆蓋了13個不同的場景。異常場景包括除行人(如車輛)以外的物體和劇烈運動(如打斗和追逐)。
使用一系列常見的評估指標進行定量評估,通過更改異常得分的閾值并計算真陽性率(TPR)和假陽性率(FPR)來生成ROC曲線,與之前大多數工作[2,6,12]相同,采用幀級別ROC曲線下面積AUC來評估模型效果。
為了說明加入背景提取模塊對異常檢測性能的提升,利用正常幀和異常幀平均得分歸一化后的差值Δs來評估模型對正常場景和異常場景的區分能力[3]。更大的Δs說明了模型的區分能力更強。
2.3.1 背景提取模塊對模型性能的提升
為了說明添加背景提取模塊對正常事件和異常事件區分能力的提高,表1中列出了在各個數據集中正常幀和異常幀歸一化后平均得分的差值Δs以及添加背景提取模塊對應AUC的影響,其中origin表示未使用提取到的背景參與PSNR計算得到的結果,rm-background表示將提取到的背景用于PSNR計算得到的結果??梢钥闯鎏砑颖尘疤崛∧K后模型在UCSD Ped2數據集和ShanghaiTech數據集上對正常樣本和異常樣本的區分能力有所增強,但在Avenue數據集上模型的區分能力提升較小。

表1 疊加背景提取模塊的效果Table 1 Effect of superimposed background extraction module
分析Avenue數據集的特點可以看出,由于Avenue數據集攝像頭的拍攝方式為平視,這樣視頻畫面中背景所占比例有限,其次Avenue數據集的前景區域和背景對比度不夠明顯,通過背景提取模塊提取出的背景圖片無法準確的獲取前景所在位置,導致模型對正常事件和異常事件的區分能力沒有明顯提升。
在UCSD Ped2和ShanghaiTech數據集上的疊加背景提取模塊對異常事件的區分能力的提升,主要因為這兩個監控場景中背景區域占比較大,通過背景提取模塊更能突出異常事件在整個視頻幀中所占比例。考慮到ShanghaiTech數據集的場景復雜性(包含了13個不同的場景),背景提取模塊因為記憶存儲單元容量的限制,對部分場景無法提取出清晰的背景信息,盡管如此,通過背景提取模塊仍然提高了模型在ShanghaiTech數據集上的異常檢測能力。
2.3.2 對比其他模型的異常檢測效果
為了說明模型對異常檢測效果的提升,將本文的方法與其他現有的基于自動編碼器的方法進行比較。表2列出了在不同數據集上使用不同方法得到的幀級AUC。在Avenue數據集上AUC達到85.1%,在ShanghaiTech數據集上AUC達到73.1%,證明所做的改進有助于異常事件的檢測。

表2 異常檢測結果對比Table 2 Comparison of abnormal detection results
相對于文獻[3],模型在UCSD Ped2數據集上的表現有一定的下降。文獻[3]將U-Net與LSTM結合來進行未來幀預測,與其他基于自動編碼器方法不同的是,對于每一個視頻片段(一個批次),為了在高層次特征之間通過ConvLSTM提取運動特征,文獻[3]采用依次將連續的每幀圖片輸入自動編碼器的方法來提取運動特征,這樣在獲取運動特征的同時會增加模型的運行時間。本文的模型將連續幀在通道維度上進行疊加,然后通過跳躍連接來對運動信息進行約束,在對運動信息進行約束的同時平衡了模型的運行時間。
在Avenue數據集和ShanghaiTech數據集上的實驗結果表明本文的模型可以提高異常檢測的能力。特別的ShanghaiTech數據集包含13個不同的場景,這增加了在該數據集上進行異常檢測的難度。ShanghaiTech數據集中的的場景均為道路環境,對于包含的不同場景,正常事件和異常事件在不同場景有相同的定義,同時在高層次特征上也有相同的表現。在ShanghaiTech數據集上實驗結果的提升說明,模型可以增加對異常事件的識別能力。
由于僅使用正常數據來訓練模型,所以由正常事件組成的視頻序列顯示出比異常序列更高的分數。在圖5中,當發生異常時(在圖中的表現為人在奔跑),Avenue數據集視頻幀的異常分數會明顯降低,說明模型可以對異常的運動情況進行識別。在模型訓練中,將連續的4幀圖片作為通道信息輸入網絡,通過第一層卷積,可以對視頻片段的運動特征進行學習。其次,異常的奔跑行為在空間上和正常場景也有區別。圖5中的曲線是Avenue數據集上測試集中第4個視頻片段對應的異常評分和標簽。橙色虛線表示真實的標記標簽,其中0表示正常幀,而1表示異常幀。藍色實線為模型得到的每幀的異常得分。

圖5 在Avenue數據集獲取的異常評分和標簽Fig.5 Scores and tags obtained in Avenue dataset
圖6對比了添加記憶模塊和原有的基于U-Net的方法在3個數據集上的表現,在圖6中可以看到通過添加記憶增強模塊,對異常事件有一個較為模糊的預測,包括UCSD Ped2中的自行車,Avenue中人的跳躍,ShanghaiTech中人的跌倒。

圖6 預測結果對比Fig.6 Comparison of prediction results
程序運行在NVIDIA GeForce RTX 2080 Ti GPU上,平均運行速度在單通道圖片上大概為46 FPS,在三通道圖片上大概為36 FPS。
將記憶增強模塊應用在包含跳躍連接的自動編碼器模型中,通過添加記憶存儲單元來約束對正常事件特征的表示。由于監控視頻背景區域所占面積較大,不便于異常事件的檢測,通過背景提取模塊獲取前景像素級的掩碼信息,僅對前景區域進行異常判斷可以增強模型對正常場景和異常場景的區分能力。在一些數據集上的實驗表明了方法的有效性。
低層次特征通過記憶存儲單元對正常事件特征進行編碼,需要記憶的內容過多,限制了對低層次特征的約束,同時增大了計算量,接下來研究工作的重點是找到一個可以更好約束低層次特征的方式,在降低計算量的同時繼續提高模型對異常事件的識別能力。