LoginSignup
26
22

More than 3 years have passed since last update.

単一画像からの最新ディープラーニング顔アルゴリズムを試す(2017 年 7 月 14 日時点) (2020 年 1 月 1 日追記)

Last updated at Posted at 2017-07-07

漢なら, 単一画像から顔認識したり顔メッシュを復元したりをディープラーニングでやりたいですね!

やりましょう!

DenseReg

DenseReg: Fully Convolutional Dense Shape Regression In-the-Wild
https://arxiv.org/abs/1612.01202

顔のセグメンテーション(目, 鼻, 眉とか)と形状推定ができます.

Semantic Image Segmentation 用に DeepLab http://liangchiehchen.com/projects/DeepLab.html を使っています.

独自 python caffe layer を使っているので, コンパイルするときには注意です!

$ make pycaffe

として python caffe module をビルドすることも忘れずに.

pix2vertex

Unrestricted Facial Geometry Reconstruction Using Image-to-Image Translation

pix2vertex では, image space で最近流行りの Image-to-Image 変換でまずは顔の position と depth を推定します. その後 non-rigid ICP でテンプレート顔メッシュをフィッティングし, そのあとより詳細な法線を復元することになるのですが, そのためのプログラム postprocess.p が, まと⭐️らぼのバイナリプログラムっぽくて, 誰でも試せなくてほんとうにかなしい...

まと⭐️らぼ つかうのは本当にやめてほしいですね!

頑張って mattorch とか使わずに lua だけで動かしました(position と depth 推定のみ). image 読み込み関連は An Image toolbox for Torch https://github.com/torch/image を使いました.

なんか position の推定がおかしいようなきもしますが, non-ridig ICP でテンプレートメッシュをフィッティングするプログラムを書かないことにはこれ以上進められないので, あまり深追いしないことにします.

Deep Alignment Network(DAN)

Deep Alignment Network: A convolutional neural network for robust face alignment
https://arxiv.org/abs/1706.01789

Facial landmark 検出します. 横顔とかでも強い.

最近流行りの顔ライブラリ Menpo http://www.menpo.org/ 使っているっぽい?

python ライブラリ群の依存関係が面倒なので, virtualenv とかで DAN 専用の python 環境を作ったほうがよいかもしれません(が, 私はやり方がよくわからないのでとりあえず miniconda2 https://conda.io/miniconda.html でなんとか無理やりセットアップしました)

Regressing Robust and Discriminative 3D Morphable Models with a very Deep Neural Network(3DMM_CNN)

3DMM(3D Morphable Models)をで 3D 形状とテクスチャを復元します.
3DMM を CNN でいい感じにしました.

依存関係の問題で, dlib や opencv は conda で入れましたが, caffe のビルドでは boost は conda で入れた dlib/opencv を見るようにしつつも protobuf は apt で入れるみたいなことをしないとうまく動きませんでした.
優秀な若人さまでしたら dlib, opencv も自前ビルドしたほうが問題が少ないかもしれません.

また, caffe python binding で, モデルの読み込みのときにエラーがでますので, 以下のように std::stringchar * で置き換える fix が必要になります.

(そもそも std::string なシグネチャは python 側から呼べなそうな気もしますが...?)

おまけ

InverseFaceNet: Deep Single-Shot Inverse Face Rendering From A Single Image
https://arxiv.org/abs/1703.10956

実装がないですが, 期待なアルゴリズムですね!

学習したい

今回は forward(推論) を実行しただけです.

学習をするにはどうするか? 昨今は顔のデータセットを CG で用意するのが流行りつつあります(depth などの真値を取れるので)

照明環境をを変えて学習用の顔のレンダリングなどは, Blender を使ったり, NanoRT https://github.com/lighttransport/nanort/ などを使って自前レンダラーを書けばできますが, テンプレートメッシュや 3DMM をどうするか, ですね.
(研究に限定して使える 3DMM などはあったりしますが, Basel Face Model or Sully Face Model くらいしかない?)

追記

各人がいろいろ切磋琢磨され, このあたりいろいろ発展していますね.

A collection of deep learning frameworks ported to Keras for face analysis.
https://github.com/shaoanlu/face_toolbox_keras/

いろいろ顔アルゴリズムをまとめて動かせます. ありがとうございます.

まとめ

北欧美人女優アリシア・ヴィキャンデルがかわい過ぎてやばい!
https://ciatr.jp/topics/58021

リファレンス実装が Torch とか Caffe とか Teano とかいろいろばらばらでつらいので C/C++ で全部書き直したい...!

TODO

  • まと⭐️らぼのコードを, C/C++ or GNU octave で書き直してくれる, 優秀な若人を探す旅に出たい.
  • 優秀な若人が, 最新ディープラーニング顔アルゴリズムを試し, 日々お互い切磋琢磨することで, 優秀な若人が人類史上最速で優秀なディープラーニング顔若人へと昇華されるスキームを確立する旅に出たい.
26
22
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
26
22