古平,邱嘉濤,羅長江,張志鵬
(重慶大學 計算機學院,重慶 400044)
視頻監控系統被廣泛應用于公共場所,在維護社會治安穩定方面發揮重要作用。視頻異常檢測是指通過算法檢測視頻中不符合預期或常理的行為,旨在發現并定位可能威脅公共安全的異常行為[1]。視頻異常檢測主要存在兩個難點[2]:一方面,異常事件有很強的場景依賴性,不同場景對異常行為的定義不同,部分場景下的正常事件在其他場景下會變成異常,如人在人行道行走時為正常,但隨意穿過馬路則為異常;另一方面,異常事件具有稀缺性、多樣性、不可窮舉性等特點。因此,視頻異常檢測大多采用半監督或無監督方法,利用只包含正常樣本的訓練集訓練模型,然后對測試集進行檢測。
異常事件的主體往往是視頻中的行人、車輛等目標,現有的異常檢測方法大多將視頻幀分割成若干區間處理或是直接將視頻幀輸入模型,不能很好地關注發生異常的對象,易受背景干擾。在檢測時,現有算法大多只考慮了時間上下文提取,忽視了空間上下文信息,而對于連續視頻數據中的目標,時空上下文信息對異常檢測有很大意義。時間上下文信息代表了目標的運動狀態,空間上下文信息代表了檢測目標和周圍目標的關系。例如,在測試集視頻幀中,若同時出現了行人和汽車,而在訓練集中未出現過這種情況,則認為出現了異常目標。
為充分利用目標的時空上下文信息,準確檢測異常目標,本文提出一種融合目標時空上下文的視頻異常檢測算法。通過特征圖金字塔網絡(Feature Pyramid Network,FPN)對目標進行提取以避免背景干擾,針對同一視頻幀中的多個目標構建空間上下文,并將目標外觀和運動特征重新編碼。利用時空雙流網絡分別重構目標的外觀和運動特征,兩個子網絡采用相同的結構,均包含自編碼器和上下文編碼記憶模塊,并將重構誤差作為異常分數。在此基礎上,利用異常檢測模塊融合兩個子網絡的輸出,得到最終的異常檢測結果。
現有的視頻異常檢測算法可分為傳統機器學習方法和深度學習方法兩類。傳統機器學習方法一般包括特征提取和異常判別兩步,提取的手工特征有光流直方圖[3]、紋理[4]、3D 梯度[5]等,常用的判別方法有聚類判別[6]、重構判別[7]、生成概率判別[8]等。然而,基于手工特征的方法往往不能準確描述復雜的目標和行為,導致視頻異常識別效果不理想。
近十年來,基于深度學習的視頻異常檢測研究取得了較大進展。對于時空信息的提取,目前主要有雙流網絡、3D 卷積和長短期記憶(Long Short-Term Memory,LSTM)網絡等方法。SIMONYAN等[9]構建了時空雙流網絡,對視頻圖像和光流分別訓練兩個CNN模型,最終對判別結果進行合并。FAN等[10]將雙流網絡用于視頻異常識別,利用RGB 幀和動態流分別表示外觀異常和動作異常,利用高斯混合模型進行異常判別。3D 卷積也是一種常用方法,目前已有C3D、I3D、S3D 等多種3D 卷積模型[11]。NOGAS等[12]利用3D 卷積自編碼器(AutoEncoder,AE)計算視頻時空塊的重構誤差進行異常判別,該網絡結構簡單,具有較高的效率,但識別結果還不夠理想。此外,LSTM 網絡和循環神經網絡(Recurrent Neural Network,RNN)也被用于對連續的視頻幀進行建模,如CHONG等[13]先采用LSTM提取視頻特征,再利用自編碼器對特征重構從而判別異常,但該網絡結構比較復雜,訓練花費大。
目前常用的基于深度學習的視頻異常檢測網絡有VAE、MemAE、GAN 等。WANG等[14]提出了一種串聯VAE 的結構,通過第1 個VAE 網絡過濾明顯正常的樣本,再通過第2個VAE網絡進行異常檢測。SABOKROU等[15]將CAE和GAN結合,利用GAN的判別器提升CAE的重構能力。然而,由于自編碼器有較強的泛化能力,因此異常樣本也可能獲得較低的重構誤差。為了增大異常樣本的重構誤差,研究者將MemAE 用于視頻異常檢測。GONG等[16]在AE 中加入Memory 模塊,降低了模型的泛化能力,使異常樣本有更大的重構誤差。PARK等[17]在MemAE 的基礎上添加特征分離損失,學習得到正常視頻幀的多個模式,同時使用U-Net 代替編碼器實現了重構和預測。然而,此類方法大多將視頻幀分割成若干區間處理或是直接將視頻幀輸入模型,不能很好地關注發生異常的對象,易受背景干擾。IONESCU等[18]將視頻異常檢測視為分類問題,通過目標檢測分離視頻幀中的目標,然后利用K-means 算法和SVM 對目標分類,當目標不屬于任何一類時,即作為異常對象被檢出。但該方法將提取的目標視為單獨的個體,忽略了目標與空間周圍目標的關系,難以發現上下文相關的異常。
本文提出一種基于目標時空上下文融合的視頻異常檢測算法,如圖1 所示,整體檢測網絡由目標檢測模塊、時間信息網絡、空間信息網絡和異常檢測模塊組成,時空兩個子網絡結構相同,均由編碼器、上下文編碼記憶模塊和解碼器組成。對于視頻數據集,先對各視頻幀進行目標檢測,得到所有目標的矩形邊界框,再計算光流,在視頻幀和光流圖的對應位置提取目標,分別輸入2 個子網絡,通過空間信息網絡提取外觀特征,通過時間信息網絡提取運動特征。在對目標進行編碼、提取上下文和重構后,計算重構誤差作為異常分數,利用異常檢測模塊融合兩個子網絡的輸出,給出異常評價結果。

