ディープラーニングでkeyキャラっぽいイラストを自動生成してみました。
vis_21_0
すごい! keyっぽいのに、見たことないキャラが生成できた!(一部除く。後述)

利用したのは以下の記事で紹介されているDCGANというアルゴリズムです。
Chainerで顔イラストの自動生成

ソースコードは上記記事のものをそのまま用いたので、私が行ったのは学習データの作成だけです。
なので、本記事では学習データの作成過程をご紹介します。
学習データ作成の手順は以下の通りです。

1. 元画像の収集
2. 元画像からの顔画像切り出し
3. 顔画像の選別
4. Data Augmentation

では、1つずつ説明していきます。

・1. 元画像の収集
元画像の収集にはImageSpiderというフリーソフトを利用しました。
検索キーワードは"key kanon"とか"kanon あゆ"とかそんな感じです。
今回の例では、8400枚の画像を収集しました。
http://www.vector.co.jp/soft/winnt/net/se425690.html

・2. 元画像からの顔画像切り出し
顔画像切り出しには、OpenCVを利用しました。
切り出し画像が32×32[pixel]より小さい場合は無視し、それ以外の画像は96×96[pixel]にリサイズして画像ファイルに出力しました。
結局、次工程の「顔画像の選別」でボケた画像を排除したので、しきい値32×32というのはもっときつくしてもよいと思います。
OpenCVによるアニメ顔検出ならlbpcascade_animeface.xml

・3. 顔画像の選別
切り出された画像には、顔以外の画像、keyに関係ないキャラ、コスプレ画像、keyキャラだけどタッチが違いすぎるもの、ぼけた画像、などノイズが多く含まれています。
このノイズを人力で(!?)排除していきます。
……いや、大変ですよ。
完璧に排除するのは無理(同人が多く含まれるので、どのくらいのタッチの違いまで許すのかとか、タッチはkeyっぽいけどkeyキャラなのか自信が持てないとか)なので、「パッと見て、学習の邪魔になりそうなものを排除していく」くらいの気持ちでやるのがよいかと思います。
私はこの作業に5時間ほどかけました。
なお、後述しますが、男キャラや横顔が混ざっていると、自動生成結果がいまいちだったので、それらも排除しました。
今回の例では、3500枚の顔画像を選別しました。

・4. Data Augmentation
各画像を左右反転させ、7000枚に学習データを水増ししました。
学習データの一部を以下に載せます。
無題

0000088.bmpは誰でしょうね?
まあ、あまり気にしすぎず、軽い気持ちで学習データを作るのが吉です。
あまり几帳面になりすぎると、「学習データを作っているつもりが、いつの間にか自分自身がkeyキャラ識別器として働いている」というディストピアな感じになってしまうのでw。

ともかく、以上の作業で作った学習データを食わせると、最初に示した画像のように、keyキャラっぽい画像を自動生成してくれます。
ただ、問題点もいくつかあったので、最後にそれらを記します。

・学習データのキャラ数が少なすぎるせいか、元キャラの影響が強すぎる。
実は今回学習に使ったのは、kanon、AIR、CLANNADの3作品がほとんどです。
理由は私自身がその3作品が特に好きだから。
なので、学習データのキャラ数が少なくなり、自動生成画像も元キャラの影響を強く受けたものになっています。
よく見ていただくと、「ほぼ杏じゃん、ほぼ渚じゃん」という画像が含まれています。
この問題点については、リトバスやrewriteのキャラを追加学習してどうなるか試してみたいと思っています。

・オッドアイが多い。
学習データにオッドアイはほとんど含まれていないはずなんですがね。
学習データを増やすことで改善するかもです。

・目の破たんが目立つ。
生成画像を見ると、目がちゃんと描けているものは良く見えて、目がちゃんと描けていないものは他の部位がうまく描けていても悪く見えてしまいます。
これは人間がイラストを見る時に、目を中心に見ているからだと思いますが、コンピュータにとってはそんなこと知ったこっちゃありません。
目の破たんを防ぐことを重視するようなアルゴリズムにしないと実用は難しいかなと思います。

・学習データに男キャラや横顔が含まれていると、生成結果の質が低下する。
学習データに男キャラ、横顔が含まれる場合の生成結果を以下に示します。
それなりにできてはいるのですが、質はあまり良くありません。
女キャラの正面顔とは特徴が大きく異なるので、学習が難しいのだと思います。
vis_13_0


・途中から生成画像が破たんしてしまった。
最初に載せた生成画像は21世代目のものなのですが、25世代目で破たんし、そこから多少盛り返すものの、結局正常な画像は生成されなくなってしまいました。
原因はこれから調査予定です。

以上です。