Google DeepDreamの詳細


12

このサイトでDeep Dreamに関するいくつかの質問を見てきましたが、DeepDreamが具体的に何をしているのかについて実際に話しているようには見えません。私が集めた限りでは、それらは目的関数を変更し、重み付けを更新する代わりに入力画像を更新するように逆伝播も変更したようです。

誰かがグーグルがしたことを正確に知っているのだろうかと思います。彼らは、最適化を実行するときにベイズの事前分布を課す彼らの記事の1つで言及しています。これにより、ニューラルネットが各ラベルの画像を吐き出すのはそれほど難しくないことを想像できます。ラベルを設定して、それに応じて入力ベクトルを最適化します。

ただし、ディープドリームの興味深い部分は、これをレイヤーごとに実行することです。この点で、レイヤーごとの方法で詳細を強調する方法がよくわかりません。

確かに、画像を入力すると各ニューロンの値が得られますが、その情報を使用して元の画像の詳細を誇張するにはどうすればよいでしょうか。これに関する詳細な報告を見つけるのに苦労しました。

参考資料:ここでvznが同様の質問に回答しました:https ://cs.stackexchange.com/a/44857/49671

そのリンクから、ここにDeepdreamの実装があります:http ://auduno.com/post/125362849838/visualizing-googlenet-classes

ここで説明されているように、機能の誇張はありませんが、http//googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html

どちらも特定のクラスと特定のレイヤーの視覚化を示し、次のように言います。

ネットワークで増幅する機能を正確に規定する代わりに、ネットワークにその決定を任せることもできます。この場合、ネットワークに任意の画像または写真を送り、ネットワークに画像を分析させるだけです。次に、レイヤーを選択し、検出されたものを強化するようネットワークに要求します。


回答:


7

DeepDreamの考え方は次のとおりです。ネットワークからレイヤー(通常は畳み込みレイヤー)を選択し、ネットワークを介して開始画像を渡し、選択したレイヤーの特徴を抽出し、そのレイヤーの勾配をアクティベーション自体に等しく設定してから、逆伝播します。画像に。

なぜそれが理にかなっているのですか?直感的には、ネットワークで最大限にアクティブ化される機能を増幅します。このグラデーションを逆伝播することにより、既存のアクティブ化を強化する画像の更新を行います。レイヤーに猫のような検出器があり、画像に猫のように見えるパッチが含まれている場合、DeepDreamはこのパッチをさらに猫のように更新することで、このアクティブ化を強化します。その結果、DeepDreamは画像内のどこにでも猫と犬を見つけようとしています(ImageNetデータセットにはたくさんの犬がいるため、ネットワークには犬に関連する多くのニューロンがあります)。

objective_L2dバツ=バツ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.