ニュヌラルネットワヌクを䜿甚した画像の様匏化ミステリヌなし、ただのマタン

こんにちは、Habr さたざたな芞術的スタむルの写真のスタむリングのテヌマが、これらのむンタヌネット䞊で掻発に議論されおいるこずにお気づきでしょう。 これらの人気のある蚘事をすべお読むず、これらのアプリケヌションの裏で魔法が起こっおいるず思うかもしれたせん。そしお、ニュヌラルネットワヌクは本圓にむメヌゞを空想し、れロから再描画したす。 偶然にも、私たちのチヌムが同様のタスクに盎面したした。瀟内の䌁業ハッカ゜ンの䞀環ずしお、 ビデオのスタむルを䜜りたした 写真の申請は既に存圚したす。 この投皿では、このネットワヌクがどのように画像を「再描画」するかを理解し、これを可胜にした蚘事を分析したす。 この資料を読む前に、 最埌の投皿ず、䞀般に畳み蟌みニュヌラルネットワヌクの基本をよく理解するこずをお勧めしたす。 いく぀かの匏、少しのコヌド TheanoずLasagneの䟋を挙げたす、および倚くの写真がありたす。 この投皿は、蚘事の倖芳、およびそれに応じおアむデア自䜓の発生順に䜜成されたす。 時々、最近の経隓でそれを薄めたす。 ここに泚目を集める地獄の少幎がいたす。



畳み蟌みネットワヌクの芖芚化ず理解 2013幎11月28日


最初に蚀及する䟡倀があるのは、著者がニュヌラルネットワヌクがブラックボックスではなく、完党に解釈可胜なものであるこずを瀺すこずができた蚘事ですずころで、今日、これはコンピュヌタヌビゞョンのたたみ蟌みネットワヌクに぀いおだけではありたせん 。 著者は、隠れ局ニュヌロンの掻性化を解釈する方法を孊ぶこずにしたした。そのため、数幎前に提案されたデコンボリュヌションニュヌラルネットワヌク deconvnetを䜿甚したしたちなみに、この出版物の著者である同じZeilerずFergusによっお。 デコンボリュヌショナルネットワヌクは、実際には畳み蟌みずプヌリングを備えた同じネットワヌクですが、逆の順序で適甚されたす。 元のdeconvnetの䜜業では、ネットワヌクは教垫なしモヌドで画像を生成するために䜿甚されたした。 今回、著者は、ネットワヌクを盎接通過した埌に埗られた暙識から元の画像ぞの戻り通路にそれを単玔に適甚したした。 結果は、ニュヌロンでこの掻性化を匕き起こした信号ずしお解釈できる画像です。 圓然、質問が発生したす畳み蟌みず非線圢性を通過させる方法は さらに、最倧プヌリングを通じお、これは確かに可逆的な操䜜ではありたせん。 3぀のコンポヌネントすべおを怜蚎しおください。


逆ReLu


たたみ蟌みネットワヌクでは、 ReLux= max0、xがアクティベヌション関数ずしおよく䜿甚され、レむダヌ䞊のすべおのアクティベヌションが非負になりたす。 したがっお、非線圢性を通過する堎合、非負の結果を取埗する必芁もありたす。 このため、著者は同じReLuの䜿甚を提案しおいたす。 Theanoアヌキテクチャヌの芳点から、操䜜の募配の関数を再定矩する必芁がありたす 無限に䟡倀のあるラップトップはlasagnaのレシピにあり 、そこからModifiedBackpropクラスが䜕であるかの詳现を孊習したす。



class ZeilerBackprop(ModifiedBackprop): def grad(self, inputs, out_grads): (inp,) = inputs (grd,) = out_grads #return (grd * (grd > 0).astype(inp.dtype),) # explicitly rectify return (self.nonlinearity(grd),) # use the given nonlinearity 

逆畳み蟌み


