Prismaで使われているアルゴリズム

WRITER: p.sun
2020/04/13

2016年、Prismaというアプリが登場し、すぐにソーシャルネットワークに話題に上がっていました。 自分の写真をアップロードして、抽象絵画スタイルを選択すると、Prismaが芸術的なスタイルの写真を生成できます。Prismaは、元の画像の色相または環境スタイルを単に変更するだけでなく、通常のフィルターを使用して画像の光、色、または重なり合う画像を変更することもありません。これは、提供する画像のコンテンツと要求するスタイル画像のスタイルに基づいて再作成されます。 新しい絵を描く、それは必ずしもあなたを美しくするわけではありませんが、真新しい自分に会います。

Prismaとニューラルネットワーク

Prismaのスタイル変換は、コンピュータービジョンの分野で研究されてきた問題であり、texture transferと呼ばれ、ターゲット画像のセマンティックコンテンツを保持しながら、ソース画像のスタイルをターゲット画像に合成することを目的としています。

Prismaで使われているアルゴリズム

Prismaで使用されているアルゴリズムは2016年の論文CVPR 2016 Oral Paper Image Style Transfer Using Convolutional Neural Networks.に基づいています。論文で述べられている主なアイデアは、19層の畳み込みニューラルネットワーク(VGG)を使用して画像のコンテンツ特徴またはスタイル特徴を抽出し、次にソース画像Aのコンテンツをソース画像Bのスタイルとマージして画像を「描画」することです。 画像Bのスタイル特徴と画像Aのコンテンツ特徴を持つ画像をターゲットにします。texture transferの分野で、従来の方法がそのような驚くべき結果を達成できなかった理由は、以前の非ディープラーニング方法ではターゲット画像の低レベルの特徴しか取得できないため、これらの方法で画像のセマンティックコンテンツとスタイル特徴を効果的にモデル化できず、二つをうまく合成できません。ディープニューラルネットワークが多くの分野で驚くべき結果を達成できる理由は、高レベルの情報表現を抽出できるためです。 Prismaが採用した手法の成功は、ディープニューラルネットワークの機能を巧みに利用して高レベルのイメージ表現を抽出し、通常の写真を数十秒で非常に芸術的な特徴を持つモダンな絵画や西洋風の絵画に変換することができます。

上記の通り、スタイル変換では、画像のコンテンツ特徴とスタイル特徴を個別に表現する必要があります。 次に、ニューラルネットワークを使用して、元の画像とスタイル画像からそれぞれ画像コンテンツの特徴とスタイルの特徴を抽出する必要があります。

画像コンテンツの特徴抽出

論文で19層のVGGニューラルネットワークを利用して、‘conv1 2’ (a),‘conv2 2’ (b), ‘conv3 2’ (c), ‘conv4 2’ (d) and ‘conv5 2’ (e)畳み込み層からコンテンツ特徴を抽出します。

スタイル特徴抽出

同じく19層のVGGニューラルネットワークを利用して、‘conv1 1’ (a), ‘conv1 1’ and ‘conv2 1’(b), ‘conv1 1’, ‘conv2 1’ and ‘conv3 1’ (c), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’ and ‘conv4 1’ (d), ‘conv1 1’, ‘conv2 1’, ‘conv3 1’, ‘conv4 1’ and ‘conv5 1’ (e)畳み込み層からスタイル特徴を抽出します。

画像合成

コンテンツ画像とスタイル画像が入力され、上記の畳み込み層からコンテンツ特徴とスタイル特徴を抽出します。 ランダムホワイトノイズ画像では、Gradient descentアルゴリズムにより、損失値が収束するまで、新しく生成された画像のスタイルとコンテンツの特徴が繰り返す計算されます。

画像合成中で使用される損失関数は:

alphaとbetaは重み係数、 pはオリジナル画像、aはスタイル画像、xは生成された画像。 Lcontentはコンテンツ損失関数、Lstyleはスタイル損失関数。

コンテンツ損失関数の定義は:

スタイル損失関数はスタイル特徴の違いを直接計算するではなく、gram matrixの違いが計算されます。 gram matrixの定義は:

レイヤーlの特徴マップのi番目のチャネルとj番目のチャネルの間の相関を表します。異なるチャネルは異なるテクスチャまたは色を表すため、異なるチャネル間の相関行列、つまりgram matrixを使用して、画像のスタイルを表すことができます。 2つの画像のgram matrixの違いは、2つの画像のスタイルの違いを示しています。 したがって、スタイル損失関数の定義は次のとおりです。

 

このアルゴリズムの不足点

最終的に生成された画像の結果は素晴らしいですが、計算に時間がかかり、GPU時間を大量に消費します。通常、最終結果を表示するには数十秒待つ必要があります。同時に、サーバー料金も高くなります。

 

 

 

Reference:

[1] Gatys et al, “Image Style Transfer using Convolutional Neural Networks”, CVPR 2016