行動認識のImageNet/BERT に当たるI3Dを読んだ

論文について

今回は論文の解説。

Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset (ICCV2017)

著者:Joao Carreira, Andrew Zisserman  (DeepMind)

論文:https://arxiv.org/abs/1705.07750

公式実装 (tensorflow): https://github.com/deepmind/kinetics-i3d

タイトル前半は「行動認識はどこへ向かう?」

ざっくり

  • 新モデルTwo-Stream Inflated 3D ConvNet (I3D) を提案して大規模行動認識データセットで学習させた。モデルも公開。

問題意識・背景

  • 画像分類やNLPでは大規模データセットでpretrainしたモデルが他のタスクで非常に性能が良いことが分かっている。 しかし行動認識の分野では大きなデータセットでのpretrainが有効かどうかはわかっていなかった。

  • 行動認識はデータセットが小規模な物しかなく、タスク内での性能改善もサチっていた。

  • (同時にDeepMindがKineticsという大規模データセット発表)

提案した構造 (I3D)

  • Inception-V1 の2D convolution を3D convolutionに拡張
  • pretrainされた重みはフレーム方向には単純にコピー
  • optical flow と RGBそれぞれ独立に推論を行って予測をaverage

比較に用いた構造

既存手法が著者らの軸できれいに整理されている。

  • videoをどうとらえるか
    • 2D or 3D kernel
    • 2D kernelなら、frame間の時間の流れをどう学習させるか (扱い方例:LSTM, RNN)
    • RGB or Optical Flow

比較対象の既存手法

CNN + LSTM

フレームごとにCNNをかけて時間方向の情報はpoolingなどとLSTMで扱う。

  • 画像分類でつかわれてるpretrainモデルを活用できる
  • 問題点としては、同じ画像でも異なる状況を区別できない。例えば、ドアを上げる前と閉めた後。

    3D CNN

    動画を扱う上では最も直観的な手法。時間方向にも畳み込む

  • 問題点:パラメータ数が激増するため、小さいモデルでscratchから学習するモデルしか作られてこなかった

    Two-Stream (optical flow + CNN)

    Optical flow と RGBの情報を二つとも使って推論を行う。

  • LSTMはhigh levelの特徴したとらえてない問題を解決

比較実験

  • 上記の構造を、まずKineticsでpretrainして、既存の二つのデータセットそれぞれにfine-tuneした結果、性能は向上⇒大規模データによるpretrainは既存構造には常に有効
  • それぞれのデータセットを独立に用いて、タスクを解いた結果、
    • I3Dが常に最良の性能
    • 小さいデータセットの場合はOptical Flowを使ったときの方が、RGBを使ったときよりも性能が良いことがあった
    • 構造の性能ランキングはデータセットを変えても変わらなかった。
  • ImageNetでpretrainした重みを使う/使わないで比較した結果、⇒pretrainした重みを用いる効果はある。

途中のconvolutionのフィルターに注目。

I3Dだけがframe方向にリッチな特徴を抽出している。

ちゃんと読んだからわかったこと

行動認識版のImageNet/BERT、で終わってもいいですが、「実際にどうやって事前学習の有効性をしめしたか」は大事で、丁寧に比較されていました。

これまでの手法も当然たくさんあり、その中でもしっかりと提案手法が一番いいと主張できているのが影響が大きい要因だと思いました。

あとがき

行動認識は初めて読みました。 行動認識はPose estimationの結果を分類したりするのが一般的手法かと勝手に妄想してましたが、画像のまま扱ってしまうんですね。

間違いあったらお手数ですが指摘よろしくお願いいたします。

参考

論文:https://arxiv.org/abs/1705.07750

DeNA大西さんによる行動認識サーベイhttps://www.slideshare.net/OhnishiKatsunori/action-recognition