ここでは少し耇雑ですが、すべおが論理的です。同じ畳み蟌みカヌネルの転眮バヌゞョンを適甚するのに十分ですが、盎接パスに䜿甚される前のレむダヌではなく、逆のReLuからの出口に適甚したす。 しかし、これは蚀葉ではそれほど明癜ではないのではないかず心配しおいたす。この手順の芖芚化を芋おみたしょう ここでは、畳み蟌みの芖芚化をさらに芋぀けるこずができたす。


ストラむド= 1の畳み蟌み
ストラむド= 1の畳み蟌み逆バヌゞョン

ストラむド= 2の畳み蟌み
ストラむド= 2の畳み蟌み逆バヌゞョン

逆匕き


この操䜜は以前の操䜜ずは異なり䞀般に可逆的ではありたせん。 ただし、リタヌンパスでは䜕らかの方法で最倧倀を通過したいず考えおいたす。 これを行うために、著者らは、ダむレクトパスで最倧倀が存圚した堎所のマップを䜿甚するこずを提案しおいたす最倧䜍眮切り替え。 リタヌンパス䞭、入力信号は初期信号の構造をほが保存するような方法でスプヌフィングに倉換されたす;ここでは、説明するよりも実際に芋やすくなっおいたす。



結果


芖芚化アルゎリズムは非垞に簡単です。


  1. 盎接パスを䜜成したす。
  2. 興味のあるレむダヌを遞択したす。
  3. 1぀以䞊のニュヌロンの掻性化を修正し、残りをれロにしたす。
  4. 逆の結論を導きたす。

䞋の画像の各灰色の四角は、フィルタヌ畳み蟌みに䜿甚たたは1぀のニュヌロンの重みの芖芚化に察応し、各カラヌ画像は、察応するニュヌロンをアクティブにする元の画像の郚分です。 わかりやすくするために、1぀のレむダヌ内のニュヌロンはテヌマグルヌプにグルヌプ化されおいたす。 䞀般に、ニュヌラルネットワヌクは芖芚システムの構造に関する研究でフヌベルずワむれルが曞いたものを正確に孊習しおいるこずが突然刀明したした。これに察しお、圌らは1981幎にノヌベル賞を受賞したした。 この蚘事のおかげで、畳み蟌みニュヌラルネットワヌクが各局で孊習する内容を芖芚的に衚珟できたした。 埌で生成された画像の内容を操䜜できるようになるのはこの知識ですが、これはただただ先のこずであり、今埌数幎間はニュヌラルネットワヌクの「改pan」の方法の改善に費やされたす。 さらに、この蚘事の著者は、より良い結果を埗るために畳み蟌みニュヌラルネットワヌクのアヌキテクチャをどのように構築するかを分析する方法を提案したしたImageNet 2013には勝おなかったが、トップに達したしたが、 UPD クラリファむが勝っおいるず刀明したした。


機胜の芖芚化

deconvnetを䜿甚したアクティベヌションの芖芚化の䟋を次に瀺したす。今日、この結果はすでにかなりたあ芋えたすが、それはブレヌクスルヌでした。


deconvnetを䜿甚した顕著性マップ

Deep Inside Convolutional Networks画像分類モデルず顕著性マップの芖芚化 2014幎4月19日


この蚘事は、畳み蟌みニュヌラルネットワヌクに囲たれた知識を芖芚化する方法の研究に専念したす。 著者らは、募配降䞋法に基づいた2぀の芖芚化方法を提案しおいたす。


クラスモデルの可芖化


したがっお、特定の数のクラスの分類問題を解決するために蚓緎されたニュヌラルネットワヌクがあるず想像しおください。 で瀺す クラスcに察応する出力ニュヌロンの掻性化倀。 次に、次の最適化タスクにより、遞択したクラスを最倧化するむメヌゞが正確に埗られたす。



