ichou1のブログ

主に音声認識、時々、データ分析のことを書く

Kerasメモ(Style Transfer)その1

「Style Transfer」を試していて、結果がイメージどおりにならかったのでメモしておく。

Input画像 / Style画像


f:id:ichou1:20191022120522p:plainf:id:ichou1:20191022120530p:plain


うまく変換できていると思われる出力結果

GitHub - gsurma/style_transfer: CNN image style transfer 🎨.
Iteration: 10
f:id:ichou1:20191020114639p:plain


最初に試したときの出力結果(イメージとは違った)

keras/neural_style_transfer.py at master · keras-team/keras · GitHub
Iteration: 10
f:id:ichou1:20191020112227p:plain



パラメータを変えてみる。

変更前
content_weight = 0.025  # alpha
style_weight = 1.0      # beta
total_variation_weight = 1.0

layer_features = outputs_dict['block5_conv2']

feature_layers = ['block1_conv1',
                  'block2_conv1',
                  'block3_conv1',
                  'block4_conv1',
                  'block5_conv1']



以下のとおり変更(結果は下図左)

layer_features = outputs_dict['block2_conv2']

さらに、以下のとおり変更(結果は下図中央)

feature_layers = ['block1_conv2',
                  'block2_conv2',
                  'block3_conv3',
                  'block4_conv3',
                  'block5_conv3']

さらに、以下のとおり変更(結果は下図右)

content_weight = 0.02   # alpha
style_weight = 4.5      # beta
total_variation_weight = 0.995


f:id:ichou1:20191021220351p:plain
f:id:ichou1:20191021220644p:plain
f:id:ichou1:20191021220931p:plain


もう少し、空の色がstyleのイメージに近くなってほしいと思う。

さらに、以下の関数を使うのをやめてみる(結果は下図左)

img = vgg19.preprocess_input(img)

ついでにVGG16に変えてみる(結果は下図右)


f:id:ichou1:20191021221235p:plain
f:id:ichou1:20191021222201p:plain

イメージどおりになった。