見出し画像

アニメっぽい自作アイコンを人工知能で作りたい 5

はじめに

全体の概要は第1回で紹介しました。

今回は第3回で実装した線画着色の精度改善を行っていきます。

手法

第4回で実装したResidual Blockですが、こちらを線画着色のDiscriminator部分に入れようとしたところ、以下の結果が得られました。

図1

そこそこ上手くいっているので分かりにくいですが、変更前よりも全体的に色味が足りません。緑やピンクがうまく出ていないのがわかると思います。
これはDiscriminatorの層が厚くなって見分ける能力が向上したため、Generatorにlossが返らず途中で学習が止まってしまった原因が考えられます。

これを改善するためにDiscriminatorをSNGANに変えたいと思います。
実装はとても簡単で、基本Batch Normalizationを使っていた部分をSpectral Normalizationに置き換えるだけです。Lossをいろいろいじってみたりもしましたが、今まで使ってたAdamが良かったので変えませんでした。

実験

実装はいつものGithubに置きます。リンクはこちら

結果は以下の通りです。

図2

右が改善後(pix2pix+ResNet+SNGAN)です。
かなり色が出てくるようになりました。今までほとんど出てこなかった青っぽい色や、緑に塗ることもできています。

次に第4回のグレーアイコン生成と繋げてみます。

図3

違いは一目瞭然ですね。
ResBlockが入ってDiscriminatorの層が厚くなっていますし、SNGANによって学習の安定化もされるので、色鮮やかな線画着色が行えるようになりました。

まとめ

線画着色にResNet、SNGANを入れて性能を改善しました。
U-netではなくpix2pixを入れている理由として、U-netでは平均色(たぶん黒や茶色)にしか塗られなくなってしまうんじゃないかという考えがあったので、今回かなり色鮮やかに塗れるようになって線画着色に関しては満足いく部分まで進みました。

あとはグレーアイコン生成の精度が上がってくればいい感じになりそうな気がします。

書いた人のTwitter: @wina_S_1991

この記事が気に入ったらサポートをしてみませんか?