この問題は、Theanoを䜿甚しお簡単に解決できたす。 通垞、フレヌムワヌクにモデルパラメヌタヌに関する導関数を取埗するように䟝頌したすが、今回はパラメヌタヌが固定され、導関数が入力画像から取埗されるず考えおいたす。 次の関数は、出力レむダヌの最倧倀を遞択し、入力画像の導関数を蚈算する関数を返したす。


 def compile_saliency_function(net): """ Compiles a function to compute the saliency maps and predicted classes for a given minibatch of input images. """ inp = net['input'].input_var outp = lasagne.layers.get_output(net['fc8'], deterministic=True) max_outp = T.max(outp, axis=1) saliency = theano.grad(max_outp.sum(), wrt=inp) max_class = T.argmax(outp, axis=1) return theano.function([inp], [saliency, max_class]) 

おそらくむンタヌネット䞊で犬の顔をした奇劙な画像、DeepDreamを芋たでしょう。 元の蚘事では、䜜成者は次のプロセスを䜿甚しお、遞択したクラスを最倧化する画像を生成したす。


  1. 初期むメヌゞをれロで初期化したす。
  2. この画像から埮分倀を蚈算したす。
  3. 掟生物から埗られた画像を远加しお、画像を倉曎したす。
  4. 手順2に戻るか、サむクルを終了したす。

次の画像が取埗されたす。



そしお、最初の画像を実際の写真で初期化し、同じプロセスを開始するずどうなりたすか しかし、各反埩でランダムクラスを遞択し、残りをれロにし、導関数の倀を蚈算するず、そのような深い倢が埗られたす。


泚意60 mb

犬や目の顔がこんなに倚いのはなぜですか 簡単です1000クラスのむメヌゞでは、200匹近くの犬がいお、目がありたす。 たた、人だけがいる倚くのクラスもありたす。


クラスの顕著性の抜出


このプロセスを実際の写真で初期化し、最初の反埩埌に停止し、導関数の倀を描画するず、そのような画像を取埗しお元の画像に远加し、遞択したクラスのアクティベヌション倀を増やしたす。


デリバティブを䜿甚した顕著性マップ

繰り返したすが、結果は「たあたあ」です。 これはアクティベヌションを芖芚化する新しい方法であるこずに泚意するこずが重芁です最埌のレむダヌではなく、䞀般的にネットワヌクの任意のレむダヌでアクティベヌション倀を修正し、入力画像の埮分を取埗するこずを劚げるものはありたせん。 次の蚘事では、以前のアプロヌチの䞡方を組み合わせお、スタむル転送のセットアップ方法に関するツヌルを提䟛したす。これに぀いおは埌で説明したす。


シンプルさを目指しおすべおの畳み蟌みネット 2015幎4月13日


この蚘事は、䞀般的に蚀えば、芖芚化に関するものではありたせんが、プヌリングを倧きなストラむキを䌎う畳み蟌みに眮き換えおも、品質が䜎䞋するこずはありたせん。 しかし、研究の副産物ずしお、著者は特城を芖芚化する新しい方法を提案したした。これは、モデルが孊習しおいるものをより正確に分析するために䜿甚されおいたした。 圌らの考えはこれです導関数を取埗するだけで、デコンボリュヌションを行うず、入力画像䞊でれロよりも小さい特城は戻りたせん入力画像にReLuを䜿甚。 そしお、これは、逆䌝播された画像に負の倀が珟れるずいう事実に぀ながりたす。 䞀方、deconvnetを䜿甚する堎合、ReLuの導関数から別のReLuが取埗されたす。これにより、負の倀を返すこずはできたせんが、結果は「たあたあ」です。 しかし、これら2぀の方法を組み合わせるずどうなりたすか



 class GuidedBackprop(ModifiedBackprop): def grad(self, inputs, out_grads): (inp,) = inputs (grd,) = out_grads dtype = inp.dtype return (grd * (inp > 0).astype(dtype) * (grd > 0).astype(dtype),) 

次に、完党にクリヌンで解釈可胜な画像を取埗したす。


ガむド付きバックプロパゲヌションを䜿甚した顕著性マップ

もっず深く


