LoginSignup
1
4

More than 3 years have passed since last update.

単一画像から, 3D 顔形状 + expression を復元する RingNet のメモ

Last updated at Posted at 2020-03-13

単一画像から, 3D 顔形状復元 + expression parameter 推定します. FLAME を使っています.

term of use などライセンス, 利用許諾を確認してから, 同意できる場合のみ, コードと pretrained model ダウンロードしましょう.

以下は同意できて, コードと pretrained model をダウンロードできた人向けです.

環境

  • miniconda python3.6
  • CUDA 9.0(!)
  • Ubuntu 16.04
  • Tensorflow 1.12.0

CUDA 9.0 で tensorflow-gpu をセットアップするのがめんどいです.
もしかしたら CUDA 10 + Ubuntu 18.04 + tf 1.15 あたりで動くかもしれません.

python3 でビルドする.

python2.7 はいろいろ依存ライブラリのビルドがうまくいかないので, python3 でやります.

ちなみに neural net での推論(tensorflow)は, 画像を入力して結果がでるというオーソドックスなものなので, 残りの部分(3D 形状復元)などは自前でやってしまうのも手です.

pip は, conda のものが使われているか, which pip で確認しておきましょう.

システムなどにインストールされている pip のパスが出る場合は, python -m pip ... で pip 関連を処理するのも手です.

pyrender だけ最新をインストールします.

opendr は OSMesa がいるので, ubuntu でしたら

$ sudo apt install libosmesa6-dev

でインストールしておいてから,

$ pip install opendr

します(2020/03/13 時では opendr-0.78 がインストールされました)

psbody-mesh

をビルドしてインストールしておきます.

Makefile を使うと変な処理が走るので,
apt で libboost-dev など入れておき,

$ python setup.py build
$ python setuo.py bdist_wheeel
$ pip install dist/psbody-****.whl

とするのがよいです.

ソースコード書き換え

cPickle を使っているところがあるので,

Python3でcPickleのエラーを回避する
http://testpy.hatenablog.com/entry/2017/03/17/000626

などを参考にして書き換えます.

posemapper の import に失敗したりするので,

py2在py3上运行遇到的问题
https://blog.csdn.net/qq_43593646/article/details/86670084

を参考に書き換えます.

他にも python2 的なコードを py3 に書き換えます.

推論を実行する.

あとは demo.py を実行するだけです.

ただ, 3d mesh overlay あたりはうまくいきませんでした(結果は真っ黒). サーバーで実行したから OpenGL が使えないとかでしょうか.

とりあえず .obj mesh は出ますので, あとは自前でメッシュオーバーレイ可視化など書いて対応が楽でしょうか.

TODO

  • RingNet を fork して, Python3 対応版を github に上げる(現状いろいろ書き換えて無理やり動かしたので整理が必要)
  • FLAME モデルのパラメータを理解して, expression 情報を出す
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4