動画を使った深層学習
ミシガン大学の公開講義にとても良いクラスがあったので翻訳andまとめておきます。
タスク
動画は画像を時系列データとした(T x 3 x H x W)のテンサーで扱う。(3 x T x H x W)の時もある。
画像系のタスクは主に
- Classification (whole image)
- Semantic Segmentation (Pixelwise Classification)
- Object Detection (Find bounding box)
- Instance Segmentation (Predict shape)
があり、動画データはこれを連続的に行う。
1. Video Classification
- 動画をクラス分類するタスク、画像と違い物体が何か当てる以外にも一連の動きから人間の動作を分類したりする。

- 動画の全般的な問題としてデータが 大きすぎる。無圧縮だと1エントリー1 byteとしてHD動画1分で10GBくらい。なのでFPSと解像度を下げた動画の一部分だけを学習させる。モデルの評価は動画の一部をオーバーサンプリングして平均精度を取ることで動画全体への精度がわかる。

1-1. Single Frame CNN
各フレームを別々の画像として独立したCNNで分類する手法。長めの動画を学習させて正答率をフレーム数で平均した精度を向上させていく。画像同士の関係を考慮しないので一見するとダメなモデルっぽいが実は普通に実用レベルで性能が良いらしい。動画分類をする時はこれをベースにやるといい。

1-2. Late Fusion
上のモデルをMLPに接続したモデル。フレーム毎の特徴量を一つに統合するので交差エントロピーで学習できてフレーム同士の関係も学習できるがFC層で過学習を起こしやすい。対策として特徴量の統合時にT, H, WをPoolingしてD次元データに落とし込む。これらの手法もシンプルなのでまず試したいモデ ル。

しかし特徴量を統合するのが遅いので、動画の小さい動きを学習できない。例えば、人が歩いてるか立っているかは足の小さな動きで判断するが、FC層に来る前にこれらの小さい特徴量は失われやすい。
1-3. Early Fusion
先に各フレームの特徴量を抽出するのではなく、(3 x T x H x W)の動画を(3T x H x W)になるように畳み込み(特徴量の統合)してから、3次元テンサーとしてから2DCNNで学習するモデル。ピクセルの細かい変化も2DCNNが学習できるが、時系列データを一回の畳み込みで処理するのでそこら辺の特徴量は上手く表現されない。

1-3. Slow Fusion
Early Fusionでは縦横での畳み込みしか行わなず時系列の情報は失われていたが、縦横に加え時間軸も加えた3次元で畳み込みを行い、時間と空間の特徴を徐々に統合していく手法。