はじめに
tensorflow/magentaに「Style Transfer」というモデルが追加されていたので試してみました。
StyleTransferは、入力した画像を、学習した絵のテイストに変換してくれるモデルです。
下記の論文を実装したものとのことです。
A Learned Representation for Artistic Style. Vincent Dumoulin, Jon Shlens, Manjunath Kudlur.
やってみる
それではStyleTransferのREADME通りにやっていきます。
セットアップ
magentaのセットアップはこちらから。
私は、AutomatedInstallで進めています。
インストールしたらsource activate magenta
で起動。
学習済みモデルのダウンロード
- monet
- varied
の2つの学習済みモデルがあるので、ダウンロードします。
コマンド
terminalで下記のコマンドを実行します。
$ image_stylization_transform \
--num_styles=<NUMBER_OF_STYLES> \
--checkpoint=/path/to/model.ckpt \
--input_image=/path/to/image.jpg \
--which_styles="[0,1,2,5,14]" \
--output_dir=/tmp/image_stylization/output \
--output_basename="stylized"
-
num_styles
には参照するckptがmonetなら10
,variedなら32
を入力します。(monetは10パターン、variedは32パターンあるとの意味かと思います。) -
checkpoint
,input_image
にはそれぞれのパスを入力。 -
which_styles
はモデルには保存されているStyleの重みを設定したりするものです。
例えば
which_styles="{0:0.1,1:0.1,2:0.1,3:0.1,4:0.1,5:0.1,6:0.1,7:0.1,8:0.1,9:0.1}"
であれば、monetの10パターンの重みを等しくした画像1枚を作成してくれます。また、
which_styles="[0,1,2,3,4,5,6,7,8,9]"
とすると、それぞれのパターンにつき1つずつの画像を作成してくれます。
コード全体
monetの10パターンすべてについて1つずつ画像を出す場合のコードはこちら。
image_stylization_transform --num_styles=10 --checkpoint=/Users/hoge/Downloads/multistyle-pastiche-generator-monet.ckpt --input_image=/Users/hoge/Downloads/twitter_acount.jpg --which_styles="[0,1,2,3,4,5,6,7,8,9]" --output_dir=/Users/hoge/Downloads/ --output_basename="stylized-monet"
完成した画像
twitterアカウントの画像をmonet風に変換してみました。
また、variedという学習済みモデルには、いろいろなアーティストのタッチが入っています。
元の画像から大きく変化するものもあり、面白いですね。
varied-0 Roy Lichtenstein, Bicentennial Print (1975).(?)
varied-31 Wassily Kandinsky, White Zig Zags (1922).(?)
注意点
- 変換する画像ファイルが大きいと、PCの容量不足で落ちてしまいました。(1.8MB。上の元画像は20KB。)
- 一度に32枚の画像を作成しようとすると、いつまでたっても返ってきませんでした。15枚ぐらいまでは行けそうでした。
おわりに
活用すると、画像加工アプリなどが作れそうですね。
magentaではアーティストの音楽をもとに、テイストを真似た楽曲の作成もできますが、音楽と比べて画像の方が、よりもとにしたアーティストのテイストがわかりやすいなと感じました。
magenta、どんどんモデルが追加されてて楽しいなぁ。
ありがとうございました。