圖1 基于目標時空上下文融合的異常檢測網絡Fig.1 Video anomaly detection network based on target spatio-temporal context fusion
本文通過FPN[19]進行目標檢測,FPN 同時融合了底層的細節信息和高層的語義信息,能夠準確檢測小目標,同時兼顧精度和速度。對于視頻數據集X,首先分幀得到連續的視頻幀X1,X2,…,XN,依次輸入FPN,得到視頻中所有目標的矩形邊界框,再計算相鄰兩幀的光流圖,如式(1)所示:

其中:光流圖Yt由視頻幀Xt-1和Xt計算得到。然后,分別在RGB幀Xt和光流圖Yt上對應位置裁剪得到視頻幀內的所有目標,對于每一幀Xt,經過目標檢測后得到目標RGB幀和目標光流圖,縮放到大小為64×64 的矩陣,以幀為單位,將上述目標分別輸入空間和時間信息網絡。
空間信息網絡的作用是提取目標對象的外觀特征,經過空間上下文編碼后再進行解碼重構,以此判斷視頻幀在空間域是否存在異常目標。
2.2.1 空間自編碼器
空間自編碼器包含編碼器和解碼器兩個部分。編碼器將輸入的RGB 幀編碼為特征向量,輸入為單個目標的RGB幀,輸出為目標的外觀特征,編碼器包含4 個卷積層和3 個最大池化層,使用ReLU 激活函數,其輸出的特征輸入上下文編碼記憶模塊進行重新編碼。解碼器將重新編碼后的特征重構,用于計算異常分數,解碼器的輸入為經過重新編碼的特征′,輸出為重構后的目標。解碼器包含4 個卷積層和3 個上采樣層,使用最近鄰插值法進行上采樣。上述過程可表示為:

其中:θe、θd表示編碼器和解碼器的參數;E表示編碼器;D表示解碼器。
2.2.2 上下文編碼記憶模塊
通過目標提取,可使檢測網絡只關注可能發生異常的目標,免受背景圖像的干擾,但同時也去除了目標的空間上下文信息,即同一幀中多個目標之間的關系,如操場上車輛與行人的共現關系。為此,本文在自編碼器中嵌入上下文編碼記憶模塊MemAE,利用空間上下文關系對目標特征進行編碼并輔助目標重構,從而增大異常目標的重構誤差。上下文編碼記憶模塊輸入為編碼后的目標外觀特征,每次輸入一幀中所有目標的特征,用于計算該幀的空間上下文,并對這n個目標的特征重新編碼。首先將輸入的特征圖展開后得到C維的特征向量。由于出現在同一幀的不同目標之間存在關聯,每幀視頻可以得到n個目標,因此將它們疊加后得到一個大小為C的特征向量,作為這一視頻幀的空間上下文信息,如式(4)所示:

