(附代碼)視頻異常行為檢測算法MPN,多個(gè)數(shù)據(jù)庫上達(dá)到SOTA
點(diǎn)擊左上方藍(lán)字關(guān)注我們

作者:呂輝, 陳宸, 崔振, 許春燕, 李勇, 楊健
單位:南京理工大學(xué);北卡夏洛特分校

摘要:
該工作提出了一個(gè)場景模式自適應(yīng)的動態(tài)原型(prototype)學(xué)習(xí)框架,以實(shí)時(shí)的學(xué)習(xí)視頻中的正常模式,來輔助視頻幀的預(yù)測,然后通過衡量視頻幀的預(yù)測誤差和和學(xué)習(xí)到的正常模式原型向量與輸入特征的差異程度來檢測異常。提出的新算法在無監(jiān)督異常檢測的數(shù)據(jù)集上和新的少樣本學(xué)習(xí)場景中,均達(dá)到了較好的成績。
文章鏈接:https://arxiv.org/abs/2104.06689
代碼鏈接:https://github.com/ktr-hubrt/MPN & http://vgg-ai.cn/pages/Resource/
擬解決的問題:
近來,基于自編碼器的視頻幀重建(或未來幀預(yù)測)方法成為視頻異常檢測的一個(gè)潮流范式。這些僅僅使用包含正常模式的數(shù)據(jù)訓(xùn)練得到的模型,在遇到?jīng)]有見過的異常模式的數(shù)據(jù)時(shí),往往會產(chǎn)生比較大的重構(gòu)誤差。但是由于深度神經(jīng)網(wǎng)絡(luò)極強(qiáng)的泛化能力,深度模型對一些異常的視頻幀(部分區(qū)域)也會重建(或預(yù)測)的較好,這就導(dǎo)致了“過度泛化”的問題。在這份工作中,我們設(shè)計(jì)了一個(gè)動態(tài)原型學(xué)習(xí)的組件,來動態(tài)實(shí)時(shí)地建模和壓縮視頻中的正常模式為原型(prototype),以促進(jìn)模型對正常視頻幀的重建(或預(yù)測)和抑制對異常視頻幀的重建(或預(yù)測)。并且,我們引入元學(xué)習(xí)理論,賦予動態(tài)原型學(xué)習(xí)組件場景模式自適應(yīng)的能力,從而不需要設(shè)計(jì)手動的更新規(guī)則和閾值來使原型適應(yīng)不同的測試場景,是的模型具有快速高效的場景自適應(yīng)能力。
貢獻(xiàn):
1)我們設(shè)計(jì)了一個(gè)動態(tài)原型學(xué)習(xí)組件來學(xué)習(xí)和建模監(jiān)控視頻里的正常模式。其中,我們結(jié)合自注意力機(jī)制,隱式自主的壓縮視頻特征為表征正常模式的原型向量。整個(gè)框架是端到端的,可微的。
2)我們在動態(tài)原型學(xué)習(xí)組件中引入元學(xué)習(xí)理論,來賦予模型場景自適應(yīng)的能力。通過學(xué)習(xí)一個(gè)好的初始化參數(shù)和參數(shù)對應(yīng)的更新步長集合,僅僅用過少次的參數(shù)更新,算法模型就可以自動地適應(yīng)到新的測試場景。
3)我們設(shè)計(jì)的算法在無監(jiān)督異常檢測和少樣本異常檢測的場景下均取得了較好的成績。
模型設(shè)計(jì):

Dynamic Prototype Unit(DPU):
我們設(shè)計(jì)的DPU輸入編碼器(E)得到的編碼特征,輸出動態(tài)原型加強(qiáng)后的特征。通過結(jié)合自監(jiān)督注意力機(jī)制,DPU首先得到多個(gè)對應(yīng)輸入編碼特征每個(gè)元素位置的注意力圖,然后分別得到對應(yīng)的多個(gè)原型特征向量。通過對原型向量的查詢和提取,就可以得到加強(qiáng)后的特征圖。
a) 注意力過程:
首先,我們通過多個(gè)映射函數(shù)分別得到m個(gè)注意力圖,這邊我們成為normalcy map,分別代表每個(gè)空間位置的特征向量對于生成對應(yīng)的原型向量的比重。

公式中,x自編碼器輸出的編碼特征。
b) 合奏過程:
得到normalcy map之后,我們使用帶權(quán)和的形式,整合空間特征向量來生成對應(yīng)的原型向量:

c) 檢索過程:
得到代表場景正常元素的原型向量之后,我們需要利用這些原型表征的信息來輔助未來視頻幀的預(yù)測。我們首先使用原始自編碼器輸出的特征來檢索獲取的原型向量,以得到加強(qiáng)后的特征,然后就可以解碼新得到的特征來預(yù)測未來幀:

