朝起きたらこんなツイートが流れてきてました。
【PIFu】
— Always3D (@Always3D) 2020年3月6日
1枚の画像から人物の3Dオブジェクトを生成する深層学習コードがMITライセンスで公開
導入からテストまでのやり方も簡単にまとめています
すごい時代になったなぁ...https://t.co/PPB2trU8sF#CG #2DCG #3DCG pic.twitter.com/7DLBN01Dp6
面白そうです。
どんなものか触ってみました。
※ツイート元の記事は動作環境がWindowsですが、私の環境はMacでコマンドラインの操作余裕だぜって人向けです
PIFuのダウンロード
PIFuはGitHubで公開されています。
ターミナルを起動して、gitコマンドでてきとうなフォルダにcloneします。
$ git clone https://github.com/shunsukesaito/PIFu.git
gitコマンドが使えない人は、緑色のClone or downloadボタンからDownload ZIPでも問題ないです。
ZIPを解凍して、てきとうなフォルダに置いてください。
学習済みデータのダウンロード
ダウンロードしたPIFuの中にscriptsフォルダがあり、その中にdownload_trained_model.sh
があります。
$ cd PIFu $ sh ./scripts/download_trained_model.sh
私のMac(macOS Catalina 10.15.3)では、ここで以下のエラーが出ました。
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
諦めないで調べてみると、opensslが悪さをしている様子。
opensslのバージョンを1.0.xにするといいらしいので、以下のコマンドを打ったら直りました。
$ brew switch openssl 1.0.2r Cleaning /usr/local/Cellar/openssl/1.0.2r Opt link created for /usr/local/Cellar/openssl/1.0.2r
ライブラリのインストール
PIFuを動かすためのライブラリですが、requirements.txt
が置いてあるのでpipでインストールします。
$ pip install -r requirements.txt
私の環境はここまでのセットアップで問題なく動きました。
デモを動かす
sampe_imagesフォルダにデモ用の画像が入っています。
人の全身(Aポーズ?)が正面から写った画像ryota.png
とそのマスク画像ryota_mask.png
がセットになっているようです。
GitHubのREADME.md
を読むと、サンプルに合わせて元画像を作った方が精度が上がるぜ!的なことが書いてあります。
あとは、背景の除去にはremove.bgが使えるよ!とも書いてある。
何はともあれ、一度動かしてみます。
scriptsフォルダ内のtest.sh
を叩けばいいらしい。
$ sh ./scripts/test.sh
実行が終わると、resultsフォルダにOBJファイルが生成されています。
なるほど。
全体的に解像度は低め。
気になった点
顔
解像度が低くてぼやけちゃってるので怖い・・・。
あと、顎が妙に突き出している。この辺り、2Dから生成している弊害に見える。
手・腕
指は取れてないです。
腕の側面にしわみたいなのが付いてるのはなんなんだろう?
衣服
パーカーのフードは正面から見えていないので消失。まあ、致し方なし。
裾のあたりがちょっと破綻してる。
自分でやってみる
MacのPhoto Boothを使って自撮りしました。
マウスを手に持って撮影ボタンをクリックすれば、ぼっちでも撮れるんだぞ!!
先ほどのremove.bgにアップロードして背景を除去。
マスク画像はGimpとか使えば作れます(色域選択 > 選択範囲を反転 > 白で塗りつぶす)
はい、できました!!休日スタイルの私です。
ジャージだし、髪ボサボサだけど、ヨシ!
ちなみに、頭からなんか生えてる…
右膝のあたりもおかしいですね。
まとめ
簡単に使えて面白い!けど、精度がまだまだですね。
いい暇つぶしにはなりました。