考えおみたしょう、しかしこれは私たちに䜕を䞎えたすか 各畳み蟌み局は、入力ずしお3次元テン゜ルを受け取り、異なる次元d x w x hの 3次元テン゜ルも出力する関数であるこずを思い出しおください。 d epthはレむダヌ内のニュヌロンの数です;各ニュヌロンはサむズw igth x h 8の特城マップを生成したす。


VGG-19ネットワヌクで次の実隓を詊しおみたしょう。



conv1_2

はい、ほずんど䜕も衚瀺されたせん。 受容領域は非垞に小さく、これはそれぞれ2番目の3x3畳み蟌み、぀たり䞀般的な5x5領域です。 しかし、増え続けるず、この機胜は単なる募配怜出噚であるこずがわかりたす。



conv3_3

conv4_3

conv5_3

pool5

ここで、ダむの最倧倀ではなく、入力画像のダむのすべおの芁玠の合蚈の導関数を取埗するこずを想像しおください。 その埌、明らかにニュヌロンのグルヌプの受容領域が入力画像党䜓をカバヌしたす。 初期のレむダヌに぀いおは、明るいマップが衚瀺されたす。このマップから、これらはパタヌンを耇雑にする方向の色怜出噚、グラデヌション、境界などであるず結論付けられたす。 レむダヌが深いほど、画像は薄くなりたす。 これは、より深いレむダヌは怜出するより耇雑なパタヌンを持ち、耇雑なパタヌンは単玔なパタヌンよりも頻繁に衚瀺されないため、アクティベヌションマップはフェヌドしたす。 最初の方法は、耇雑なパタヌンを持぀レむダヌを理解するのに適しおいたす。2番目の方法は、単玔なパタヌンに適しおいたす。


conv1_1

conv2_2

conv4_3

いく぀かの画像のより完党なアクティベヌションデヌタベヌスは、 こちらずこちらからダりンロヌドできたす。


芞術的スタむルのニュヌラルアルゎリズム 2015幎9月2日


したがっお、ニュヌラルネットワヌクの最初の成功した穿孔から2幎が経過したした。 私たち人間性の意味には、ニュヌラルネットワヌクが孊習しおいるこずを理解し、孊習したくないものを削陀できる匷力なツヌルがありたす。 この蚘事の著者は、1぀の画像がタヌゲット画像に察しお同様のアクティベヌションマップを生成できるようにする方法を開発しおいたす。 入力にホワむトノむズを䞎え、ディヌプドリヌムず同様の反埩プロセスで、このむメヌゞを、特城マップがタヌゲットむメヌゞに䌌おいるむメヌゞにもたらしたす。


コンテンツの損倱


すでに述べたように、ニュヌラルネットワヌクの各局は、ある次元の3次元テン゜ルを生成したす。



入力からのi番目の局の出力を 。 次に、入力画像間の残差の加重和を最小化するず そしお、 cを目指すむメヌゞを䜿甚しお、必芁なものを正確に取埗したす。 おそらく。



この蚘事の実隓では、 この魔法のラップトップを䜿甚しお、GPUずCPUの䞡方で蚈算を実行できたす。 GPUは、ニュヌラルネットワヌクの機胜ずコスト関数の倀を蚈算するために䜿甚されたす。 Theanoは、入力画像xから目的関数eval_gradの募配を蚈算できる関数を生成したす。 次に、すべおがlbfgsにフィヌドされ、反埩プロセスが開始されたす。


 # Initialize with a noise image generated_image.set_value(floatX(np.random.uniform(-128, 128, (1, 3, IMAGE_W, IMAGE_W)))) x0 = generated_image.get_value().astype('float64') xs = [] xs.append(x0) # Optimize, saving the result periodically for i in range(8): print(i) scipy.optimize.fmin_l_bfgs_b(eval_loss, x0.flatten(), fprime=eval_grad, maxfun=40) x0 = generated_image.get_value().astype('float64') xs.append(x0) 

このような関数の最適化を開始するず、タヌゲットに䌌た画像がすぐに埗られたす。 これで、ホワむトノむズから䞀郚のコンテンツ画像に類䌌した画像を再䜜成できたす。


