はじめに
姿勢推定の中でも、最新の3次元の骨格座標を推定する。
特別なカメラ、GPUは必要とせず、オープンソースであるMotionBertとAlphaPoseを利用して行う。
3D姿勢推定とは
流れ
- AlphaPoseを利用して、動画から2次元の骨格座標を推定する。
- MotionBertを利用して、上記の2次元の骨格座標から3次元の骨格座標を推定する。
AlphaPoseによる2次元の骨格推定
AlphaPoseとは
MotionBertで3D姿勢推定するためには、まず決められたフォーマットの2次元の骨格座標が必要。
その骨格データを取得するために、AlphaPoseを使用する。
AlphaPoseは、公式にMotionBertから利用を推奨されており、
同様の機能のOpenPose (CMU-Pose)より高い推定精度を持ち、
NVIDIA製のGPUや特殊なカメラを必須としない。
AlphaPoseの実装
下記の記事を参考にしてAlphaPoseをインストール。
セットアップが済んだら、下記のモデルを使用して、骨格推定する。
下記の設定ファイルとモデルファイルがクローンしたディレクトリに存在しない場合は、上記のサイトからダウンロードして所定のディレクトリに配置してから、実行する。
・256x192_res50_lr1e-3_1x.yaml
・halpe26_fast_res50_256x192.pth
実行結果として、
2次元の骨格座標をJSONファイル形式で得る。
詰まった点
・ライブラリのバージョンが最新でないものが多いので、仮想環境のanacondaで環境構築するのがおすすめ。
・Windowsの場合は、下記の記事に注意。
・AlphaPose/trackers/PoseFlow/requirements.txtで指定されているバージョンでnumpy等のライブラリをインストールしていたが、それだと動作せず、githubの「Issues」に投稿されていたバージョンに変更してうまくいった。
MotionBertによる3次元の骨格推定
MotionBertとは
単眼カメラによる3D姿勢推定で最も高い精度を出しているツールのひとつ。
NVIDIA製のGPUや特殊なカメラを必須としない。
MotionBertの実装
下記の記事を参考にして、MotionBertをインストール。
windowsの場合、
下記の記事の通りに、コードを修正する必要がある。
下記の記事を下記の記事を参考にして、MotionBertを実行。
実行結果として、
3次元の骨格座標データを得る。
詰まった点
・GPUのCUDAはなくても、動作するので、インストール時にエラーが発生した場合は、下記の通り、変更してみる。
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia
変更後
conda install pytorch torchvision torchaudio cpuonly -c pytorch
・python infer_wild.pyの実行で、
windowsの仮想メモリが不足してエラーが発生。増やしてみても解決しなかった。
infer_wild.pyを下記の通り編集して、処理の並列化を無効にすることで解決した。
'num_workers': 1,#もともとは8
最後に
初めての投稿なので、説明不足の部分があると思います。
不明点、間違いなどがございましたら、コメントからご指摘いただけるとありがたいです。
この3D姿勢推定の技術を利用して、歩き方から個人の識別の研究に取り組んでいます。
その記事も今後投稿しますので、よければお待ちください。