【論文解説】Real-world Anomaly Detection in Surveillance Videos

監視カメラ映像の異常検知に関する論文。 内容が弱ラベル訓練データをmultiple instance learning (MIL) で訓練するという、 個人的にノータッチの手法だったので読んでみたが、中身は非常に分かりやすかった。

1. 概要

監視カメラ映像における実世界異常検知のデータと手法に関する研究。 1900本128時間の映像からなる大規模データセットYouTube等から選別して異常・正常映像を同数用意。 multiple instance learning(MIL)により、異常を含む映像か否かのみを付与した弱ラベル訓練データでの学習を可能にしている。 映像から異常セグメントを見つけるだけなく、そのセグメントにおける異常行動認識も行う。

2. 先行研究との差異

異常検知は、映像を複数分割したセグメントの異常度をランキングするタスクとして考えられる。 近年のランキング手法は、Deep Learningがコンピュータービジョンの様々な分野でSOTAを達成しているが、 正常と異常のアノテーションデータが大量に必要となる。

提案手法ではアノテーション作業を緩和するために、弱ラベル訓練データを利用している。 これにより、セグメントレベルではなく映像レベルで異常をラベリングすることができる。 つまり、ある映像に異常なセグメントがあれば、その映像は異常とラベリングされる。 弱ラベル訓練データの学習は、教師あり学習の一種であるmultiple instance learningにより可能になる。 ある映像の複数セグメントを1つのバッグと考え、異常ラベルの映像はどのセグメントが異常かを学習して、 異常度に応じたランキングを行う。

また異常検知手法として、近年、正常な振舞いを学習したオートエンコーダーの再構築ロスを利用した研究がある。 提案手法でもこの手法を利用するが、正常だけでなく異常な振舞いも考慮している。

3. 手法

3.1 アルゴリズム

手法の全体像を図1に示す。異常映像と正常映像を入力として与え、時間軸を保持したまま32個のセグメントに分割し、それぞれ陽性バッグと陰性バッグに入れる。各セグメントは動画分類器の一種であるC3Dによって特徴抽出されたのち全結合層を通り、陽性バッグと陰性バッグ各々の最大スコアを利用してランキングロスを計算する。

図1 手法の全体像
f:id:Shoto:20200308190221p:plain

ランキングロスは式(6)のように3つのロスの和となる。\beta _ {a}が陽性バッグ、\beta _ {n}が陰性バッグ、l(\beta _ {a}, \beta _ {n})が両者のロス、f(\nu _ {a} ^ {i})が異常映像の各セグメントの異常スコア、f(\nu _ {n} ^ {i})が正常映像の各セグメントの異常スコア、\lambda _ {1}が2つ目のロスの重み、\lambda _ {2}が3つ目のロスの重みとなる。

1つ目のロスは、図1に示す通り陽性バッグと陰性バッグの最大ロスを利用したもので、両者の差が大きくなるように学習する。陰性バッグの最大スコアとなるセグメントはいわゆるHard NegativeであるためFalse Positiveとならないよう、このロスによってスコアが低くなるよう学習が行われる。

2つ目のロスは、映像はセグメントの連続であるため、隣合うセグメントのスコアの変化はスムーズである必要があるという制約となる。3つ目のロスは、異常は突発的に起こるためスコアがまばらに(小数のセグメントのスコアが高く)なるようにという制約となる。

f:id:Shoto:20200308190241p:plain

3.2 データセット

既存の異常検知向けの映像データセットは、全体的に映像の数が少なく長さも短い。また異常のバリエーションが限られており、そのうち幾つかは異常とは呼べないものもある。

提案手法で作成したデータセットは、トリミングしていない比較的長い監視カメラ映像となる。公共の安全において重要な13個の実世界の異常な振舞い(虐待、逮捕、放火、突撃、事故、強盗、爆発、喧嘩、強盗、射撃、窃盗、万引き、破壊行為)が含まれている。10人のアノテーターを訓練して、YouTubeとLiveLeakから"car crash"や"load accident"など多言語でテキストサーチして収集。編集動画、いたずら動画、手持ちカメラ、不明瞭な異常などは含めない。正常・異常各々950本の計1900本の映像からなる。データセットここからダウンロードできる。