其中:zt表示視頻幀的空間上下文信息;表示目標的特征;n為一幀中的目標數,若一幀中的目標不足n個,則通過隨機重復將目標添加至n個。
視頻異常檢測采用無監督訓練方式,訓練集數據全部為正常樣本,其中每一幀的空間上下文信息即代表一種正常的模式,所以,來自于訓練集的正常模式是對測試集進行異常檢測的關鍵。由于自編碼器具有較強的泛化能力,使得部分異常上下文信息也能較好地用于重構,因此本文在上下文編碼后添加一個內存記憶模塊MemAE[16],用于學習能最強表征所有正常上下文信息的有限個原型特征并保存在內存項中,該模塊結構如圖2 所示。內存塊M是一個大小為N×C的矩陣,M∈RN×C,存儲了N個內存項,每個內存項為mj,維度為C,在訓練過程中更新和讀取內存項,在測試過程中僅讀取內存項。

圖2 MemAE 模塊Fig.2 MemAE module
內存記憶模塊的輸入為代表空間上下文信息的特征向量zt,輸出由權重向量和內存項相乘得到。對于特征zt的讀取操作,先進行尋址,分別計算zt和每一個內存項mj的余弦相似度,再使用Softmax 函數計算得到權重向量wt,如式(5)所示,其中d(.,.)代表余弦相似度,如式(6)所示:

異常上下文信息也可能由一些正常特征組合得到,為了限制異常上下文信息的重構,本文對權重向量wt的每一項進行硬收縮,確保其稀疏性,如式(7)所示:

其中:λ為稀疏閾值,權重低于閾值時變為0,通過硬壓縮促使模型使用更少的內存項來重構輸入特征;是內存項mj的權重,對于特征zt,其與內存項mj的相似度越高,權重越大。讀取操作可表示為:

其中:為特征zt對應的權重矩陣;M為內存項。
對于式(3)中計算得到的上下文信息zt,通過讀取內存得到,再與每個目標的特征拼接,得到2×C維的特征向量:

2.2.3 損失函數
本文將時間信息網絡和空間信息網絡分開訓練,空間信息網絡的損失函數由外觀特征損失和熵損失兩部分組成。首先最小化每個目標的重構誤差作為外觀特征損失,采用均方差損失函數,如式(10)所示:

在內存記憶模塊中,為了使編碼得到的空間上下文特征zt與內存中最相似的一項相似度盡可能高,本文添加了熵損失函數,如式(11)所示:

其中:為式(7)中的內存尋址權重。平衡這兩個損失函數,得到總損失函數,如式(12)所示:

其中:λrecon和λent分別代表重構損失和熵損失的權重。
本文用光流代表目標的運動信息。光流具有表觀特征不變性,不僅能夠代表目標的運動特征,同時消除了顏色和光線強弱對異常檢測的干擾,很好地彌補了RGB 幀的不足[20]。時間信息網絡的輸入為每一幀目標光流圖,輸出為它們的重構圖時間信息網絡結構與空間信息網絡相同,損失函數由光流特征損失和熵損失組成,如式(13)所示:




