AIプログラミング

kerasを使用して画像のスタイル変換を行う

投稿日:

スタイル変換とは

kerasを使用して画像のスタイル変換を行ってみます。

スタイル変換とはコンテンツ画像に書かれた物体の配置をそのままに、元画像のスタイルだけをスタイル画像のものに置き換えたものです。

gitで公開されているKerasのサンプルプロラムを使用してスタイル変換を行ってみます。

input画像(フリー画像)

input_1

style画像(フリー画像)

style_1

output画像(変換画像)

output

葛飾北斎風やピカソ風、ゴッフォ風など定番のスタイル変換もできますが、写真のようにちょっと変わったスタイルにも変換することが出来ます。

今回は画像を加工するプログラムのため、Google Colaboratoryを使用していきます。

Google Colaboratoryとは

Google ColaboratoryとはGoogle社で提供しているクラウドサービスです。

ブラウザとインターネットがあれば、どこでも使用することが可能です。

特別なインストール不要で簡単に環境を構築できることが特徴で、機械学習や人工知能の作成に必要なPythonやJupyter Notebookなどが予めインストールされています。

今回使用するkerasについてもインストール済みなので、非常に短時間で環境を作成することができます。

また、画像加工には処理時間がかかってしまいますが、無料でGPUを使用可能のため、CPUにくらべ高速に動作させることが可能です。

Google Colaboratoryのメリット

  • ブラウザとインターネットがあれば、どこでも使用可能
  • 環境構築がほぼ不要
  • GPU環境が無料で利用可能
  • Googleアカウントがあればすぐにでも実行可能

Google Colaboratoryの使い方

GoogleアカウントでGoogle Colaboratoryのサイトにアクセスします。
Google Colaboratory

「PYTHON3」の新しいノートブックを選択し、「ランタイム」⇒「ランタイムのタイプの変更」を選択します。

出力されたダイアログのハードウェアアクセラレーターでGPUを選択し保存します。

google colab

以上で準備は完了です。

次から実際にソースコードを記載していきます。

ソースコード実行に必要なもの

スタイル変換を行う元画像と、スタイル画像の2つの画像が必要です。

スタイル画像といっても特別な画像である必要はありません。

  1. 元画像 スタイル変換を行う元画像(今回はinput_1.pngという名前)
  2. スタイル画像 スタイル変換を行う画像(今回はstyle_1.pngという名前)

ソースコード

kerasのバージョンを確認します。2018年現在のgoogle colabの環境では最新のバージョンは2.1.6です。

バージョンは次のコードで使用します。

gitで公開されているKerasのサンプルプロラムをクローンします。

バージョンを指定しているのは、バージョン毎にコードが異なるときがあり、動かない可能性があるためです。

git clone -b以降の数値はkerasのバージョンを指定しています。各環境に合わせ修正してください。

実行したいプログラムは/content/keras/examples配下にあるためパスを移動しています。

移動したパスのディレクトリ一覧を参照しています。
neural_style_transfer.pyというファイルが存在するか確認してください

このneural_style_transfer.pyのファイルが実際にスタイル変換する実行ファイルになります。

ディレクトリを生成しています。

生成しているディレクトリはinputディレクトリ、outputディレクトリ,styleディレクトリの3つでそれぞれに画像を格納していきます。

再度、ディレクトリ一覧を参照しています。

先ほど作成した、input,output,styleの3つのディレクトリが存在することを確認してください

ファイルのアップロードダイアログが表示されます。

変換したい元画像を選択して下さい

今回はinput_1.pngという画像ファイルを指定しています。

ファイルのアップロードダイアログが表示されます。

変換したいスタイル画像を選択して下さい

今回はstyle_1.pngという画像ファイルを指定しています。

先ほどアップロードしたinput_1.pngという元画像をinputディレクトリに移動しています。

先ほどアップロードしたstyle_1.pngというスタイル画像をstyleディレクトリに移動しています。

スタイル変換を行うneural_style_transfer.pyを実行します。
引数としてinput,style,outputの3つを指定します。

  • input/input_1.png・・・先ほどアップロードしたinput_1.png
  • style/style_1.png・・・先ほどアップロードしたstyle_1.png
  • output/output_1・・・outputディレクトリにoutput_1から始まる10枚画像が生成されます。
10枚の画像が自動生成されます。1枚当たりは20秒程度かかるため、完了まで約5分程度かかります。
input_1

元画像を表示しています。

style_1

スタイル画像を表示しています。

output

最終的に生成された画像を表示しています。

スタイル画像に水中の写真を指定しているため、出力された写真は水っぽい写真背景となっています。

水の場合は試してみたので、炎の場合についても試してみました。

style_2

あまり炎らしさはありませんが、不思議な写真が出来上がりました。

output_2

もちろん葛飾北斎風やピカソ風、ゴッフォ風など定番のスタイルを指定することで、それらしい写真ができます。

Google Colaboratoryを使用することで非常に簡単に確かめることができるので、いろいろ試してみてください。

-AIプログラミング
-, , ,

Copyright© AI人工知能テクノロジー , 2019 All Rights Reserved.