通過衡量每個(gè)空間位置的特征向量(來自于自編碼器輸出的特征)和原型向量的相似度,對于每個(gè)空間位置,我們可以得到最接近這個(gè)像素位置的原型向量(軟權(quán)重的形式),進(jìn)而得到完成的特征。
損失函數(shù)的設(shè)置:
為了訓(xùn)練完整的異常檢測框架,我們分別設(shè)置了未來幀預(yù)測損失,特征檢索損失來實(shí)現(xiàn)預(yù)測未來幀和學(xué)習(xí)動態(tài)原型向量的目的。
a) 未來幀預(yù)測損失:

b) 特征重建損失:

特征重建損失包括兩個(gè)部分,一個(gè)是緊致度量,一個(gè)是差異度量。前者使原型向量建模視頻中的正常元素信息,后者促使學(xué)習(xí)到的原型向量建模不同的信息。


c) 完整損失:


Meta Prototype Unit(MPU):
結(jié)合元學(xué)習(xí)理論,我們把DPU組件進(jìn)化為元學(xué)習(xí)原型組件。利用訓(xùn)練集的不同場景,我們學(xué)習(xí)一組最優(yōu)的初始化參數(shù)集合和對應(yīng)的更新步長,在測試時(shí),更新對應(yīng)的參數(shù),我們就可以得到場景模式自適應(yīng)的異常檢測器。
首先我們把動態(tài)原型組件和后端的解碼函數(shù)囊括進(jìn)元學(xué)習(xí)組件中:

對應(yīng)于完整的異常檢測框架,其中?代表自編碼器參數(shù)集合,?代表后端解碼函數(shù)參數(shù)集合,?代表動態(tài)原型組件的參數(shù)集合:

然后,我們定義更新函數(shù)為:

通過一步更新,我們可以得到對應(yīng)的參數(shù)集合:

利用梯度的梯度算法,我們可以得到一組姣好的初始化參數(shù)集合和更新步長集合:

實(shí)現(xiàn)細(xì)節(jié):
在測試過程中,我們使用帶權(quán)重的未來幀預(yù)測誤差和特征緊致度量來衡量視頻幀的異常程度:

我們把算法模型的度量評優(yōu)分為兩個(gè)場景,分別是無監(jiān)督異常檢測和少樣本異常檢測。對于前者,在訓(xùn)練過程中,我們在無監(jiān)督異常檢測數(shù)據(jù)集上訓(xùn)練和測試算法模型。對于后者,我們首先在公開的大型異常檢測數(shù)據(jù)集(僅利用正常視頻)上訓(xùn)練算法模型,以學(xué)習(xí)初始參數(shù)集合和更新步長集合,然后在其他的異常檢測數(shù)據(jù)集上,使用極少次數(shù)(本文中1次)的參數(shù)更新,來試驗(yàn)?zāi)P偷膱鼍斑m應(yīng),然后再通過模型的測試,來衡量模型的性能。
實(shí)驗(yàn)結(jié)果:
DPU在無監(jiān)督的異常檢測數(shù)據(jù)集上進(jìn)行了試驗(yàn),均得到最優(yōu)或次優(yōu)的結(jié)果。值得一提的是,我們設(shè)計(jì)的模型中建模的動態(tài)原型,可以視為一種隱藏向量,從而不需要像之前基于memory機(jī)制的算法模型一樣,建模整個(gè)訓(xùn)練集的正常元素模式,并且存儲下來,占據(jù)額外的存儲空間。同時(shí)減少的這部分?jǐn)?shù)據(jù)I/O操作也使得我們設(shè)計(jì)的算法模型具有更快地速度。

MPU在元學(xué)習(xí)few-shot場景下,也取得了不錯的結(jié)果。

我們展示了原型學(xué)習(xí)過程中產(chǎn)生的自注意力圖(第一列是未來幀,第二列是檢測得到的異常圖,第三列是多組自注意力圖之和,后面三列均是單個(gè)注意力圖):

我們還展示了算法模型在一些測試視頻上的預(yù)測結(jié)果:

我們還分析了多個(gè)SOTA模型的運(yùn)行效率:

數(shù)據(jù)均在4核CPU(E5-2650),單塊GPURTX-2080Ti機(jī)器上實(shí)驗(yàn)得出。
更多的細(xì)節(jié)分析請見原文,代碼已經(jīng)開源,敬請關(guān)注加星,謝謝大家。
文章鏈接:https://arxiv.org/abs/2104.06689
代碼鏈接:https://github.com/ktr-hubrt/MPN
課題組網(wǎng)站:http://vgg-ai.cn
END
整理不易,點(diǎn)贊三連↓
