3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

単一画像から, 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 情報を出す
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?