古平,邱嘉濤,羅長江,張志鵬
(重慶大學(xué) 計(jì)算機(jī)學(xué)院,重慶 400044)
視頻監(jiān)控系統(tǒng)被廣泛應(yīng)用于公共場所,在維護(hù)社會治安穩(wěn)定方面發(fā)揮重要作用。視頻異常檢測是指通過算法檢測視頻中不符合預(yù)期或常理的行為,旨在發(fā)現(xiàn)并定位可能威脅公共安全的異常行為[1]。視頻異常檢測主要存在兩個難點(diǎn)[2]:一方面,異常事件有很強(qiáng)的場景依賴性,不同場景對異常行為的定義不同,部分場景下的正常事件在其他場景下會變成異常,如人在人行道行走時為正常,但隨意穿過馬路則為異常;另一方面,異常事件具有稀缺性、多樣性、不可窮舉性等特點(diǎn)。因此,視頻異常檢測大多采用半監(jiān)督或無監(jiān)督方法,利用只包含正常樣本的訓(xùn)練集訓(xùn)練模型,然后對測試集進(jìn)行檢測。
異常事件的主體往往是視頻中的行人、車輛等目標(biāo),現(xiàn)有的異常檢測方法大多將視頻幀分割成若干區(qū)間處理或是直接將視頻幀輸入模型,不能很好地關(guān)注發(fā)生異常的對象,易受背景干擾。在檢測時,現(xiàn)有算法大多只考慮了時間上下文提取,忽視了空間上下文信息,而對于連續(xù)視頻數(shù)據(jù)中的目標(biāo),時空上下文信息對異常檢測有很大意義。時間上下文信息代表了目標(biāo)的運(yùn)動狀態(tài),空間上下文信息代表了檢測目標(biāo)和周圍目標(biāo)的關(guān)系。例如,在測試集視頻幀中,若同時出現(xiàn)了行人和汽車,而在訓(xùn)練集中未出現(xiàn)過這種情況,則認(rèn)為出現(xiàn)了異常目標(biāo)。
為充分利用目標(biāo)的時空上下文信息,準(zhǔn)確檢測異常目標(biāo),本文提出一種融合目標(biāo)時空上下文的視頻異常檢測算法。通過特征圖金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN)對目標(biāo)進(jìn)行提取以避免背景干擾,針對同一視頻幀中的多個目標(biāo)構(gòu)建空間上下文,并將目標(biāo)外觀和運(yùn)動特征重新編碼。利用時空雙流網(wǎng)絡(luò)分別重構(gòu)目標(biāo)的外觀和運(yùn)動特征,兩個子網(wǎng)絡(luò)采用相同的結(jié)構(gòu),均包含自編碼器和上下文編碼記憶模塊,并將重構(gòu)誤差作為異常分?jǐn)?shù)。在此基礎(chǔ)上,利用異常檢測模塊融合兩個子網(wǎng)絡(luò)的輸出,得到最終的異常檢測結(jié)果。
現(xiàn)有的視頻異常檢測算法可分為傳統(tǒng)機(jī)器學(xué)習(xí)方法和深度學(xué)習(xí)方法兩類。傳統(tǒng)機(jī)器學(xué)習(xí)方法一般包括特征提取和異常判別兩步,提取的手工特征有光流直方圖[3]、紋理[4]、3D 梯度[5]等,常用的判別方法有聚類判別[6]、重構(gòu)判別[7]、生成概率判別[8]等。然而,基于手工特征的方法往往不能準(zhǔn)確描述復(fù)雜的目標(biāo)和行為,導(dǎo)致視頻異常識別效果不理想。
近十年來,基于深度學(xué)習(xí)的視頻異常檢測研究取得了較大進(jìn)展。對于時空信息的提取,目前主要有雙流網(wǎng)絡(luò)、3D 卷積和長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)等方法。SIMONYAN等[9]構(gòu)建了時空雙流網(wǎng)絡(luò),對視頻圖像和光流分別訓(xùn)練兩個CNN模型,最終對判別結(jié)果進(jìn)行合并。FAN等[10]將雙流網(wǎng)絡(luò)用于視頻異常識別,利用RGB 幀和動態(tài)流分別表示外觀異常和動作異常,利用高斯混合模型進(jìn)行異常判別。3D 卷積也是一種常用方法,目前已有C3D、I3D、S3D 等多種3D 卷積模型[11]。NOGAS等[12]利用3D 卷積自編碼器(AutoEncoder,AE)計(jì)算視頻時空塊的重構(gòu)誤差進(jìn)行異常判別,該網(wǎng)絡(luò)結(jié)構(gòu)簡單,具有較高的效率,但識別結(jié)果還不夠理想。此外,LSTM 網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)也被用于對連續(xù)的視頻幀進(jìn)行建模,如CHONG等[13]先采用LSTM提取視頻特征,再利用自編碼器對特征重構(gòu)從而判別異常,但該網(wǎng)絡(luò)結(jié)構(gòu)比較復(fù)雜,訓(xùn)練花費(fèi)大。
目前常用的基于深度學(xué)習(xí)的視頻異常檢測網(wǎng)絡(luò)有VAE、MemAE、GAN 等。WANG等[14]提出了一種串聯(lián)VAE 的結(jié)構(gòu),通過第1 個VAE 網(wǎng)絡(luò)過濾明顯正常的樣本,再通過第2個VAE網(wǎng)絡(luò)進(jìn)行異常檢測。SABOKROU等[15]將CAE和GAN結(jié)合,利用GAN的判別器提升CAE的重構(gòu)能力。然而,由于自編碼器有較強(qiáng)的泛化能力,因此異常樣本也可能獲得較低的重構(gòu)誤差。為了增大異常樣本的重構(gòu)誤差,研究者將MemAE 用于視頻異常檢測。GONG等[16]在AE 中加入Memory 模塊,降低了模型的泛化能力,使異常樣本有更大的重構(gòu)誤差。PARK等[17]在MemAE 的基礎(chǔ)上添加特征分離損失,學(xué)習(xí)得到正常視頻幀的多個模式,同時使用U-Net 代替編碼器實(shí)現(xiàn)了重構(gòu)和預(yù)測。然而,此類方法大多將視頻幀分割成若干區(qū)間處理或是直接將視頻幀輸入模型,不能很好地關(guān)注發(fā)生異常的對象,易受背景干擾。IONESCU等[18]將視頻異常檢測視為分類問題,通過目標(biāo)檢測分離視頻幀中的目標(biāo),然后利用K-means 算法和SVM 對目標(biāo)分類,當(dāng)目標(biāo)不屬于任何一類時,即作為異常對象被檢出。但該方法將提取的目標(biāo)視為單獨(dú)的個體,忽略了目標(biāo)與空間周圍目標(biāo)的關(guān)系,難以發(fā)現(xiàn)上下文相關(guān)的異常。
本文提出一種基于目標(biāo)時空上下文融合的視頻異常檢測算法,如圖1 所示,整體檢測網(wǎng)絡(luò)由目標(biāo)檢測模塊、時間信息網(wǎng)絡(luò)、空間信息網(wǎng)絡(luò)和異常檢測模塊組成,時空兩個子網(wǎng)絡(luò)結(jié)構(gòu)相同,均由編碼器、上下文編碼記憶模塊和解碼器組成。對于視頻數(shù)據(jù)集,先對各視頻幀進(jìn)行目標(biāo)檢測,得到所有目標(biāo)的矩形邊界框,再計(jì)算光流,在視頻幀和光流圖的對應(yīng)位置提取目標(biāo),分別輸入2 個子網(wǎng)絡(luò),通過空間信息網(wǎng)絡(luò)提取外觀特征,通過時間信息網(wǎng)絡(luò)提取運(yùn)動特征。在對目標(biāo)進(jìn)行編碼、提取上下文和重構(gòu)后,計(jì)算重構(gòu)誤差作為異常分?jǐn)?shù),利用異常檢測模塊融合兩個子網(wǎng)絡(luò)的輸出,給出異常評價結(jié)果。
圖1 基于目標(biāo)時空上下文融合的異常檢測網(wǎng)絡(luò)Fig.1 Video anomaly detection network based on target spatio-temporal context fusion
本文通過FPN[19]進(jìn)行目標(biāo)檢測,F(xiàn)PN 同時融合了底層的細(xì)節(jié)信息和高層的語義信息,能夠準(zhǔn)確檢測小目標(biāo),同時兼顧精度和速度。對于視頻數(shù)據(jù)集X,首先分幀得到連續(xù)的視頻幀X1,X2,…,XN,依次輸入FPN,得到視頻中所有目標(biāo)的矩形邊界框,再計(jì)算相鄰兩幀的光流圖,如式(1)所示:
其中:光流圖Yt由視頻幀Xt-1和Xt計(jì)算得到。然后,分別在RGB幀Xt和光流圖Yt上對應(yīng)位置裁剪得到視頻幀內(nèi)的所有目標(biāo),對于每一幀Xt,經(jīng)過目標(biāo)檢測后得到目標(biāo)RGB幀和目標(biāo)光流圖,縮放到大小為64×64 的矩陣,以幀為單位,將上述目標(biāo)分別輸入空間和時間信息網(wǎng)絡(luò)。
空間信息網(wǎng)絡(luò)的作用是提取目標(biāo)對象的外觀特征,經(jīng)過空間上下文編碼后再進(jìn)行解碼重構(gòu),以此判斷視頻幀在空間域是否存在異常目標(biāo)。
2.2.1 空間自編碼器
空間自編碼器包含編碼器和解碼器兩個部分。編碼器將輸入的RGB 幀編碼為特征向量,輸入為單個目標(biāo)的RGB幀,輸出為目標(biāo)的外觀特征,編碼器包含4 個卷積層和3 個最大池化層,使用ReLU 激活函數(shù),其輸出的特征輸入上下文編碼記憶模塊進(jìn)行重新編碼。解碼器將重新編碼后的特征重構(gòu),用于計(jì)算異常分?jǐn)?shù),解碼器的輸入為經(jīng)過重新編碼的特征′,輸出為重構(gòu)后的目標(biāo)。解碼器包含4 個卷積層和3 個上采樣層,使用最近鄰插值法進(jìn)行上采樣。上述過程可表示為:
其中:θe、θd表示編碼器和解碼器的參數(shù);E表示編碼器;D表示解碼器。
2.2.2 上下文編碼記憶模塊
通過目標(biāo)提取,可使檢測網(wǎng)絡(luò)只關(guān)注可能發(fā)生異常的目標(biāo),免受背景圖像的干擾,但同時也去除了目標(biāo)的空間上下文信息,即同一幀中多個目標(biāo)之間的關(guān)系,如操場上車輛與行人的共現(xiàn)關(guān)系。為此,本文在自編碼器中嵌入上下文編碼記憶模塊MemAE,利用空間上下文關(guān)系對目標(biāo)特征進(jìn)行編碼并輔助目標(biāo)重構(gòu),從而增大異常目標(biāo)的重構(gòu)誤差。上下文編碼記憶模塊輸入為編碼后的目標(biāo)外觀特征,每次輸入一幀中所有目標(biāo)的特征,用于計(jì)算該幀的空間上下文,并對這n個目標(biāo)的特征重新編碼。首先將輸入的特征圖展開后得到C維的特征向量。由于出現(xiàn)在同一幀的不同目標(biāo)之間存在關(guān)聯(lián),每幀視頻可以得到n個目標(biāo),因此將它們疊加后得到一個大小為C的特征向量,作為這一視頻幀的空間上下文信息,如式(4)所示:
其中:zt表示視頻幀的空間上下文信息;表示目標(biāo)的特征;n為一幀中的目標(biāo)數(shù),若一幀中的目標(biāo)不足n個,則通過隨機(jī)重復(fù)將目標(biāo)添加至n個。
視頻異常檢測采用無監(jiān)督訓(xùn)練方式,訓(xùn)練集數(shù)據(jù)全部為正常樣本,其中每一幀的空間上下文信息即代表一種正常的模式,所以,來自于訓(xùn)練集的正常模式是對測試集進(jìn)行異常檢測的關(guān)鍵。由于自編碼器具有較強(qiáng)的泛化能力,使得部分異常上下文信息也能較好地用于重構(gòu),因此本文在上下文編碼后添加一個內(nèi)存記憶模塊MemAE[16],用于學(xué)習(xí)能最強(qiáng)表征所有正常上下文信息的有限個原型特征并保存在內(nèi)存項(xiàng)中,該模塊結(jié)構(gòu)如圖2 所示。內(nèi)存塊M是一個大小為N×C的矩陣,M∈RN×C,存儲了N個內(nèi)存項(xiàng),每個內(nèi)存項(xiàng)為mj,維度為C,在訓(xùn)練過程中更新和讀取內(nèi)存項(xiàng),在測試過程中僅讀取內(nèi)存項(xiàng)。
圖2 MemAE 模塊Fig.2 MemAE module
內(nèi)存記憶模塊的輸入為代表空間上下文信息的特征向量zt,輸出由權(quán)重向量和內(nèi)存項(xiàng)相乘得到。對于特征zt的讀取操作,先進(jìn)行尋址,分別計(jì)算zt和每一個內(nèi)存項(xiàng)mj的余弦相似度,再使用Softmax 函數(shù)計(jì)算得到權(quán)重向量wt,如式(5)所示,其中d(.,.)代表余弦相似度,如式(6)所示:
異常上下文信息也可能由一些正常特征組合得到,為了限制異常上下文信息的重構(gòu),本文對權(quán)重向量wt的每一項(xiàng)進(jìn)行硬收縮,確保其稀疏性,如式(7)所示:
其中:λ為稀疏閾值,權(quán)重低于閾值時變?yōu)?,通過硬壓縮促使模型使用更少的內(nèi)存項(xiàng)來重構(gòu)輸入特征;是內(nèi)存項(xiàng)mj的權(quán)重,對于特征zt,其與內(nèi)存項(xiàng)mj的相似度越高,權(quán)重越大。讀取操作可表示為:
其中:為特征zt對應(yīng)的權(quán)重矩陣;M為內(nèi)存項(xiàng)。
對于式(3)中計(jì)算得到的上下文信息zt,通過讀取內(nèi)存得到,再與每個目標(biāo)的特征拼接,得到2×C維的特征向量:
2.2.3 損失函數(shù)
本文將時間信息網(wǎng)絡(luò)和空間信息網(wǎng)絡(luò)分開訓(xùn)練,空間信息網(wǎng)絡(luò)的損失函數(shù)由外觀特征損失和熵?fù)p失兩部分組成。首先最小化每個目標(biāo)的重構(gòu)誤差作為外觀特征損失,采用均方差損失函數(shù),如式(10)所示:
在內(nèi)存記憶模塊中,為了使編碼得到的空間上下文特征zt與內(nèi)存中最相似的一項(xiàng)相似度盡可能高,本文添加了熵?fù)p失函數(shù),如式(11)所示:
其中:為式(7)中的內(nèi)存尋址權(quán)重。平衡這兩個損失函數(shù),得到總損失函數(shù),如式(12)所示:
其中:λrecon和λent分別代表重構(gòu)損失和熵?fù)p失的權(quán)重。
本文用光流代表目標(biāo)的運(yùn)動信息。光流具有表觀特征不變性,不僅能夠代表目標(biāo)的運(yùn)動特征,同時消除了顏色和光線強(qiáng)弱對異常檢測的干擾,很好地彌補(bǔ)了RGB 幀的不足[20]。時間信息網(wǎng)絡(luò)的輸入為每一幀目標(biāo)光流圖,輸出為它們的重構(gòu)圖時間信息網(wǎng)絡(luò)結(jié)構(gòu)與空間信息網(wǎng)絡(luò)相同,損失函數(shù)由光流特征損失和熵?fù)p失組成,如式(13)所示:
最后,將相鄰10 幀視頻異常分?jǐn)?shù)取均值,進(jìn)行分?jǐn)?shù)平滑處理。
本文實(shí)驗(yàn)使用USCD 和Avenue 數(shù)據(jù)集。UCSD[21]行人數(shù)據(jù)集包含ped1 和ped2 兩個子集,本文使用ped2 子集,其中訓(xùn)練集包含16 個視頻,共2 550 幀,測試集包含11 個視頻,共2 010 幀,每幀大小為240×360 像素,異常行為包括自行車、汽車、滑板。Avenue[22]數(shù)據(jù)集的訓(xùn)練集包含16個視頻,共15 328幀,其中測試集包含21 個視頻,共15 324 幀,每幀大小為360×640 像素,異常事件包括跑步、錯誤行走方向、騎自行車等。
本文采用在coco 數(shù)據(jù)上預(yù)訓(xùn)練的ResNet50fpn目標(biāo)檢測網(wǎng)絡(luò)提取目標(biāo),對于訓(xùn)練集和測試集,檢測閾值分別設(shè)置為0.5 和0.4,以降低網(wǎng)絡(luò)的泛化能力,擴(kuò)大重構(gòu)損失,目標(biāo)個數(shù)n分別設(shè)置為18 和24 個,利用TVL1 算法提取光流,將所有視頻幀轉(zhuǎn)化為灰度圖片,截取的目標(biāo)調(diào)整為64×64 像素。自編碼器采用Adam 優(yōu)化器優(yōu)化,對于空間信息網(wǎng)絡(luò)和時間信息網(wǎng)絡(luò)分別設(shè)置0.001 和0.000 1 的學(xué)習(xí)率,批尺寸為64,超參數(shù)λrecon=1.0,λent=0.000 2。本文采用受試者操作特征曲線(Receiver Operating Characteristic,ROC)的曲線下面積(Area Under Curve,AUC)作為評價指標(biāo),AUC 越高代表異常檢測效果越好。
3.3.1 FPN 檢測閾值的影響
FPN 的檢測閾值決定了能提取多少目標(biāo),閾值過低可能會導(dǎo)致漏檢,閾值過高可能會將背景誤判為目標(biāo)。因此,本文在UCSD-ped2 數(shù)據(jù)集上通過實(shí)驗(yàn)分析FPN 不同閾值對異常檢測效果(AUC)的影響,實(shí)驗(yàn)結(jié)果見表1,從中可以看出,對訓(xùn)練集和測試集的檢測閾值分別設(shè)置為0.5 和0.4 取得了最好的效果;對于訓(xùn)練集,設(shè)置較高的檢測閾值可以得到更少的目標(biāo),降低網(wǎng)絡(luò)的泛化能力,增大重構(gòu)誤差;對于測試集,設(shè)置較低的檢測閾值會漏掉部分異常目標(biāo),影響檢測效果。
表1 FPN 檢測閾值對異常檢測效果的影響Table 1 Inference of FPN detection threshold on anomaly detection effect
3.3.2 與其他算法的對比
將本文算法與現(xiàn)有視頻異常檢測算法在幀級AUC 上進(jìn)行對比,實(shí)驗(yàn)結(jié)果見表2,從中可以看出,本文算法在UCSD-ped2 數(shù)據(jù)集上取得了最好的結(jié)果,與同樣采用目標(biāo)檢測的算法FPN-AE-SVM[18]相比提高了1.5 個百分點(diǎn),與采用內(nèi)存記憶模塊的算法Mem-AE[16]和P w/MemAE[17]相比也有較大提升,因?yàn)閁CSD-ped2 數(shù)據(jù)集中每幀有較多目標(biāo),異常事件為少數(shù)自行車和汽車、滑板,融合空間上下文信息能很好地學(xué)習(xí)正常模式,檢出異常目標(biāo)。同時,本文算法在Avenue 數(shù)據(jù)集上也取得了較好的結(jié)果。
表2 不同視頻異常檢測算法性能對比Table 2 Performance comparison of different video abnormal detection algorithms %
圖3 展示了在UCSD-ped2 測試集視頻片段上的本文算法得到的異常分?jǐn)?shù)和真實(shí)標(biāo)簽,其中95 幀之前為正常人行道視頻(左圖),之后為異常視頻(右圖),異常事件是人行道上的自行車,從中可以看出,當(dāng)異常目標(biāo)出現(xiàn)后,異常分?jǐn)?shù)有明顯的提升,算法準(zhǔn)確定位了異常目標(biāo)。
圖3 UCSD-ped2 數(shù)據(jù)集上的異常分?jǐn)?shù)Fig.3 Abnormal scores in UCSD-ped2 dataset
為驗(yàn)證雙流網(wǎng)絡(luò)和上下文編碼記憶模塊的作用,在UCSD-ped2 數(shù)據(jù)集上設(shè)計(jì)對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表3 所示,從中可以看出:基于光流特征的時間信息網(wǎng)絡(luò)效果優(yōu)于空間信息網(wǎng)絡(luò);時空雙流網(wǎng)絡(luò)充分利用了視頻中的時間和空間信息,相比于只用空間流和只用時間流網(wǎng)絡(luò)分別提升了5.1 和0.3 個百分點(diǎn);在添加上下文編碼記憶模塊后,3 種網(wǎng)絡(luò)的幀級AUC 都得到了進(jìn)一步提升,雙流網(wǎng)絡(luò)的AUC 上升了1 個百分點(diǎn),證明了上下文編碼記憶模塊能夠有效提升視頻異常檢測效果。
表3 消融實(shí)驗(yàn)結(jié)果Table 3 Ablation experimental results %
本文提出一種基于目標(biāo)時空上下文融合的視頻異常檢測算法,通過FPN 提取目標(biāo)以減少背景干擾,利用視頻幀中的多個目標(biāo)構(gòu)建空間上下文,并對目標(biāo)外觀和運(yùn)動特征重新編碼,充分利用目標(biāo)的時空上下文信息。在USCD-ped2 和Avenue 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果驗(yàn)證了所提算法的有效性。由于目標(biāo)提取過程中會產(chǎn)生一定的漏檢,造成異常目標(biāo)誤判,因此后續(xù)將會選擇性能更優(yōu)的目標(biāo)檢測算法,同時針對目標(biāo)之間的聯(lián)系進(jìn)一步優(yōu)化空間上下文的構(gòu)建方法。