VideoPose3D実験メモ

動画からMMDのモーションを自動生成するために使える技術を探して、VideoPose3D を試した。 VideoPose3D は Facebook Research の Dario Pavllo らが開発した 3Dポーズ推定(3D human pose estimation)のソフトウェア。論文は CVPR 2019 で発表された。

VideoPose3Dの特徴

時間方向の畳み込み(temporal convolutions)を適用することによって、3Dポーズ推定の精度を高めた。 また、動画から人の動きをトレースした際の振動が少なく、時間方向に滑らかな推定結果が得られる。 GitHubに貼られた GIF動画デモのページ の "Single-image model vs temporal model" のあたりに特徴が表れている。

欠点・制約

関節の相対的な位置しか推定できないので、センターの移動は別の手段でトレースする必要がある。

ソースコード

https://github.com/facebookresearch/VideoPose3D

論文

https://arxiv.org/abs/1811.11742

ツールキット

PyTorch を使用。 また2D keypointの推定には Detectron2 を使う。

ライセンス

VideoPose3D本体はCC BY-NC。 ただし、使用している Human3.6M データセットより厳格なライセンスなので注意が必要。

インストール

Quick start に従ってインストールする。

Detectron2のインストールは、Linuxなら Install Pre-Built Detectron2 に従ってpipを使うのが簡単。

なお、Dataset setup には Human3.6M データセットを用意するように書いてあるが、 Inference in the wild に従って試すだけなら Human3.6M データセットは無くても動くようだ。

実行

Inference in the wild に従って、2D keypointsの推定(Detectron2を使用)、 custom dataset (data/data_2d_custom_myvideos.npz)の作成、推定結果の描画(rendering a custom video)を行った。

$ cd inference/
$ python infer_video_d2.py --cfg COCO-Keypoints/keypoint_rcnn_R_101_FPN_3x.yaml --output-dir ~/tmp/vp3d --image-ext mp4 ~/work/test_movie/OutdoorTrial-185818419-1.mp4
$ cd ../data
$ python prepare_data_2d_custom.py -i ~/tmp/vp3d -o myvideos
$ cd ..
$ python run.py -d custom -k myvideos -arc 3,3,3,3,3 -c checkpoint --evaluate pretrained_h36m_detectron_coco.bin --render --viz-subject OutdoorTrial-185818419-1.mp4 --viz-action custom --viz-camera 0 --viz-video ~/work/test_movie/OutdoorTrial-185818419-1.mp4 --viz-output ~/tmp/OutdoorTrial-185818419-1-vp3d.mp4 --viz-size 6

2D keypointsの推定が一番重くて GeForce GTX 1050 Ti で約 3 fps、推定結果の描画はCore i7-8700(3.2GHz)で約 10 fps

参考:試したときのツイート