機械学習による3Dポーズ推定「hmr2.0」をWindowsから使ってみる
以前に「
機械学習によるポーズ推定でモデル人形を制作する」という内容でhmrを扱った記事を紹介しました。このhmrをPython3とTensorflow2向けに移植したプロジェクトが「
hmr2.0」としてGithubで公開されていたので、さっそく試してみることにしました。オリジナルのhmrは開発環境の古さもあってLinuxからしかプログラムを実行することができませんでしたが、こちらではWindowsネイティブの環境でも実行できるようになっています。
まずは開発環境を構築します。パソコンにPython3.8(2020年12月時点ではTensorflowがPython3.9に対応していないため)をインストールしたら、PowerShellを開いて仮想環境を作成します。
mkdir hmr20
cd hmr20
python -m venv .venv
"Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force"でPowerShellからのスクリプト実行を許可したうえで、以下のコマンドを実行すると、"(.venv)"という文字列が追加され、仮想環境というサンドボックスでPythonが動作するようになります。
.venv\Scripts\activate.ps1
仮想環境を抜けるには以下のコマンドを実行します。
deactivate
「
hmr2.0」からソースコード一式をダウンロードし、この画像のように仮想環境を作成したフォルダーにコピーしたら、「requirements.txt」をエディタで開き、一部のコメントを外します。ちなみに、tensorflow-gpuのコメントを外すと、GPUを利用したバージョンがインストールされます。
matplotlib
numpy
scipy
opencv-python
#tensorflow
tensorflow-gpu
tqdm
## uncomment the following dependencies for generating tfrecords
## or using notebooks
#pycocotools
trimesh
networkx
pyglet
「requirements.txt」を実行して、機械学習に必要な外部ツールのインストールを開始します。
pip install -U pip
pip install -r requirements.txt
Windows特有の問題として、Numpy 1.19.4では"RuntimeError: The current Numpy installation fails to pass a sanity check due to a bug in the windows runtime."とエラーが出て、スクリプトが実行できないことがあるため、この問題が発生するようであれば、以下のコマンドでNumpyをダウングレードします。
pip install numpy==1.19.3」
次に学習済みモデルを導入します。「mkdir "logs/paired(joints)", "logs/unpaired"」でフォルダーを作成したら、プロジェクトサイトにあるリンクから「Base Model (LSP)」を保存し、アーカイブ内のファイルを先ほど作成したフォルダーにコピーします。
「(LSP + toes)」の学習モデルを使用するのであれば、「models」フォルダーに「keypoint_annotation_tool/regressors」にあるスクリプトをコピーしておく必要があります。
これで環境の構築が完了しました。以下のコマンドを実行して、デモンストレーションプログラムが動作するかを確認してみましょう。
cd src/visualise/
#19個のジョイントから構成されるポーズを推定する例
python demo.py --image=coco1.png --model=base_model --setting="paired(joints)" --joint_type=cocoplus --init_toes=false
#つま先を含めた21個のジョイントから構成されるポーズを推定する例
python demo.py --image=coco1.png --model=final_model --setting="paired(joints)" --joint_type=custom --init_toes=true
2020/12/28