機械学習による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