いまさら chainer で Neural Style Transfer (画風変換)
Neural Style Transfer (画風変換)とは
2016年ごろから、Prismaをはじめとする写真をおしゃれに変換するアプリが出始め、人々の注目を集めています。
この写真の画風を変換する処理は Neural Style Tranfer という最近勃興している Deep Convolutional Neural Network (DCNN) を利用した技術です。
関係する論文として、Image Style Transfer Using Convolutional Neural Networks (2016)が挙げれます。この論文がNeural Style Transferの基礎となっているみたいです。
ざっくり説明すると、
ある程度良い特徴を学習しているNeural Networkに対して、2枚の画像(コンテツ画像とスタイル画像)からコンテンツ特徴とスタイル特徴を抽出します。 この2つの特徴を持った画像を生成するという技術です。
詳しい解説は Shinya Yuki さんなどの真面目なブログなどを見て下さい。私も Neural Style Transfer を理解するために読み参考にしました。
なぜ今、Neural Style Transfer
先日、投稿した記事より、せっかくCUDAを入れなおしたので、動作確認と勉強を兼ねて chainer で作ることにしました。 chan-qp.hatenablog.com
なお、以前からchainerを用いた Neural Style Transferは存在します。
実装
OS : Ubuntu 16.04 GPU : GTX750Ti
chainer version 3.2.0
githubに .ipynb形式であげています。 github.com
- 入出力例
- 変化の様子
1000回くらい回しました結果です。
感想
Optimizerのパラメータをいじっていい感じの結果を見つけるのに、時間を費やし苦労しました。
また、chainer のOptimizer は Linkクラスをセットアップしないといけない点があり、はまりかけました。
暇なときに結果を追加するかも…