0
| 本文作者: 不靈叔 | 2018-03-20 11:44 | 專題:CVPR 2018 |
雷鋒網 AI 科技評論按:本文為上海交通大學林天威為 AI 科技評論撰寫的獨家稿件,未經雷鋒網許可不得轉載。
安防作為近年最熱門的計算機視覺研究落地方向,與視頻分析研究有著很緊密的關系。在真實的監控視頻中,一個常見的需求就是要自動識別視頻流中的異常事件,也就是異常事件檢測任務(Anomaly detection)。
這個任務有許多的難點,比如:
1.異常事件發生的頻率很低,導致數據的收集和標注比較困難;
2.異常事件的稀少導致訓練中的正樣本遠少于負樣本;
在監控場景中,不管是通常(normaly)還是異常(anomaly)事件都是很多樣且復雜的,即類別內的多樣性很高,variance很嚴重。
最近UCF的CV研究中心就在CVPR18上發表了一篇關于監控視頻異常事件檢測的論文(Real-world Anomaly Detection in Surveillance Videos, arxiv 1801.04264),提出了一種基于深度多實例排序的弱監督算法框架,同時提出了一個新的大規模異常事件檢測數據集。這篇筆記主要對這篇文章進行介紹,也算是幫助自己理解,若有錯誤煩請指正。
很多先前的方法都先學習一個通常的模式,并假定任何違背這個通常模式的 模式應該是異常的。但事實上,一個方法很難也幾乎不可能去定義一個所謂的通常模式,因為通常模式里面可能包含太多不同的事件和行為了。同樣,也很難去定義異常事件,因為異常事件同樣也可能包含太多類型的情況了。所以,這篇文章主要提出了兩點motivations。
異常事件檢測任務應該要在弱監督框架下進行學習。此處弱監督指在訓練時,只知道一段視頻中有或沒有異常事件,而異常事件的種類以及具體的發生時間是未知的。
異常事件檢測任務應該采取兩階段的框架,即不管異常事件的種類,生成異常事件的proposal,之后再對proposal中包含的異常事件進行分類。這樣有助于提高異常事件檢測的召回率(應該是因為這樣可以找到一些不在現有類別中的異常)。這樣的框架和目標檢測中的RCNN類方法十分相似。這篇文章則主要針對異常proposal階段進行研究。
基于這樣的想法,該文采用了多示例學習(Multiple instance learning, MIL)方法來構建算法框架,并提出了包含 稀疏和平滑約束的MIL 排序損失來訓練模型。算法框架如下圖所示,主要使用MIL的思路構建訓練集合,使用C3D+FC 的網絡來獲取異常評分,最后采用提出的MIL排序損失來訓練模型。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2a0f66a95.jpg?imageMogr2/quality/90)
首先簡單的介紹一下多示例學習,這是在20世紀90年代在機器學習領域中提出的方法。在MIL中,“包”被定義為多個示例的集合,其中”正包“中至少包含一個正示例,而“負包”中則只有負示例(此處示例的概念與樣本相同,以下不區分)。MIL的目的是得到一個分類器,使得對于待測試的示例,可以得到其正負標簽。可以看出,在異常檢測任務中,弱監督實際上就是MIL的另外一種表達形式,所以MIL的求解算法很適合用于該弱監督任務中。多示例學習的更多介紹可以參考這篇博客 多示例學習(Multiple Instance Learning)。
接下來介紹該文提出的算法。文中將異常檢測定義為一個回歸任務,即異常樣本(anormal)的異常值要高于通常樣本(normal)。直觀的考慮可以將排序損失定義為:
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2a3cb3a6e.jpg?imageMogr2/quality/90)
此處Va和Vn分別為異常和通常樣本,f則為模型預測函數。由于在MIL中,并不知道正包中每個樣本的真實標簽,所以采用以下的形式:
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2a5b155d4.jpg?imageMogr2/quality/90)
此處即指,在訓練中對于正包和負包都只使用分數最大的樣本來訓練。具體而言,正包中分數最大的樣本最可能是正樣本,而負包中分數最大的樣本則被認為是hard negative,即難例。基于此式,為了讓正負樣本之間的距離盡可能遠,作者采用了hinge-loss的形式。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2a76a97df.jpg?imageMogr2/quality/90)
但這樣的loss并沒有考慮視頻的時序結構,所以作者提出了兩點改進的motivation:
1.由于視頻片段是連續的,所以異常的分數也應該是相對平滑的。
2.由于正包中的正樣本(異常事件)比例是很低的,所以正包里面的分數應該是稀疏的。
基于這兩點motivation,作者在loss function中添加了兩個約束項,分別為時序平滑約束以及稀疏約束。如下所示。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2a989f1a1.jpg?imageMogr2/quality/90)
最后,再添加上模型參數的l2正則,就得到了最后的損失函數。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2aac31e1c.jpg?imageMogr2/quality/90)
在具體實現中,本文采用了在其他數據集上預訓練好的C3D模型來提取視頻片段的特征,此處不對C3D模型進行訓練。對提取好的特征,再使用3層全連接層來獲得最后的預測異常值。以上提出的MIL排序損失也是用來對這幾層FC層訓練的。
在訓練數據處理方面,該文將每個視頻均勻分為32個片段,作為一個包。訓練時,隨機選取30個正包和30個負包作為mini-batch進行訓練。
本文的另外一個貢獻是提出了一個新的較大規模的異常事件檢測數據集UCF-Crime,參考下表,該數據集比起之前的數據集的優點主要是兩方面:一是視頻的數量和視頻的總時長要遠遠多于之前的數據集,二是其中包含的異常事件類型比較豐富。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2ad594960.jpg?imageMogr2/quality/90)
在數據集構成方面,該數據集共包含13種異常事件。共有1900個視頻,其中異常和通常視頻各占950個。數據集劃分方面,訓練集包含1610個視頻(800個通常視頻,810個異常視頻),測試集包含290個視頻(150個通常,140個異常視頻)。
數據集網址及該論文項目頁見:Real-world Anomaly Detection in Surveillance Videos
本文主要以ROC曲線下的AUC來衡量異常檢測算法的效果,其實驗結果如下圖和下表所示。可以看出,其算法比起之前的方法還是有很大的提高的。此外,添加訓練中的約束項也帶來了一定的效果提升,不過不是很明顯。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2b0204d57.jpg?imageMogr2/quality/90)
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2b206873a.jpg?imageMogr2/quality/90)
下圖則是一些可視化的結果,可以看出在作者挑選的這些例子中,異常檢測的效果還是很不錯的,最右一列則為一些失敗案例。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2b3116313.jpg?imageMogr2/quality/90)
在監控任務場景中,一個可靠的系統應該具備較高的召回率和較低的誤報率,作者比較了0.5閾值下的誤報率,也具備不錯的效果。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2b495013f.jpg?imageMogr2/quality/90)
該文的方法只是做異常事件proposal,但該文的數據集實際上還能做異常時間分類任務,所以此處作者還用C3D和TCNN兩種行為識別算法跑了一個baseline,可以看出此處TCNN的效果還是比C3D要好很多。
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2b558455e.jpg?imageMogr2/quality/90)
![[CVPR 2018論文筆記] 真實監控場景中的異常事件檢測](https://static.leiphone.com/uploads/new/article/740_740/201803/5aaa2b6020317.jpg?imageMogr2/quality/90)
這篇文章主要針對異常事件檢測問題提出了一種新的弱監督算法和一個新的數據集。算法方面,主要就是將這個問題套用進了MIL的框架。這個數據集的提出應該對這個方向的發展會有比較大的幫助,此前異常檢測一直沒有比較大的數據集。
缺點方面,我認為對于異常檢測這種數據不平衡任務,用PRC曲線會比ROC曲線能更好得起到衡量算法效果的作用。即應該用Average Precision 來衡量異常檢測效果。另外文中還著重衡量了虛報率,而在真實場景中對于異常事件的召回率要更重要一些,畢竟漏過幾個異常事件比起虛報幾個異常事件帶來的負面影響更大。
總的來說,異常事件檢測作為真實場景中一個非常重要的任務,目前針對性的研究還不是很多。基于這篇文章提出的算法思路和數據集,后面應該也會有更多的工作跟進吧。
雷峰網特約稿件,未經授權禁止轉載。詳情見轉載須知。