3D CNNによる人物行動認識の動向
原 健翔
0
産業技術総合研究所 コンピュータビジョン研究グループ
人物行動認識
1
入力:動画 → 出力:行動ラベルという課題
*K. Soomo+, “UCF101: A Dataset of 101 Human Actions Classes From Videos in The Wild”, CRCV-TR-12-01, 2012.
*
代表的な大規模行動認識データセット | Trimmed
2
切り出し済み or 開始終了ラベル込み動画
 HMDB-51: 7000動画 (Movie, YouTube),51クラス
 UCF-101: 13000動画 (YouTube),101クラス
 ActivityNet: 28000動画 (YouTube),200クラス
 Kinetics: 30万動画 (YouTube),400クラス
大規模化がどんどん進んでいる
代表的な大規模行動認識データセット | Untrimmed
3
動画単位ラベル&対象以外も含む
 Sports-1M: 100万動画 (YouTube),487クラス
 Youtube-8M (Video Classification Dataset):
800万動画 (YouTube),4800クラス
規模は圧倒的なものの動画単位ラベルのみでノイズが多い
CNN以前の行動認識手法
4
Dense Trajectories & Fisher Vectorが主流
HOG, HOF, MBHによる局所特徴をFisher Vectorでエンコード*
*H. Wang+, “Dense Trajectories and Motion Boundary Descriptors for Action Recognition”, IJCV, 2013.
CNNベースの行動認識
5
2D CNN
 時空間特徴抽出のため
RGB & Optical Flowの
Two-streamが主流
3D CNN
 空間 2D + 時間 1Dの
3D空間で畳み込み
*D. Tran+, “Learning Spatiotemporal Features with 3D Convolutional Networks”, ICCV, 2015.
*
*
3D CNNによる行動認識 | C3D*
6
大規模動画データ (Sports-1M) を用いて良い性能を達成
著者らによる学習済みモデルの公開もあり3D CNNの標準となる
*D. Tran+, “Learning Spatiotemporal Features with 3D Convolutional Networks”, ICCV, 2015.
Conv: 3x3x3 kernels with 1 stride
Pool: 2x2x2 (Pool1: 1x2x2)
実験的にこれがベストと確認
Input: 3 channels x 16 frames x 112 pixels x 112 pixels
3D CNNによる行動認識 | Long-term Convolution*
7
時間長変化の影響を検討
 C3Dの16フレーム入力を変更
 長くすると精度は向上
 Optical Flow入力や
RGB&Flow入力の有効性も発見
*G. Varol+, “Long-term Temporal Convolutions for Action Recognition”, TPAMI, 2017.
この辺りまでの3D CNN
8
state-of-the-artよりも低精度
 ImageNetでpretrainingした
Two-stream 2D CNNベースがstate-of-the-art
 Two-stream 3D CNNでも精度は一歩劣る
 データ数不足が一番の原因?
 ネットワーク構造も10層のシンプルなものに
とどまっている
Kineticsデータセット*
9
Trimmed Actionで最大のデータセット
切り出された行動のインスタンス数では圧倒的!
*W. Kay+, “The Kinetics Human Action Video Dataset”, arXiv, 2017.
Kineticsでの学習*
10
ImageNet Pretrained 2D CNNとの差が激減
大量のデータにより3D CNNも学習可能に
*W. Kay+, “The Kinetics Human Action Video Dataset”, arXiv, 2017.
top-1/top-5
Inception-v1ベースの3D CNN*
11
22層の3D CNN
 2D Kernelの重みを
3DにコピーするInflatedにより
ImageNetでもPretraining
 入力は3x64x224x224
*J. Carreira+, “Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset”, CVPR, 2017.
Inception-v1ベースの3D CNN*
12
圧倒的な精度を達成
 大規模(かつきれいな)データ
の利用&Deep 3D CNNの
有効性が示された
*J. Carreira+, “Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset”, CVPR, 2017.
ResNetベースの3D CNN*
13
画像認識で有効なResNetを動画像に応用
 ResNetはInceptionよりも高精度
 Kineticsデータセットを利用することで
3D ResNetを学習可能か?
*K. Hara+, “Learning Spatio-Temporal Features with 3D Residual Networks for Action Recognition”, ICCV WS, 2017.
学習時の設定
14
 入力:3 channels x 16 frames x 112 pixels x 112 pixels
 最適化手法:SGD with momentum (0.9)
 Learning Rate:0.1
 以後Validation Lossが収束したら1/10
 Data Augumentation
 50%でHorizontal Flip
 4 corner, 1 centerからランダム選択してSpatial Crop
 動画中から16フレームをランダム抽出
学習に利用したマシン
15
 NVIDIA TITAN Xを4枚
 Torchによる実装
 4週間かけて学習
 PyTorch実装で再学習したら1, 2週間で学習できた
Kineticsでの学習結果
16
Pretrainingなしで過学習せずに3D ResNet-34を学習可能
Kineticsでの認識精度
17
より深いResNetの方がC3Dよりも高い認識精度
3D ResNet-34とI3D (Inception-v1)
18
I3Dの方が高い精度を実現
 入力サイズの違い
 ResNet: 3x16x112x112, I3D: 3x64x224x224
 高解像かつ時間長が長い方が精度は高くなる
 バッチサイズの違い
 Batch Normalization利用時にはバッチサイズは重要
 I3Dの論文では64GPUでバッチサイズを大きく設定
3D ResNetの学習コードと学習済みモデル
19
GitHubで公開中!
 Torch版https://github.com/kenshohara/3D-ResNets と
PyTorch版https://github.com/kenshohara/3D-ResNets-PyTorch
 ActivityNetとKineticsデータセットでの
学習・テストが可能
 3D ResNet-34などの学習済みモデルも公開
 その他のモデルも今後公開予定
学習済みモデルを利用した動画認識用のコード
20
こちらもGitHubで公開中!
 Torch版https://github.com/kenshohara/video-classification-3d-cnn と
PyTorch版https://github.com/kenshohara/video-classification-3d-cnn-pytorch
 任意の動画に対してクラス識別(Kineticsの400クラス),
特徴抽出(Global Average Pooling後の400次元)が可能
 実行結果の描画ツールも公開
ResNet-34による認識結果例
21
まとめ
22
3D CNNによる行動認識が盛り上がり中
 大規模なKineticsデータセットにより
深いモデルも学習可能になってきた
 今後この分野の研究が加速していくことが予測される

3D CNNによる人物行動認識の動向