PIFuの使い方

1枚の人物写真から3Dモデル化するPIFu

使ってみたい、と思ったもののPythonわからず苦戦。

この記事はそんなPython初心者な私が使えるようになるまでの全行程の備忘録。
(Git BashのインストールやPython環境構築も含む)

PiFuのGitHubに記載されている手順をより詳しく追ったものです。

追記 PIFuHD

より高解像度なモデルが生成出来るPIFuHDがリリースされています。
こちらの使用方法についてはRehabC様のこちらの動画が分かりやすかったです。

Miniconda インストール

公式サイトはこちら

そもそもMinicondaとは?

Anacondaとは
・Python本体
・よく使うパッケージ詰め合わせセット
・パッケージ管理ツール
・複数環境管理・切り替えツール
の複合みたいなもの。

Minicondaはこのうちパッケージ詰め合わせセットを除いたもの。

Pythonが既にインストール済みなら前もってアンインストールしておく。

引用元

・AnacondaをPATH環境変数に追加する
推奨されません。代わりに、Windowsの[スタート]メニューでAnacondaを開き、[Anaconda(64-bit)]を選択します。この「PATHに追加」オプションにより、以前にインストールされたソフトウェアの前にAnacondaが検出されますが、Anacondaのアンインストールと再インストールが必要になる問題が発生する場合があります。

・AnacondaをデフォルトのPython 3.7として登録します
これにより、Visual Studio PyCharm、Wing IDE、PyDev、MSIバイナリパッケージ用のPythonツールなどの他のプログラムが、システム上のプライマリPython 3.7としてAnacondaを自動的に検出できます。

condaのPath追加

Windows+Rからrundll32 sysdm.cpl,EditEnvironmentVariables入力で環境変数設定画面を出す。

参考:
Windows 10 で PATH 環境変数を設定する方法
ANACONDAのPATHをWINDOWSで通す話

この時環境変数の順番には注意。
%USERPROFILE%\AppData\Local\Microsoft\WindowsAppsよりも上に置いておく。
c\Users\Owner\AppData\Local\Microsoft\WindowsApps\python: Permission deniedエラーが出てしまうため。
※参考:【備忘録】Pythonコマンドが認識してくれなくなった(Windows10のアップデートが関係?)

Git Bash インストール

公式サイト

そもそもGit Bashとは?

Bashとは命令を画面に打ち込みコンピュータが命令に従いファイルの操作やファイルの編集、削除といった操作ができるソフトウェア

Git BashとはGitの機能が搭載されたBash

GitBashはどこで手に入れるのかですがGit for Windowsをインストールすることで自動的にインストールされます

引用元


チェックが入っていることを確認する。

設定項目は色々あるがGitBashがインストールされれば問題ないのでそれ以外の設定は任意でOK。

Git Bashで環境構築

  1. 起動
    Git\bin\bash.exe
  2. eval “$(conda shell.bash hook)”
    初期化スクリプト。これをしないと次の手順の`conda activate`に失敗する。
    参考: Execute conda in subshell script
  3. conda activate my_env
    仮想環境my_envをアクティブ化。
  4. a) 自動インストールの場合
    conda env create -f “D:\GoogleDrive\Program Files\PIFu\environment.yml”
    詳細はこちら
    PIFu用のenvironment.ymlはPIFuのディレクトリにある。
    ymlを指定して環境を作成する。
    b) マニュアルインストールの場合
    Python用の仮想環境pifuを作成する。
    conda create -name pifu python ※仮想環境pifuをアクティブ化する。
    conda activate pifu ※各種インストールする。
    conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
    conda install pillow
    conda install scikit-image
    conda install tqdm
    conda install -c menpo opencv

※condaコマンドメモ

conda info --envs
仮想環境一覧を表示。

conda create -n pifu python
pifuという名前のPythonの仮想環境を作成。

conda remove -n pifu --all
pifuという名前の仮想環境を削除。

conda activate pifu
pifu環境をアクティブ化。

wget.exeの用意

複数ファイルをまとめてダウンロードするもの?
※参考:HTTP/HTTPSでまとめてデータを取得するwgetコマンドとは?

公式サイトから入手

Git\mingw64\binに配置する。

学習済みデータをDLする

Git BashにてPIFuのディレクトリへ移動する。
cd "D:\GoogleDrive\Program Files\PIFu"
※パスに半角スペースがある場合はパス全体を”で囲っておく

学習済みデータをDLする。
sh ./scripts/download_trained_model.sh

3Dモデル化

以上で準備完了です。
以下のコマンドを実行するとモデルが生成されます。

sh ./scripts/test.sh

3Dモデルの確認

テクスチャは生成されず、色は頂点カラーで表現されているので頂点カラー表示が可能なMeshLab等で確認します。

環境開発完了後のフロー

  1. Git Bashを起動
  2. 初期化
    eval "$(conda shell.bash hook)"
  3. 仮想環境 pifu をアクティブ化
    conda activate pifu
  4. PIFuディレクトリへ移動
    cd "D:/GoogleDrive/Program Files/PIFu
  5. スクリプト実行
    sh ./scripts/test.sh

その後の処理

出来上がったモデルは色はついてますが頂点カラーの為そのままでは活用が難しく、頂点カラーをテクスチャ化する必要があります。

その手順についてはmiyamoさんのこちらの資料でとてもわかりやすく解説されています!
一枚の人物画像から3Dモデルを生成する「PIFu」

完成モデル

以上の手順で出来上がったモデルをWebAR化してみました。