Face Frontalization(正面顔推定)
横顔を入力すると正面顔が出力される。
正面顔推定なのか正面顔変換なのか対応する日本語は分からない。
横顔や斜め顔を正面に向けたいという需要があるので実験する。
githubに良い感じのがあったのでそれを使うだけ。
https://github.com/scaleway/frontalization
pytorch
で動く。
1. face frontalization GAN
今回使用するface frontalization GAN
はGANによって正面顔を生成するらしい。
昔見た特徴点を取ってアフィン変換するような手法に比べて現代的。
https://github.com/scaleway/frontalization によると、
これを入力すると、
こうなるらしい。
ちゃんと前を向いている。
2. 環境構築
https://github.com/scaleway/frontalization を参考にして環境構築。
2.1. ファイルダウンロード
必要なファイルをgithubからダウンロードする。
今回は自分で学習せずに学習済みモデルを使うので必要なファイルが少ない。
- network.py
- pretrained/generator_v0.pt
の2つだけあればいい。
2.2. conda 環境構築
専用の環境を作る。
pytorchさえあれば動くので、すでにあれば作らなくていい。
1 | conda create -n frontalization python=3.7 |
https://pytorch.org/get-started/locally/
公式に従ってpytorchを入れる。
1 | conda install pytorch torchvision cpuonly -c pytorch |
2.3. 実験用プログラム
githubにあるtest.py
は高機能だがそこまで求めてないし、Daliとかインストールしたくなかったので簡単なものを作る。
1 | import torch |
3. 実験結果
3.1. テスト画像
デモと同じ画像を入力する。
こうなる。
いい感じになる。
3.2. オリジナル画像
拾ってきた有名人たちの画像を入力する。
こうなる。
よくない感じになる。
しわが表現できないらしい。