AI・機械学習 python 技術関連

[PRNet]画像から3Dモデルを生成できる3D Face Reconstructionを試してみる

投稿日:

概要

作成したもの

  • PRNetを使って芸能人の顔画像から3Dモデルを作成

使用した技術・ライブラリ

  • Position Map Regression Network

動機

VRchatのアバターをblenderで作成しようと思ったのがきっかけで、AIを使って画像から3Dモデルを自動で作成できたら楽だなーということで3D Face Reconstructionを試してみました。

3D Face Reconstructionとは

上海交通大学のヤオ・フェン氏が発表した論文である「Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network」をもとに、同氏自らが実際に実装したものです。今回はその中の3D顔合成を利用していていきたいと思います。

インストール

https://github.com/YadiraF/PRNetにコードが公開されているので、これをgit cloneして環境を用意して動かしていきたいと思います。

PRNETのインストール

適当な作業フォルダを作成し、その中でgit cloneをしてプロジェクトをコピーします。

git clone https://github.com/YadiraF/PRNet

学習済みのモデルをBaido Drive or Google Driveからダウンロードします。

ダウンロードしたら、

256_256_resfcn256_weight.data-00000-of-00001

をクローンしたフォルダ

PRNet/Data/net-data

に保存します。

Python環境のセットアップ

PRNetはPython2.7系で動かす必要があります。

必要なライブラリをインストールしていきます。
PRNetをインストールしたフォルダに移動し

cd PRnet

指定された必要なライブラリ(numpy,scikit-image,scipy,tensorflow)をまとめてインストールします。

pip install -r requirements.txt

必須ではありませんが、dlibを使ったほうが顔認識の精度が上がります。

sudo brew install build-essential cmake
sudo brew install libgtk-3-dev
sudo brew install libboost-all-dev

pip install dlib

3Dオブジェクト表示アプリをインストール

MeshlabMicrosoft 3D Builderをインストールすることで、生成した3Dオブジェクトを表示、編集することができます。
ただ表示するだけであればMacだと標準の画像ブラウザで大丈夫そうです。

実行

PRNetをインストールしたフォルダで、読み込ませる画像を入れるフォルダと出力した3Dオブジェクトを保存するフォルダを作成します。

mkdir PRNet/3d/input
mkdir PRNet/3d/output

作成したinputフォルダの中に3D化したい顔画像を入れます。
今回は、加護さんの画像を使用しました。

加護さん顔画像

次のコマンドを実行することで、3Dオブジェクトを作成することができます。

python demo.py -i PRNet/3d/input -o PRNet/3d/output --isDlib True

CPU環境でも実行すると、数秒くらいで

Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

と表示されますが、Outputフォルダを確認すると拡張子が.objのファイルが作成できています。
このファイルをインストールした3Dオブジェクト表示アプリで開くと、顔の3Dオブジェクトをくるくる回して見ることが出来ます。

加護さん3D

結果


うまいこと加護さんを3D化することができました。
けれども、若干色が薄くなった気がしたので、
元の画像の色合いを鮮やかにし、再度3D化したら色が濃くなりました。

加護さん3D(色調整)

おまけ

チンパンジー顔画像

人間以外の動物でもできるかどうか検証してみました。

チンパンジー3D

チンパンジーは比較的に人間と似ているため、顔を認識することができ3D化することができました。

結論・感想

何も考えることなく、gitcloneしただけですぐにサンプルコードを動かすことが出来ました。blenderでそのまま.objファイルをインポートすることも出来ます。今回は顔のみの3D化でしたが、全身画像から3Dに出来る日が来るのはそう遠くはないのではないのでしょうか。

-AI・機械学習, python, 技術関連

Copyright© AIなんて気合いダッ! , 2019 All Rights Reserved Powered by AFFINGER5.