AIで芸術的な写真をつくれるというコードがGitHubにあったので試してみた
Contents
芸術的スタイル
素人(自分)が撮った写真が芸術的な写真に化けるのかを試してみた時の備忘録。
「A Neural Algorithm of Artistic Style」という論文をkerasで実装したコードがGitHubにあがっていた。
上記は人類が芸術的な絵画を描くスキルを身に着けた様に、ニューラルネットワークをつかって人工的に芸術的な画像を生成するシステムに関する論文だ。
コンテンツ(ベースとなる画像)とスタイルとで複雑な相互作用を構成して芸術的な画像を生成するとの事。
keras(下記参照)で実装しており、しかもColaboratory(Google Colab)で動作する。
kerasとは
kerasはTensorFlow上などで動くニューラルネットワークライブラリ。
TensorFlowはそのまま使おうとすると煩雑なコーディングが必要なのでラッパーと呼ばれるライブラリーで覆って簡単に使えるようにしたモノとの理解。
Google Colabとは
Google Colabはブラウザ上で機械学習のプロジェクトを動かすことができる環境。
またJupyter Notebookをベースにしており、連続で12時間、無操作だと90分で切断されるが、無料で使用する事ができる。
ブラウザで実行できるので様々な環境で動作させられる。
GitHub
前置きが長くなったがGitHubはこちら。
NVIDIAの社員のSomshubra Majumdarさんがアップしていた。
そしてGoogle Colabへのリンクはこちらになる。
実行
ランタイムのタイプ
上記のGoogle Colabのリンクをクリックすると下記の画面が表示されるのでランタイムー>ランタイムのタイプを変更をクリックする。
ハードウェアアクセラレータでGPUを選択して”保存”をクリックする。
gitからのコピー
最初のセクションの実行ボタンをクリックしてcloneコマンドでGitHubから必要なファイルをコピーしてくる。
下記の警告メッセージが表示されるので”このまま実行”をクリックする。
pathの設定
実行結果でエラーが出ていない事を確認して次のセクションを実行する。
ネットワークタイプ
このセクションを実行するとNETWORK変数に実行するPythonのプログラム名(INetwork.py)がセットされる。
ヘルプ
このセクションは-hオプションで実行してパラメータの意味を表示(ヘルプ)しているだけ。
パラメーターの初期値
このセクションを実行すると各パラメーターの初期値がセットされる。
主なパラメーター
CONTENT_WEIGHT | ベースとなるコンテンツ(ここに自分の写真をセットする)のウェイト この数値と下記のSTYLE_WEIGHTの数値の比率でどちらの影響がより強まるかが決まる |
STYLE_WEIGHT | 画家のスタイル(ここに画家、例えばゴッホの絵画の写真等をセットする)のウェイト |
NUM_ITERATIONS | 反復学習回数 この数値を大きくすると学習回数が増える |
MODEL | CNNモデルの種類を指定する vgg19とvgg16が指定できる |
コンテンツ画像の指定
このセクションを実行して「ファイル選択」でベースとなる写真を指定する。
今回使用したのは以下の自分が水族館で撮ったカエルの写真だ。
特段、芸術的な写真では無い上にピントもあまり合っていない。
ファイル名の変更
このセクションを実行すると読み込んだ画像のファイル名が変更される。
コンテンツ画像の表示
このセクションを実行すると読み込んだコンテンツ画像が表示される。
先程読み込んだカエルの画像が表示された。
スタイル画像の選択
このセクションを実行して「ファイル選択」でスタイル画像を選択する。
スタイル画像は先程のGitHubのこちらのフォルダーからいくつかダウンロードしておいた。
今回は下記の葛飾北斎の神奈川沖浪裏を選択した。
スタイル画像
同様にスタイル画像のファイル名の変更の変更を行い、次のセクションで画面に表示する。
ディレクトリの指定
このセクションを実行するとディレクトリが指定される。
画像の作成
いよいよ画像の生成。
このセクションを実行すると先程のパラメータでINetwork.pyを実行して画像を生成する。
NUM_ITERATIONSの数値次第だが10(回)の場合で数分の実行時間が掛かる。
画像の表示
このセクションを実行すると生成した画像を表示する。
画像のダウンロード
途中のセクションを飛ばしてDownload Ganerated Imageを実行すると生成された画像をダウンロードできる。
今回生成されたカエルの画像。
元のなんてことの無いちょっとピンぼけのカエルが葛飾北斎風?の中々前衛的なカエルになった。
次にスタイルにムンクの叫びを指定した時に生成された画像がこちら。
こちらはあまりムンク感は出ていないかも知れない。
CONTENT_WEIGHTとSTYLE_WEIGHTの比率やNUM_ITERATIONSの値を変えるとまた違った結果が得られるので試してみて欲しい。
最近のコメント