WarpGANで似顔絵を作成する(学習済みモデルを使用、GPUがなくても十分動作可能です)

はじめに

年賀状作成の時期になりました。家族の写真をそのままのせるのはつまらないので何か面白いものはないかと探していたところWarpGANにたどり着きました。
github.com
Style Transfer with Geometric Deformation」と説明されています。日本語に訳すと「変形を伴うスタイル変換」でしょうか。

結果

先に結果を示します。
元画像はStyleGANで描いた架空の人物を使用しました。(こちらを参照)
一番左が元画像、右の4枚が今回作成した似顔絵です。
f:id:touch-sp:20201210221255p:plain:w400
scaleというパラメーターを1.0, 2.0, 3.0, 4.0と変更して結果を得ています。
元画像を除く一番左がscale=1.0、一番右がscale=4.0です。

環境構築

Windows 10
GPUなし
Python 3.6.8

TensorFlow 1.9で動くと書いてあるのでそれに従うことにしました。Pythonは3.6以前を使用する必要があります。
最新のnumpyやscipyをインストールすると動かなかったのでバージョン指定が必要です。以下の順でインストールすれば問題ありません。

pip install numpy==1.16.2
pip install scipy==1.1.0
pip install pillow
pip install opencv-python
pip install tensorflow==1.9.0

最終的にはこのようになりました。(pip freeze)

absl-py==0.11.0
astor==0.8.1
gast==0.4.0
grpcio==1.34.0
importlib-metadata==3.1.1
Markdown==3.3.3
numpy==1.16.2
opencv-python==4.4.0.46
Pillow==8.0.1
protobuf==3.14.0
scipy==1.1.0
six==1.15.0
tensorboard==1.9.0
tensorflow==1.9.0
termcolor==1.1.0
Werkzeug==1.0.1
zipp==3.4.0

方法

まずは上記GitHubをZIPでダウンロードして解凍します。「WarpGAN-master」というフォルダができます。
f:id:touch-sp:20201210215151p:plain:w400
またGitHubページ内の下にGoogle Driveへのリンクが貼られているのでそちらから学習済みモデルをダウンロードします。
f:id:touch-sp:20201210215534p:plain:w400
学習済みモデルは「WarpGAN-master\pretrained」の中で解凍します。最終的には「WarpGAN-master\pretrained\warpgan_pretrained」というフォルダ構造になります。
元画像は「sample.png」という名前で「WarpGAN-master\data\example」フォルダ内に保存しました。
あとは「WarpGAN-master」フォルダ内で以下を実行するのみです。

python test.py pretrained/warpgan_pretrained data/example/sample.png result/sample --num_styles 5 --scale 1.0

1回の実行で5枚の画像が作成されます。その中で良さそうなものを選んで上記に示しています。
このエントリーをはてなブックマークに追加