きゅぴ ちゃん の 備忘録

プログラミングなどの備忘録

いまさら 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 を理解するために読み参考にしました。

elix-tech.github.io

なぜ今、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

  • 入出力例
    f:id:chan_qp:20180307032608p:plain:w224
    入力コンテンツ画像

f:id:chan_qp:20180307032616p:plain:w224
入力スタイル画

f:id:chan_qp:20180307032623j:plain:w224
生成画像

  • 変化の様子

1000回くらい回しました結果です。

youtu.be

感想

Optimizerのパラメータをいじっていい感じの結果を見つけるのに、時間を費やし苦労しました。

また、chainer のOptimizer は Linkクラスをセットアップしないといけない点があり、はまりかけました。

暇なときに結果を追加するかも…