📘

VideoPose3Dをサクッと動かす

2022/11/09に公開

3Dの姿勢推定が簡単にできるライブラリを探していたのですが、任意の動画を対象としたチュートリアルが充実したものが少なかったです。

VideoPose3Dは最新ではないですが、そうした中でも簡単に任意の画像で3Dの姿勢推定ができるいいライブラリだったので備忘録も兼ねて手順をまとめます。

公式な手順は↓のINFERENCE.md内にあります。
https://github.com/facebookresearch/VideoPose3D

実行環境

  • Amazon EC2 p3.2xlarge
  • Ubuntu20.04

環境構築

  1. Condaでも何でもいいので仮想環境を作ります。
  2. ffmpegとpytorchをインストールする。
# ffmpegを入れる
sudo apt-get update
sudo apt-get -y install ffmpeg

# Pytorchを入れる(1.8以降)
pip install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url [https://download.pytorch.org/whl/lts/1.8/cu111](https://download.pytorch.org/whl/lts/1.8/cu111)
  1. 2Dのキーポイント予測のためにdetectron2をインストールする。
python -m pip install 'git+https://github.com/facebookresearch/detectron2.git'
  1. VideoPose3Dをcloneする。
git clone https://github.com/facebookresearch/VideoPose3D.git

3D姿勢推定の実行

  1. 任意のINPUT_DIR内に動画(一つでも複数でも可)を入れて、以下を実行し、detectron2で2Dキーポイントを予測する。
# VideoPose3D内のinferenceディレクトリ内で以下を実行
# INPUT_DIRとOUTPUT_DIRの名前は自由です
python infer_video_d2.py \
    --cfg COCO-Keypoints/keypoint_rcnn_R_101_FPN_3x.yaml \
    --output-dir OUTPUT_DIR_PATH \
    --image-ext mp4 \
    INPUT_DIR_PATH
  1. 以下を実行し、予測したキーポイントの出力からデータセットを作成する。
# VideoPose3D内のdataディレクトリ内で以下を実行
# myvideosの名前は自由です
python prepare_data_2d_custom.py -i OUTPUT_DIR_PATH -o myvideos
  1. 動画のレンダリングと座標のエクスポート
# リポジトリのルートディレクトリにあるrun.pyを実行
# 入出力の引数は適宜変えてください。
python run.py -d custom -k myvideos -arc 3,3,3,3,3 -c checkpoint --evaluate pretrained_h36m_detectron_coco.bin --render --viz-subject INPUT_FILENAME --viz-action custom --viz-camera 0 --viz-video INPUT_DIR_PATH/INPUT_FILENAME --viz-output OUTPUT_FILENAME --viz-size 6

実行結果

↓からサンプル動画を拝借して実行。
https://github.com/Vegetebird/StridedTransformer-Pose3D/tree/main/demo/video

3MBに収まるように解像度を下げて再生時間も短くしています。

sample.gif

最後に

他にも任意の動画で簡単に3D姿勢推定ができるライブラリをご存じでしたらコメントなどいただけると嬉しいです。

Discussion