初めに
GAN(Generative Adversarial Network)の進化がどうやら止まらないようです。
DCGAN、pix2pixといった、最新のGANモデルが次々と登場しています。
(テキスト生成モデルや音楽生成にも使用されているようです)
そして、今回はcycleGANを使って人間の顔をアニメ絵に自動変換したいと思います。
cycleGANとは
画像データセットAとBがあったときにAとBがそれぞれ対で無くても変換出来る凄い奴です。
つまり、沢山データを食わせれば自動的に学習してくれる訳ですね!(もし間違いがあればご指摘下さい)
データを入手する
Labeled Faces in the Wildとanimeface-character-datasetを使います。(もし、試す場合は自己責任でお願いします)
cycleGANは今回の目的は試すことであるのと、初心者が車輪の再開発をしてバグがあると困るので今回はこちらの実装をお借りしますCycleGAN-tensorflow
事前に二つともopenCVで顔を抽出しておきます。(アニメ顔はアニメ顔専用のモデルを使いました)
結果
epochは忘れてしまいましたが、10回未満だったと思います。
早速、testディレクトリを覗いてみます。
比較的うまくいった例
この人が
こうなりました
ちゃんと、目が生成されていますね!
上手くいかなかった例
この人が
こうなりました
反省点
どれが原因か分かりませんが
- 学習回数が少なすぎた?
- データ量が足りなかった?
- データ量が顔写真とアニメ絵に偏りがあった?
- ニューラルネットワークそのものを設計を見直す必要があった?
- そもそも、現在の技術では不可能?