最后,將相鄰10 幀視頻異常分數取均值,進行分數平滑處理。
本文實驗使用USCD 和Avenue 數據集。UCSD[21]行人數據集包含ped1 和ped2 兩個子集,本文使用ped2 子集,其中訓練集包含16 個視頻,共2 550 幀,測試集包含11 個視頻,共2 010 幀,每幀大小為240×360 像素,異常行為包括自行車、汽車、滑板。Avenue[22]數據集的訓練集包含16個視頻,共15 328幀,其中測試集包含21 個視頻,共15 324 幀,每幀大小為360×640 像素,異常事件包括跑步、錯誤行走方向、騎自行車等。
本文采用在coco 數據上預訓練的ResNet50fpn目標檢測網絡提取目標,對于訓練集和測試集,檢測閾值分別設置為0.5 和0.4,以降低網絡的泛化能力,擴大重構損失,目標個數n分別設置為18 和24 個,利用TVL1 算法提取光流,將所有視頻幀轉化為灰度圖片,截取的目標調整為64×64 像素。自編碼器采用Adam 優化器優化,對于空間信息網絡和時間信息網絡分別設置0.001 和0.000 1 的學習率,批尺寸為64,超參數λrecon=1.0,λent=0.000 2。本文采用受試者操作特征曲線(Receiver Operating Characteristic,ROC)的曲線下面積(Area Under Curve,AUC)作為評價指標,AUC 越高代表異常檢測效果越好。
3.3.1 FPN 檢測閾值的影響
FPN 的檢測閾值決定了能提取多少目標,閾值過低可能會導致漏檢,閾值過高可能會將背景誤判為目標。因此,本文在UCSD-ped2 數據集上通過實驗分析FPN 不同閾值對異常檢測效果(AUC)的影響,實驗結果見表1,從中可以看出,對訓練集和測試集的檢測閾值分別設置為0.5 和0.4 取得了最好的效果;對于訓練集,設置較高的檢測閾值可以得到更少的目標,降低網絡的泛化能力,增大重構誤差;對于測試集,設置較低的檢測閾值會漏掉部分異常目標,影響檢測效果。

表1 FPN 檢測閾值對異常檢測效果的影響Table 1 Inference of FPN detection threshold on anomaly detection effect
3.3.2 與其他算法的對比
將本文算法與現有視頻異常檢測算法在幀級AUC 上進行對比,實驗結果見表2,從中可以看出,本文算法在UCSD-ped2 數據集上取得了最好的結果,與同樣采用目標檢測的算法FPN-AE-SVM[18]相比提高了1.5 個百分點,與采用內存記憶模塊的算法Mem-AE[16]和P w/MemAE[17]相比也有較大提升,因為UCSD-ped2 數據集中每幀有較多目標,異常事件為少數自行車和汽車、滑板,融合空間上下文信息能很好地學習正常模式,檢出異常目標。同時,本文算法在Avenue 數據集上也取得了較好的結果。

表2 不同視頻異常檢測算法性能對比Table 2 Performance comparison of different video abnormal detection algorithms %
圖3 展示了在UCSD-ped2 測試集視頻片段上的本文算法得到的異常分數和真實標簽,其中95 幀之前為正常人行道視頻(左圖),之后為異常視頻(右圖),異常事件是人行道上的自行車,從中可以看出,當異常目標出現后,異常分數有明顯的提升,算法準確定位了異常目標。

圖3 UCSD-ped2 數據集上的異常分數Fig.3 Abnormal scores in UCSD-ped2 dataset
為驗證雙流網絡和上下文編碼記憶模塊的作用,在UCSD-ped2 數據集上設計對比實驗,實驗結果如表3 所示,從中可以看出:基于光流特征的時間信息網絡效果優于空間信息網絡;時空雙流網絡充分利用了視頻中的時間和空間信息,相比于只用空間流和只用時間流網絡分別提升了5.1 和0.3 個百分點;在添加上下文編碼記憶模塊后,3 種網絡的幀級AUC 都得到了進一步提升,雙流網絡的AUC 上升了1 個百分點,證明了上下文編碼記憶模塊能夠有效提升視頻異常檢測效果。

表3 消融實驗結果Table 3 Ablation experimental results %
本文提出一種基于目標時空上下文融合的視頻異常檢測算法,通過FPN 提取目標以減少背景干擾,利用視頻幀中的多個目標構建空間上下文,并對目標外觀和運動特征重新編碼,充分利用目標的時空上下文信息。在USCD-ped2 和Avenue 數據集上的實驗結果驗證了所提算法的有效性。由于目標提取過程中會產生一定的漏檢,造成異常目標誤判,因此后續將會選擇性能更優的目標檢測算法,同時針對目標之間的聯系進一步優化空間上下文的構建方法。