Google DeepDream Elaborato


12

Ho visto alcune domande su questo sito su Deep Dream, tuttavia nessuno di loro sembra parlare in realtà di ciò che DeepDream sta facendo, in particolare. Per quanto ho raccolto, sembrano aver cambiato la funzione obiettivo e anche cambiato la backpropagation in modo che invece di aggiornare i pesi aggiornino l'immagine di input.

Mi chiedo se qualcuno sa esattamente cosa ha fatto Google. Citano in uno dei loro articoli che impongono i priori bayesiani quando eseguono la loro ottimizzazione, e con questo posso immaginare che ottenere la rete neurale per sputare un'immagine per ogni etichetta non sia così difficile - possiamo semplicemente impostare l'etichetta, e quindi ottimizzare il vettore di input di conseguenza.

Tuttavia, la parte interessante del sogno profondo è che lo fa per livello, e al riguardo non sono del tutto sicuro di come enfatizzi i dettagli in un modo per livello.

Certamente, l'alimentazione in un'immagine ti darà valori per ogni neurone, ma come possiamo usare queste informazioni per esagerare i dettagli nell'immagine originale? Ho faticato a trovare dettagli dettagliati su questo.

Riferimenti: Qui vzn ha risposto a una domanda simile: /cs//a/44857/49671

Da quel link, c'è un'implementazione di Deepdream, qui: http://auduno.com/post/125362849838/visualizing-googlenet-classes

Tranne che non offre un'esagerazione delle funzionalità come discusso qui: http://googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html

Dove entrambi mostrano la visualizzazione di classi particolari e livelli particolari e dicono:

Invece di prescrivere esattamente quale caratteristica vogliamo che la rete amplifichi, possiamo anche lasciare che la rete prenda quella decisione. In questo caso, forniamo semplicemente alla rete un'immagine o una foto arbitraria e lasciamo che la rete analizzi l'immagine. Scegliamo quindi un livello e chiediamo alla rete di migliorare qualunque cosa rilevata.


2
Possibile duplicato di Deep Dreamer
manlio,

Risposte:


7

L'idea di DeepDream è questa: scegli un livello dalla rete (di solito un livello convoluzionale), passa l'immagine iniziale attraverso la rete per estrarre le caratteristiche nel livello scelto, imposta il gradiente in quel livello uguale alle attivazioni stesse, e quindi backpropagate all'immagine.

Perché ha senso? Intuitivamente, amplifica le funzionalità che vengono attivate al massimo nella rete. Backpropagando questo gradiente, realizzeremo un aggiornamento dell'immagine che aumenterà qualsiasi delle attivazioni esistenti. Se c'è un rilevatore simile a un gatto nel livello e l'immagine contiene alcune patch che assomigliano un po 'a un gatto, DeepDream aumenta questa attivazione aggiornando questa patch per renderla ancora più simile a un gatto. Di conseguenza, DeepDream sta cercando di trovare cani e gatti ovunque nell'immagine (il set di dati ImageNet ha molti cani, quindi la rete ha molti neuroni legati ai cani).

objective_L2dX=X

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.