2016年9月15日 更新

画風を変えるアルゴリズム

画風を変えるアルゴリズムが人気だ。このアルゴリズムの元になったのが、コーネル大学のサイトであるarXiv.orgに投稿された'A Neural Algorithm of Artistic Style'という題の論文である。

1,664 view お気に入り 0
ファインアートの分野では、特に絵画では、ある絵の内容に特定の画風をあてこみ再現する手法が確立されているそうだ。これらは芸術家の職人芸の為、機械に真似出来ない領域だと考えられてきた。

しかし、人間の知覚を模倣した物体・顔認識の手法の1つ、Deep Neural Networkを用いれば、アート作品を人工的に再現出来るのではないかというのが、この研究論文の目的である。

実際、かなりの精度で再現されている。

海外の個人ブログに掲載されていた画像では、ゴッホの星月夜という作品の画風を、エッフェル塔の写真にあてはめると、どんな絵が再現されるかを紹介している。
 (1041)

論文によれば、このアルゴリズムには、CNN(Convolutional Neural Network)という手法が用いられている。
 (1043)

画風アルゴリズムの重要な要素は、この図に集約されている。
元の画像に対して、画風の元になる画像をベースにしたフィルタ処理をいくつかの段階に分けて沢山行うことで、より再現性の高い画像をつくっている。
 (1045)

ここで、スタイル画像とは、フィルタ要素となる画像。コンテンツ画像とは、画像再構成処理を行った時に出力されるベースとなる画像のことを指す。特徴の総合されたものがコンテンツ画像に再構成される。
高レイヤーになるほど、細かい領域での演算。低レイヤーになるほど、広い領域での演算が行われている。

家の画像を見ると、おおまかな描写は保たれているが、細部の描写が崩れていくのが分かる。
 (1048)

高レイヤー(右)に向かう程、画像の細部が崩れている。
色と周波数の高い画像の相関、それぞれのチャネルで得られた相関同士のスタイル行列を作成する。再構成したものがStyle Reconstructionsである。
 (1050)

Style Recostructions
この論文をベースにつくられたプログラムがChainer-Goghである。

プログラムの流れは、おおまかに以下の通り。
1:引数パース
2:GPUの利用有無を確認する
3:モデルを読み込む
4:コンテンツ画像・スタイル画像をリサイズする
5:画像を生成する

3の画像再構成のモデルには、VGGとNINがある。VGGは綺麗な絵を描くことが出来るが処理が重く、NINの方が手軽に扱える。

また、最適化されたGPUコアを用いた方が処理が早く行えるようだ。
 (1052)

画像の解像度はパラメータによっても出力結果が変わってくる。(上は、GTX690で処理した結果)
 (1053)

最初は完全にランダムな状態から始まる。
<参考URL>
A NEURAL ALGORITHM OF ARTISTIC STYLE(JAMES ROBERT LLOYD BLOG)
'A Neural Algorithm of Artistic Style'(Arxiv.org)
chainer-gogh(github)
画風を変換するアルゴリズム(Preferred Research)
[6]国産の深層学習フレームワーク「Chainer」とは何か(ITPro 日経コンピュータ)
15 件

関連する記事 こんな記事も人気です♪

Extracting Straight Lines〜画像から境界線を効率よく求める方法〜

Extracting Straight Lines〜画像から境界線を効率よく求める方法〜

本記事では,IEEE Transactions on Pattern Analysis and Machine Intelligence に投稿された,「Extracting Straight Lines」の論文を説明し,実装を行います.1986年に投稿された少し古めの論文ですが,アイディアは非常に面白いです.
ディジタル画像処理~pythonによる空間フィルタリングpart1~ 

ディジタル画像処理~pythonによる空間フィルタリングpart1~ 

ディジタル画像処理を解説します.今回は,代表的な空間フィルタリングをpythonで実行してみました。
亀谷 桃子 | 12,992 view
Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

Morphology (モルフォロジー) 変換の実装 ~ Python + OpenCV ~

画像処理の一つ,モルフォロジー変換をPython と OpenCVのライブラリを用いて実装し,それを2値画像に対して適用します.
Julia と画像処理②〜画像のセグメンテーション(Seed Region Growing とFelzenszwalbアルゴリズム)〜

Julia と画像処理②〜画像のセグメンテーション(Seed Region Growing とFelzenszwalbアルゴリズム)〜

プログラミング言語「julia」を用いて画像処理を行います.インストールに続き,今回は画像のセグメンテーションのライブラリを用いて,セグメンテーションを行います.
Medical Imaging Tech Night開催のお知らせ

Medical Imaging Tech Night開催のお知らせ

2018年11月25日(日)~11月30日(金)まで米国シカゴにて開催される「RSNA2018(第104回北米放射線学会)(※1)」の「Machine Learning Showcase」にて出展いたします。そこで得た最新の情報を元に、医用画像解析・機械学習に関するプレゼンテーションおよびトークセッションと交流会を実施いたします。

この記事のキーワード

この記事のキュレーター

エルピクセル編集部 エルピクセル編集部