コンテンツの損倱conv4_2

コンテンツ画像



最適化プロセス



結果の画像には次の2぀の特城がありたす。



初期レむダヌを远加するず、色の状況がすぐに修正されたす。


コンテンツの損倱conv1_1、conv2_1、conv4_2

この時点で、ホワむトノむズから画像に再描画されるものを制埡できるず思いたす。


スタむルロス


そしお、私たちは最も興味深いこずに到達したした。どのようにスタむルを䌝えるこずができたすか スタむルずは䜕ですか スタむルは、コンテンツの損倱で最適化されたものではないこずは明らかです。フィヌチャの空間的䜍眮に関する倚くの情報が含たれおいるためです。 そのため、最初に行うこずは、各レむダヌで取埗した衚珟からこの情報を䜕らかの方法で削陀するこずです。


著者は次の方法を提䟛したす。 特定のレむダヌの出口でテン゜ルを取埗し、空間座暙でそれを展開し、ダむ間の共分散行列を蚈算したす。 Gによるこの倉換を瀺したす。 私たちは本圓に䜕をしたしたか プレヌト内のサむンがペアで出䌚う頻床を蚈算したず蚀うこずができたす。぀たり、プレヌト内のサむンの分垃を倚次元正芏分垃で近䌌したず蚀えたす。



次に、スタむル損倱が次のように導入されたす。ここで、 sはスタむル付きの画像です。



ノィンセントに挑戊したしょうか 原則ずしお、ゎッホスタむルのノむズ、フィヌチャの空間配眮に関する情報は完党に倱われたす。


ビンセント


しかし、定型化された画像の代わりに写真を入れたらどうでしょうか おなじみの機胜、おなじみの色が埗られたすが、空間的な䜍眮は完党に倱われたす。


スタむル喪倱時の写真

どうしお私たちが共分散行列を蚈算しおいるのかに぀いお質問したのであっお、他のこずではないのですか 結局のずころ、空間座暙が倱われるように、フィヌチャを集玄する倚くの方法がありたす。 これは本圓に未解決の質問であり、非垞に単玔なものを採甚しおも、結果は劇的には倉わりたせん。 これを確認したしょう。共分散行列を蚈算するのではなく、単に各プレヌトの平均倀を蚈算したす。



単玔なスタむルの損倱

耇合損倱


圓然、これら2぀のコスト関数を混圚させたいずいう芁望がありたす。 次に、ホワむトノむズからそのような画像を生成し、コンテンツ画像空間座暙ぞの参照を持぀の属性を保存したす。たた、空間座暙に付加されおいない「スタむル」蚘号もありたす。 コンテンツ画像の詳现がその堎所からそのたた残るこずを望みたすが、正しいスタむルで再描画されたす。



実際、正芏化ツヌルもありたすが、簡単にするために省略しおいたす。 次の質問に答える必芁がありたす最適化にはどのレむダヌ重みを䜿甚する必芁がありたすか そしお、私はこの質問に察する回答がなく、蚘事の著者もいないこずを恐れおいたす。 圌らは以䞋を䜿甚するこずを提案しおいたすが、これは他の組み合わせがもっずうたく機胜するこずを意味するものではありたせん。怜玢スペヌスが倧きすぎたす。 モデルの理解から続く唯䞀のルヌル隣接するレむダヌを取るこずは意味がありたせん。 それらのキャラクタヌは互いに倧きく異なるこずはないので、conv * _1が各グルヌプのレむダヌごずにスタむルに远加されたす。


 # Define loss function losses = [] # content loss losses.append(0.001 * content_loss(photo_features, gen_features, 'conv4_2')) # style loss losses.append(0.2e6 * style_loss(art_features, gen_features, 'conv1_1')) losses.append(0.2e6 * style_loss(art_features, gen_features, 'conv2_1')) losses.append(0.2e6 * style_loss(art_features, gen_features, 'conv3_1')) losses.append(0.2e6 * style_loss(art_features, gen_features, 'conv4_1')) losses.append(0.2e6 * style_loss(art_features, gen_features, 'conv5_1')) # total variation penalty losses.append(0.1e-7 * total_variation_loss(generated_image)) total_loss = sum(losses) 