なお訓練だけなら映像レベルのアノテーションで問題ないが、テストには異常なフレームのアノテーションが必要になるため、複数人のアノテーターが付けた平均を異常なフレームとしてアノテーションしている。訓練・テストに利用した正常・異常映像の数を表1に示す。

表1 訓練・テストに利用した正常・異常映像の数

normal anomaly
train 800 810
test 150 140

3.3 実装

映像のフレームレートは30FPSに固定して、各セグメントを240x320x16にして、正常・異常共に30バッチずつ入力。 フレームベースで描いたROCのAUCで評価を行う。

4. 評価

4.1 異常検知

表2に既存手法と提案手法のAUCによる評価結果を示す。 先に述べたようにほとんどの異常な振舞いは短時間で発生する。Binary classifier(バイナリ分類器)は、提案手法のように映像をセグメント分割しないため、多くの正常セグメントを含む異常とラベリングされた映像の異常検知には利用できない。Hasan et al.[18]は、正常映像で訓練したオートエンコーダーである。正常セグメントはよく分類できるが、未知の正常セグメントで高い異常スコアが出る傾向にある。Lu[28] et al.は辞書学習で、[18]に比べて大幅に精度は高くなるが、ロバストでない。提案手法は、既存手法のすべての課題を解決できており、[28]に比べて精度が10ポイント程上昇している。2つ目と3つ目のロスで制約を加えた効果も見られる。

表2 既存手法と提案手法のAUC
f:id:Shoto:20200308190301p:plain

図2にテストデータの定性評価を示す。赤い窓が異常範囲のGround Truth、縦軸が異常スコア、横軸が時間を示す。適切に異常検知できたケースでは、Ground Truthと予測した異常スコアの高い部分が重なっていることが分かる。一方、暗闇の侵入を正常と判断したり、集団の出現を異常と判断するなどの誤判定も見られる。

図2 テストデータの定性評価
f:id:Shoto:20200308190315p:plain

表3に正常映像のみで評価したアラーム間違い率を示す。正常と異常が両方含まれる訓練データで学習しているため、アラーム間違い率が1.9と低い。

表3 正常映像のアラーム間違い率
f:id:Shoto:20200308190442p:plain

4.2 異常行動認識

異常行動認識のために、TCNN(Tube Convolutional Neural Network)を利用している。TCNNでは、C3Dの一部をToI(tube of interest)プーリング層に置き換えている。ToIプーリング層は、全セグメントの特徴を統合して1つの映像の特徴とする。これによりend-to-endな異常行動認識が可能になる。表4に異常行動認識の精度比較を示す。C3Dの一部をToIプーリング層に置き換えることにより、5ポイント程精度が向上していることが分かる。

表4 異常行動認識の精度比較
f:id:Shoto:20200308190503p:plain

まとめ

正常映像と異常映像を同数含む1900本128時間という膨大な映像データセットを作成し、映像の異常フレームのラベリングという非常にコストが高いアノテーション作業を、弱ラベル訓練データでも学習可能なMILを利用することで映像単位まで簡略化し、映像の異常検知において既存手法を10ポイントも上回り、さらにTCNNによって異常行動認識まで可能にした。

所感

まとめに書いたようにすごく良くできた論文だった。ただし少しできすぎている感がある。 例えば、セグメントごとに異常スコアを算出している認識だったが、評価指標のAUCを算出するために描いたROCが何故かフレームベースだった。あとTCNN(ToIプーリング層)の部分もあっさりしていて、もう少し詳細な説明が欲しい。あとロス関数の2つの制約のうち、どちらの効果が大きいのかablation testの結果が見たいところ。 また自分の理解力の問題でもあるが、32個のセグメント分割と30FPSのフレームレートと16フレームの入力の関係が結び付かなかった。これはコードを読めば分かるかも知れないが、MATLABで実装っていう。。。 ただし、非常に納得できる内容だったし、今後の映像異常検知のベースとなる研究であると思う(というかなってきている)。 特に、データは正常映像だけでは限界があるので異常映像も同時に学習させるべきというのと、異常部分にフォーカスするために映像はセグメント分割すべきというのがポイントだと思った。