CNN:ニューラルスタイル転送

Jul 25 2022
Sathya Krishnan Suresh、Shunmupapriya Pこの記事では、スタイルとコンテンツが2つの別々の画像から得られる新しい画像を生成するために使用できる方法である「ニューラルスタイル転送」と呼ばれる興味深いトピックについて説明します。この記事は、Leon A Gatys他による芸術的スタイルのニューラルアルゴリズムに基づいており、著者は畳み込みニューラルネットワーク(CNN)のレイヤーを使用した新しい画像の生成について詳細に説明しています。

Sathya Krishnan Suresh、Shunmupapriya P

この記事では、スタイルとコンテンツが2つの別々の画像から得られる新しい画像を生成するために使用できる方法である「ニューラルスタイル転送」と呼ばれる興味深いトピックについて説明します。この記事は、 Leon A Gatys他による芸術的スタイルのニューラルアルゴリズムに基づいており、著者は畳み込みニューラルネットワーク(CNN)のレイヤーを使用した新しい画像の生成について詳細に説明しています。この記事で紹介されているコードはここにあります。これは、tensorflowのWebサイトから採用されています。

CNNの基本:
画像のミキシングとアートの作成を開始する前に、トピックを理解するために絶対に必要なCNNの基本を理解しましょう。これは、CNNの基本についての簡単な概要であることに注意してください。

畳み込みニューラルネットワーク(CNN)は、複数の畳み込み層で構成される深層学習モデルです。これらのレイヤーは、画像からさまざまな情報を抽出するために使用されます。これらの情報は、画像の分類、オブジェクトの検出など、目前の問題を解決するために使用されます。畳み込みレイヤーは、畳み込みレイヤーごとに複数のフィルターを使用して情報を抽出します。画像のいくつかの特徴。

各フィルターは、CNNアーキテクチャ内の位置に応じて、画像またはフィーチャマップのいずれかをスライドする2次元スライディングウィンドウであるカーネルを使用します。カーネルが前のレイヤーの特徴マップ上をスライドすると、カーネルの重みとスライドする特徴マップの位置の値のベクトル乗算から生じる特徴マップが生成されます。CNNの下層は、エッジの形状など、画像に関連する最も一般的な情報をキャプチャします。ネットワーク内を移動すると、上層の層が、下層によってキャプチャされた低レベルの機能を組み合わせていることがわかります。最上層は、鼻の存在、車のへこみなど、画像の特定の特徴を識別します。

スタイルとコンテンツレイヤー:
すべての画像にはコンテンツとスタイルがあります。たとえば、次の犬の画像について考えてみます。画像の内容は犬であり、画像のスタイルは、画像のテクスチャ、画像の色、画像の構成方法、および犬が画像内でどのように配置されているかです。

CNNは、画像のスタイル、コンテンツ、およびその他の多くの特徴を識別し、これらのレイヤーを表す情報は、CNNモデルの特徴マップに格納されます。この記事では、この画像のスタイルとコンテンツを表すレイヤーに焦点を当てます。

下のレイヤーでは画像の処理がほとんどなく、画像は多かれ少なかれ元の形式で存在するため、通常は下のレイヤーで画像のコンテンツを適切にキャプチャします。アーキテクチャの最上位層は、下位レベルでキャプチャされた情報を組み合わせており、通常は画像のスタイルについて優れたアイデアを持っているため、画像のスタイルを適切にキャプチャします。

この記事で使用するアーキテクチャは、ILSVRCを受賞したモデルであるVGG19モデルです。論文の著者は、モデルウェルのスタイルを表すモデルの5つのレイヤーと、モデルウェルのコンテンツを表す1つのレイヤーを特定しました。モデルのレイヤーを次の図に示し、スタイルレイヤーおよびコンテンツレイヤーとして選択されたレイヤーを下部に示します。

グラム行列:
画像のミキシングを開始する前に理解しておくべき最後のことの1つは、レイヤーの複数のフィーチャマップからスタイルをキャプチャする方法です。画像のスタイルは、レイヤーの複数の特徴マップの平均と相関によって表すことができることがわかります。そのため、グラム行列が使用されます。グラム行列は、次の式を使用して計算されます。

ここで、Fは特徴マップを表し、「jc」と「jd」は特徴マップの寸法を表します。これは同じレイヤーの特徴マップでも同じであり、「i」はレイヤー「l」のどの特徴マップが乗算されているかを表します。 。私たちがやろうとしていることを理解するために必要なすべての概念が議論されました。それでは、画像のミキシングを始めましょう。

スタイルの転送:
最初に行う必要があるのは、上記のVGG19モデルのスタイルレイヤーとコンテンツレイヤーによって生成された出力を取得することです。これは、これらのレイヤーの出力を提供するカスタムモデルを構築することで実行できます。次の図は、必要な出力を取得する方法を示しています。

上の図では、最初にVGG19モデルをロードします(最上層を除く)。出力が必要なレイヤーの名前を引数として渡し、その入力をVGG19モデルに渡し、それらによって生成された出力を返すカスタムモデルを作成します。関数はモデルを返します。

ラブラドールのイメージを組み合わせるスタイルイメージとして、カンディンスキーの絵が選ばれました。

この画像を変換するために実行する手順は簡単です。まず、コンテンツとコンテンツ画像のスタイルを抽出し、次にスタイル画像(カンディンスキーの絵画)のスタイルを抽出します。次に、コンテンツ画像のスタイルをスタイル画像のスタイルに変換しようとします。スタイルを変換するプロセスは、最初にターゲット(カンディンスキー画像のスタイルレイヤー出力)とコンテンツ画像のスタイルレイヤー出力の間の平均二乗損失を計算することによって行われます。次に、この損失の勾配がコンテンツ画像に関して計算され、その後、スタイル画像のスタイルレイヤーの値が、カンディンスキー画像のスタイルレイヤーの値であるターゲット値により近くなるように変更されます。上記の手順を以下に示します。

カスタムモデルは、スタイルレイヤーとコンテンツレイヤーの出力にレイヤー名で注釈を付けるように構築されており、スタイルとコンテンツの注釈を含む出力としてディクショナリを返します。スタイルレイヤーの出力は、返される前にグラム行列に渡されることがわかります。

損失計算を次の図に示します。スタイルとコンテンツの両方の平均二乗誤差が計算され、それらの加重和が返されることがわかります。コンテンツターゲットはコンテンツレイヤーの出力と同じであるため、通常、コンテンツの重みは高くなります。スタイルの重みは常に小さいです。

最後に、画像をミックスする2つの重要な機能を以下に示します。run_gradient関数は、出力変数と損失変数を追跡し、スタイルレイヤーとコンテンツレイヤーで勾配降下法を実行します。ミックス関数は、ラブラドールの画像に必要なカンディンスキー画像のスタイルを決定するために使用されます。

モデルを実行すると、次の出力が得られます。これは、コンテンツ画像とスタイル画像の美しい組み合わせです。

結論:
この記事では、スタイル転送の魅力的な概念を見ました。今後の記事では、ブースティングとアンサンブルに焦点を当てます。記事の拍手が気に入ったら、購読してコメントしてください。

Mlearning.ai提出の提案

© Copyright 2021 - 2022 | hachiwiki.com | All Rights Reserved