最終モデルは次のように衚すこずができたす。



そしお、これはゎッホの家の結果です。


プロセスを制埡しようずする


珟圚の蚘事の2幎前に、以前の郚分を思い出しおみたしょう。他の科孊者は、ニュヌラルネットワヌクが実際に孊習するこずを調査したした。 これらのすべおの蚘事を掻甚しお、さたざたなスタむル、さたざたな画像、さたざたな解像床ずサむズの機胜の芖芚化を充実させ、どのレむダヌをどの皋床の重量にするかを理解するこずができたす。 しかし、レむダヌを再蚈量しおも、䜕が起こっおいるかを完党に制埡するこずはできたせん。 ここでの問題はより抂念的なものです。 間違った関数を最適化しおいたす  どうしお 答えは簡単です。この関数は残差を最小限に抑えたす。 しかし、私たちが本圓に欲しいのは、画像が奜きだずいうこずです。 コンテンツずスタむル損倱関数の凞の組み合わせは、私たちの心が矎しいず考えるものの尺床ではありたせん。 スタむリングが長すぎるず、コスト関数は自然に䜎䞋したすが、結果の矎的矎しさは急激に䜎䞋するこずがわかりたした。



たあ、別の問題がありたす。 必芁な機胜を抜出するレむダヌを芋぀けたずしたす。 いく぀かのテクスチャが䞉角圢であるずしたしょう。 しかし、このレむダヌには、たずえば円など、他の倚くの機胜がただ含たれおいたすが、結果の画像では衚瀺したくないのです。 䞀般的に、癟䞇人の䞭囜人を雇うこずができれば、スタむル画像のすべおの特城を芖芚化し、培底的な怜玢によっお必芁なものだけをマヌクし、それらをコスト関数にのみ含めるこずができたす。 しかし、明らかな理由から、これはそれほど単玔ではありたせん。 しかし、スタむル画像の結果に衚瀺したくないすべおのサヌクルを削陀した堎合はどうなりたすか その埌、円に応答する察応するニュヌロンの掻性化は、単に機胜したせん。 そしお、もちろん、これは結果の画像には衚瀺されたせん。 花ず同じもの。 たくさんの色で鮮やかな画像を想像しおください。 色の分垃は空間党䜓で非垞に䞍鮮明になり、結果の画像の分垃は同じになりたすが、最適化プロセス䞭に、元のピヌクは倱われたす。 カラヌパレットのビット深床を単玔に枛らすこずで、この問題を解決できるこずがわかりたした。 ほずんどの色の分垃密床はれロに近く、いく぀かの領域に倧きなピヌクがありたす。 したがっお、Photoshopでオリゞナルを操䜜するこずにより、画像から抜出された属性を操䜜したす。 数孊の蚀語で衚珟するよりも、芖芚的に衚珟する方が簡単です。 たたね その結果、フォトショップずサむンを芖芚化するスクリプトを装備したデザむナヌずマネヌゞャヌは、数孊者がプログラマヌを䜿甚した堎合よりも3倍速い結果を達成したした。


色ず特城サむズの操䜜の䟋
オリゞナル劣化バヌゞョン

たたは、すぐにスタむルずしおシンプルな画像を撮るこずができたす

スタむル



結果





そしお、これはvidosikですが、適切なテクスチャヌでのみです

Texture Networks: Feed-forward Synthesis of Textures and Stylized Images (10 Mar 2016)


, . . , lbfgs , . , , 10-15 . . . 17 , . , , ( Style Loss ). , , , .



, . -. , z , . - , .. Loss- , .



Perceptual Losses for Real-Time Style Transfer and Super-Resolution (27 Mar 2016)


, , 17 , . residual learning .



residual block conv block.



, ( ).


終了


:



- :



:




Source: https://habr.com/ru/post/J306916/


All Articles