AIで画風を学習し、実際に撮った写真を変換する画風変換があります。最近ではアプリケーションにもなっているのですが今回は実際にpythonを実行し変換を行っていきます。
...とは言っても自分で作るのことはできないので、先人の皆様のgitからソースを取得していきます。
今回はfast-neural-style-kerasの画風変換を実行していきます。
こちらのfast-neural-style-kerasの使い方はhow to useに記載されているコマンドを実行すればできるのですが、現在(2020年)だとライブラリのバージョン更新の関係でうまく動作しません。こちらのコードはなんと2017年にgitに投稿されています。時代とライブラリの進み具合は早いですね笑
調べていくと画風変換を動かすまでに出てきたバグで修正点がまとめられていたので、こちらの記事通りの修正をしたのですが、一部ライブラリがさらに更新されたようなのでその個所のコード修正と使用したライブラリのバージョンを備忘録として以下にまとめます。
実行環境
python 3.7.9
tensorflow 1.13.1
Keras 2.2.3
imageio 2.9.0
scipy 1.2.0
コード修正
git clone等の方法については
画風変換を動かすまでに出てきたバグを確認してください。私の記事では最低限のコード修正箇所のみ書きます。
# 修正前
from keras.applications.imagenet_utils import decode_predictions, preprocess_input, _obtain_input_shape
# 修正後
from keras_applications.imagenet_utils import decode_predictions, preprocess_input, _obtain_input_shape
# 87行目
# 修正前
include_top=include_top
# 修正後
require_flatten=include_top
# import追加
import imageio
# 107行目
# 修正前
imsave('%s_output.png' % output_file, y)
# 修正後
imageio.imwrite(output_file+'/'+style+'img_saved.jpg', y.astype(np.uint8))
いざ画風変換
fast-neural-style-keras\imagesフォルダ直下に変換したい画像ファイル[test.jpg]を配置します。
fast-neural-style-keras\直下に結果出力用フォルダ[output]を作成します。
下記コマンドを実行します。今回は富嶽三十六景(stayle wave_crop)を選択しています。
python transform.py -i images/test.jpg -s wave_crop -b 0.1 -o output
入力画像
画風変換結果
フリー素材の猫の画像を変換しました。
皆さんもぜひ試してみてください。
動作しないなど問題があれば聞いてください。可能な限りで対応します。
無事、変換出来たらLGTMください笑