2009年創業。埼玉県川越市一筋のIT企業です。
イー・レンジャー株式会社 電話
イー・レンジャー株式会社 > 【AI】本物はどちら?? ディープラーニングモデルのとてつもなく感動的な性質 Texture Synthesis Using Convolutional Neural Networks

【AI】本物はどちら?? ディープラーニングモデルのとてつもなく感動的な性質 Texture Synthesis Using Convolutional Neural Networks

最終更新日: 2018/08/09 6:23pm

カテゴリー: AI, お知らせ, ディープラーニング, プログラミング, 先進技術

こんにちは。

経理の小高です。

今日もとても暑いですね。昨日、ビッグサイトで開催されていた働き方改革エキスポにいってきました。展示会場はもちろん涼しかったのですが、いき帰りの暑さにぐったりしてしまいました。

働き方改革Expo 2018 イー・レンジャー株式会社

 

さて、ちょっとびっくりするような画像を並べてみます。

小石(合成画像) イー・レンジャー株式会社

図1

 

小石(元画像) イー・レンジャー株式会社

図2

 

見ての通り、海辺にありそうな小石が並んでいます。

なんでびっくりするの?? ですけど、「片方は自然の小石、片方は(ディープラーニングのモデルを使って)合成されたもの」なのです。。。。

「画像の合成」というと、コピーし切り抜いて、、、とか想像しますがそんなことはなくて、「これに似せて作って!!」と命令しただけです。

 

この画像合成(「テクスチャ合成(Texture Synthesis)」といいます)は、Gatysさんたちが2015年に書いた「Texture Synthesis Using Convolutional Neural Networks」のアルゴリズムで行っています。

Gatysさんは「川越名画シリーズ(!?)」で写真と名画を合体させるアルゴリズムを考案した人なのですが、合体アルゴリズム(2016年発表)のベースになっているのが、このテクスチャ合成のアルゴリズムです。

 

Texture Synthesis Using Convolutional Neural Networks Gatys et al

図3 テクスチャ合成のプロセス(Gatys et al. 2015)

 

そうそう。合成された画像は図1の方です。

アルゴリズムの眼目は、タイトルにあるように「テクスチャの抽出にディープラーニングモデル(VGGモデル)を使う」ことです。上の図3はペーパーから転載させていただいたものですが、左側がVGGモデルからテクスチャ(正確には「テクスチャを意味する統計量」)を抽出するプロセス、右側がノイズ(乱数を設定した画像)からテクスチャを合成するプロセスです。

 

感動的なのは「テクスチャを意味する統計量」が1行でかけてしまうこと。

Texture Synthesis Using Convolutional Neural Networks Gatys et al

図4 テクスチャ合成の統計量(Gatys et al. 2015)

 

最初に読んだときに「こんなバカなことはない!!」と思ったのですが、実際にできたときには途方もなく感動してしまいました。(一応、統計学会の会員)

特殊相対性理論の式、オイラーの公式 とまではいかないにせよ、単純なものほど素晴らしい。

小石の例で分かりますように、あれだけ複雑な「模様」を「1つの式で表してしまう」なんてことがありえるのか??です。測定値(Gij)には大きな自由度がありますし、小石の画像は300pix四方ですから、270,000バイトのデータでしかありません。とはいえ。。。。

ペーパーには、他にもいくつかの実例が挙げられています。

VGGをはじめ、ディープラーニングモデル(ニューラルネットワーク)は「あまりに巨大」です。多くが「一般物体認識(画像に写っているものが何かを判定すること)」のために開発・訓練されていますが、モデルそのものの解析(理論づけ)は非常に難しいものです。元来、畳み込みニューラルネットワーク(Convolutional Neural Networks)は視覚の仕組みを模して発案されました。現在では発想を逆にして、ニューラルネットワークからの知見から「脳を知ろう」という試みがなされています。Gatysさんらの研究もこういった視点(脳の視覚野の研究の観点)がベースです。上の式はこの領域の嚆矢になるかもしれない。そんなことを思わせるほど単純です。

 

このペーパーをトレースにあたってプログラムが見つかりませんでしたので、python3 + chainer4を使ったプログラムをgithubに公開しました。GPUを使えば1枚100秒ほど(256px四方の時)で実行できます。実行時間は1辺の2乗に比例しますので、あまり大きいデータは使わない方がよいです。

また、最適化問題は、上の(2)式から得られる損失関数の最小化問題となります。このとき損失関数は定数倍について任意ですので、関数値にはなんの意味もありません。

 

是非是非ためしてくださいませ。

https://github.com/TetsuyaOdaka/texture-synthesis-gatys

 

関連するページ

【AI】名画で川越を変換する。A Neural Algorithm of Artistic Style概論

 

 

←「」前の記事へ   次の記事へ「」→