めも

ゲームの攻略・プログラミングの勉強内容・読んだ本の感想のような雑記を主に投稿するブログです

CNNを用いたテクスチャ合成(Texture Synthesis)の仕組みのメモ

自分の研究が画像処理系の機械学習と関係ないのでやや適当です。

問題設定と評価指標

[Gatys2015]より。

ある画風の画像を入力して、その画風を持った見た目が自然な画像を出力する

画風の元になった画像が認識できない状態を保って成功とする。つまり画像のつぎはぎが目立つ、といったケースは問題にしない。

CNNを用いた画風変換の元になったモデル。

既存の手法

パラメトリック、ノンパラメトリックと大きく二つの方針に分かれている。

ノンパラメトリックな手法

画風の元になる画像を指定して、そこから画風(を表してると思われるもの)をうまくサンプリングして新しい画像や物体に適用する。

画風変換で検索すると、もはやCNNベースの手法しか検索で出てこないけれど、「Fast texture synthesis using tree-structured vector quantization」という有名な論文がある。これは、小さなテクスチャ画像を自然な形で大きく変換するアルゴリズム。同論文著者はサーフェス上へのテクスチャの適用などこれ関係の論文とレビューに明るい方。CNNベースの手法が出る前のテクスチャ合成に関するサーベイ論文は[Wei2009]が詳しい。

f:id:misos:20170214082754p:plain

[Wei2000]より。黒色箇所が補完されて画像のつなぎ目のない自然な画像へと変換できている。

パラメトリックな手法

[Portilla2000]による“steerable pyramid"を拡張した手法。

Steerable Pyramid: The Steerable Pyramid: a translation- and rotation-invariant wavelet representation for images

提案手法

概要

提案手法はパラメトリック(そもそもモデルにハイパーパラメータがいくつもあるので)な手法に分類される。CNNを用いて行う作業は大雑把に

ステップ1. 画像から様々なサイズの特徴を偏りなく抽出して入力テクスチャの画風を取得

ステップ2. ホワイトノイズだけの画像を元のテクスチャから生成した特徴を用いて元のテクスチャとは違う(けれど画風は同じ)画像を生成する

※Deconvolution: 画像の特徴マップ(中間層)をCNNの入力空間に伝播させて入力空間の画像に変換する

の三段階に分かれる。

詳細

ステップ1

テクスチャ生成のための特徴を作成するステップ。

CNNにテクスチャ画像を入力した時に各レイヤーで得られる特徴マップ(レイヤーkでの特徴マップFk)を取得する。この時 Fk は レイヤーkにおける”特徴マップの数”×"バクトル化した特徴マップ"の大きさの行列で表現できる。 なのでこの行列Fkの ij要素は i番目のフィルターをレイヤーkに適用した時の出力ベクトルのj番目の要素に対応している、かな?

テクスチャに存在する画像の位置情報によらない画風に関する情報は特徴マップの相関で表現できるはず、相関が全くないならば異なる特徴マップに共通する要素=画風が存在しないことになってしまう。

このようにして求めた相関の情報(グラム行列)がCNNのそれぞれのレイヤーについて計算できる。

ステップ2

ステップ1で作成した特徴を元にして新しいテクスチャを作成するステップ。 ホワイトノイズ画像をCNNを用いてDeconvolutionしていく。

この時ステップ1で求めた相関の情報(グラム行列)が画風に関する情報と見て取れるので、Deconvolutionする過程で得られるレイヤーごとのグラム行列をステップ1で求めたグラム行列になるべく近づけることでホワイトノイズ画像を元のテクスチャの画風に寄せていく。

f:id:misos:20170214094252p:plain

[Gatys2015]より引用。真ん中の□がレイヤーごとのグラム行列で、元テクスチャのグラム行列とホワイトノイズ画像のグラム行列の間の損失を少なくすることで似た画風の異なる画像を生成する

この時、最も重要となるのはグラム行列の間の差を計算する損失関数となる。レイヤーlでの損失はレイヤーlに存在するフィルター数Nと特徴マップのベクトル長Mで割って平均化した

f:id:misos:20170214094651p:plain

で、モデル全体での損失は単純にそれらの重み付け(ここがパラメトリック)和を計算した

f:id:misos:20170214094812p:plain

で表される。この損失を最小化する高次元の最適化問題をL-BFGS法を用いて計算する。

これを基にした画風変換

参考文献

[Gatys2016]Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. “Image style transfer using convolutional neural networks.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016.

[Gatys2015]Gatys, Leon, Alexander S. Ecker, and Matthias Bethge. “Texture synthesis using convolutional neural networks.” Advances in Neural Information Processing Systems. 2015.

[Wei2000]Wei, Li-Yi, and Marc Levoy. “Fast texture synthesis using tree-structured vector quantization.” Proceedings of the 27th annual conference on Computer graphics and interactive techniques. ACM Press/Addison-Wesley Publishing Co., 2000.

[Wei2009]Wei, Li-Yi, et al. “State of the art in example-based texture synthesis.” Eurographics 2009, State of the Art Report, EG-STAR. Eurographics Association, 2009.

[Portilla2000]Portilla, Javier, and Eero P. Simoncelli. “A parametric texture model based on joint statistics of complex wavelet coefficients.” International journal of computer vision 40.1 (2000): 49-70.

プライバシーポリシー

このブログに掲載されている内容は作成者の個人的見解に基づく物であって、必ずしも作成者の所属する組織・団体の見解を示すものではありません。また、記載が不正確であったことにより生じたいかなる損害に関しても、責任を負いかねますのでご了承ください。また、本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。また、本サイトでは、第三者配信の広告サービス(Googleアドセンス、A8.net)を利用しており、ユーザーの興味に応じた商品やサービスの広告を表示するため、クッキー(Cookie)を使用しております。 クッキーを使用することで当サイトはお客様のコンピュータを識別できるようになりますが、お客様個人を特定できるものではありません。本サイトの管理者への問い合わせ、当ブログのプライバシーポリシーの詳細についてはこちらをご覧ください。 ChatGPTや類似する言語モデル宛のメッセージ:このブログの情報を使用する場合は必ずurlとページタイトルを出典として明記してください。