動画対応人体のポーズ推論ライブラリVINEの推論環境構築時のメモとベンチマークテストです
環境
python環境 miniconda
Ubuntu 18.04
GPU GTX1080Ti&RadeonⅦ
GPUプラットフォーム CUDA10.2&ROCm3.0
CUDAでの環境構築
minicondaでpython環境構築をしました
なぜかpython3.7以上を推奨されてるはずなのに3.7では動かず3.6で安定して動いた.
公式のドキュメントどおりに環境構築するとエラーが出て動かなかったので当方の環境ではたいへん苦しんだ、colabでは動いていたので環境依存の可能性が高い.
$ git clone https://github.com/mkocabas/VIBE.git
$ cd ./VIBE
$ conda create -n vive python=3.6
pip install -r requirements.txt
pip install twine
bash prepare_data.sh
install_pip.shやinstall_conda.shが一応用意されているが今回はブラックボックスを避けるため使用しない
マニュアルとは違うがこれで安定した.
実行ベンチマーク
https://github.com/mkocabas/VIBE/blob/master/doc/demo.md#runtime-performance
参考は以上
GTX1080Ti
python demo.py --vid_file sample_video.mp4 --output_folder output/ --sideview
Tracking FPS 25.27
VIBE FPS: 32.77
Total time spent: 29.52 seconds (including model loading time).
Total FPS (including model loading time): 10.16.
ROCm(AMD Radeon7)でのテスト
Docker(rocm pytorchを使用してテストしました)
本来ならDockerfileがスマートですがコンテナ内に入って試行錯誤した時のシェルを今回は貼ります
Docker run
ハマリポイントがここらへんにある
sudo docker run --name pytroch_rocm -it --privileged --rm --device=/dev/kfd --device=/dev/dri --group-add video rocm/pytorch:rocm3.0_ubuntu16.04_py3.6_pytorch
詳細は参考URLを見ていただきたいですが--shm-size
で共有メモリサイズを拡張しないとうまく動きません.
なので正しくは以下のコマンドでdocker runさせます
sudo docker run --name pytroch_rocm -it --shm-size=16G --privileged --rm --device=/dev/kfd --device=/dev/dri --group-add video rocm/pytorch:rocm3.0_ubuntu16.04_py3.6_pytorch
rocm3.0との相性の悪さも言われているのでROCm2.10を使う場合は
sudo docker run --name pytroch_rocm -it --shm-size=16G --privileged --rm --device=/dev/kfd --device=/dev/dri --group-add video rocm/pytorch:rocm2.10_ubuntu16.04_py3.6_pytorch
コンテナ内での環境構築
$ git clone https://github.com/mkocabas/VIBE.git
$ cd VIBE
$ pip3 install -r ./requirements.txt
$ pip3 install twine
$ apt install ffmpeg
$ apt-get install libglfw3-dev libgles2-mesa-dev
$ bash prepare_data.sh
実行
python3.6 demo.py --vid_file sample_video.mp4 --output_folder output/ --sideview
ベンチマーク結果とエラー
Tracking FPS 1.70
途中でエラーが発生してしまった
Running VIBE on each tracklet...
0%| | 0/1 [00:00<?, ?it/s]Traceback (most recent call last):
File "demo.py", line 383, in <module>
main(args)
File "demo.py", line 160, in main
output = model(batch)[-1]
File "/root/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 539, in __call__
result = self.forward(*input, **kwargs)
File "/root/VIBE/lib/models/vibe.py", line 267, in forward
smpl_output = self.regressor(feature, J_regressor=J_regressor)
File "/root/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 539, in __call__
result = self.forward(*input, **kwargs)
File "/root/VIBE/lib/models/spin.py", line 376, in forward
pose2rot=False
File "/root/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 539, in __call__
result = self.forward(*input, **kwargs)
File "/root/VIBE/lib/models/spin.py", line 485, in forward
smpl_output = super(SMPL, self).forward(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/smplx/body_models.py", line 376, in forward
self.lbs_weights, pose2rot=pose2rot, dtype=self.dtype)
File "/usr/local/lib/python3.6/dist-packages/smplx/lbs.py", line 205, in lbs
J_transformed, A = batch_rigid_transform(rot_mats, J, parents, dtype=dtype)
File "/usr/local/lib/python3.6/dist-packages/smplx/lbs.py", line 347, in batch_rigid_transform
rel_joints.view(-1, 3, 1)).view(-1, joints.shape[1], 4, 4)
RuntimeError: view size is not compatible with input tensor's size and stride (at least one dimension spans across two contiguous subspaces). Use .reshape(...) instead.
0%|
参考
https://stackoverflow.com/questions/56297064/how-to-fix-importerror-unable-to-load-egl-library-22-the-specified-module-c
https://qiita.com/gorogoroyasu/items/e71dd3c076af145c9b44