PIFuで1枚の画像から3Dモデルを作ってみた!


目的

PIFuで1枚の画像から3Dモデルを作成し、その精度を確認する。

使用環境

MacbookPro(13-inch 2017)
Big Sur(ver11.1)
python3.9.1

PIFuとは

一枚もしくは複数枚の画像から人物の3Dモデルを生成するための深層学習の手法
その3次元形状やテクスチャを推定し、写真に写っていない裏側なども推定して生成する。

環境構築

こちらからgitclone

git clone https://github.com/shunsukesaito/PIFu.git

学習済みデータのインストール

cd scripts/PIFu
sh ./scripts/download_trained_model.sh

依存関係のあるパッケージをインストール

pip install -r requirements.txt

※reauirements.txtはしばらく更新されていないようだったので、最新版に変更

decorator
imageio
kiwisolver
matplotlib
networkx
numpy
opencv-python
pathlib
Pillow
PyOpenGL
pyparsing
python-dateutil
PyWavelets
scikit-image
scipy
Shapely
six
torch
torchvision
tqdm
trimesh
xxhash

shapelyのインストールのために、Geosが必要であったためエラー発生

brew install geosで解決

実行

sh ./scripts/test.sh

sampe_imagesフォルダに入っている画像を元に3Dモデルを生成されます。

実行後

resultsフォルダにOBJファイルが生成されています。

フードは消えていますが、背中も生成できてる!(髪の毛の癖が強いですねw)

自分で生成してみる

sample_imageフォルダに、背景除去した写真と、マスク画像を入れてておく。
そうすれば、それらを元に3Dモデルを生成してくれる。

ちなみに、背景除去は、Removingで簡単に作れた。
マスク画像は、GIMPからDLし、
色域選択>画像を覆うようにドラッグ>背景色を白に変更>背景色(白)で塗りつぶす。で簡単に作れた。

あとがき

猫さまで3Dモデルを生成した際に、写真の背面にあたる部分に目が生成されたりと、まだ精度は甘いよう。
(人であれば背面に目は生成されなさそう)

コードを読みながら処理や、精度を上げるための学習方法などを学んでいこうと思う。