Elaborado pelo Google DeepDream

12

Eu já vi algumas perguntas neste site sobre o Deep Dream, no entanto, nenhuma delas parece realmente falar sobre o que o DeepDream está fazendo, especificamente. Até onde eu entendi, eles parecem ter alterado a função objetivo e também a retropropagação, de modo que, em vez de atualizar pesos, atualizam a imagem de entrada.

Gostaria de saber se alguém sabe exatamente o que o Google fez. Eles mencionam em um de seus artigos a imposição de anteriores Bayesianos quando realizam sua otimização, e com isso eu posso imaginar que não é difícil conseguir a rede neural para cuspir uma imagem para cada rótulo - podemos simplesmente defini-lo e depois otimizar o vetor de entrada adequadamente.

No entanto, a parte interessante do sonho profundo é que ele é feito por camada e, nesse sentido, não tenho muita certeza de como isso enfatiza os detalhes de uma maneira por camada.

Certamente, alimentar uma imagem fornecerá valores em cada neurônio, mas como podemos usar essas informações para exagerar os detalhes na imagem original? Eu lutei para encontrar algum artigo detalhado sobre isso.

Referências: Aqui o vzn respondeu a uma pergunta semelhante: /cs//a/44857/49671

Nesse link, há uma implementação do Deepdream, aqui: http://auduno.com/post/125362849838/visualizing-googlenet-classes

Exceto que ele não oferece exagero de recursos, conforme discutido aqui: http://googleresearch.blogspot.com/2015/06/inceptionism-going-deeper-into-neural.html

Onde ambos mostram a visualização de classes particulares e camadas específicas e dizem:

Em vez de prescrever exatamente qual recurso queremos que a rede amplifique, também podemos permitir que a rede tome essa decisão. Nesse caso, simplesmente alimentamos a rede com uma imagem ou foto arbitrária e deixamos a rede analisar a imagem. Em seguida, escolhemos uma camada e pedimos à rede para aprimorar o que foi detectado.

Prumo
fonte
2
Possível duplicata do Deep Dreamer
manlio 29/11

Respostas:

7

A idéia do DeepDream é a seguinte: escolha uma camada da rede (geralmente uma camada convolucional), passe a imagem inicial pela rede para extrair recursos na camada escolhida, defina o gradiente nessa camada igual às ativações em si e, em seguida, propore-o novamente para a imagem.

Por que isso faz sentido? Intuitivamente, amplifica os recursos que são ativados ao máximo na rede. Ao retropropagar esse gradiente, faremos uma atualização de imagem que aumentará qualquer uma das ativações existentes. Se houver um detector semelhante a um gato na camada e a imagem contiver algum patch que se parece um pouco com um gato, o DeepDream aumentará essa ativação atualizando esse patch para ser ainda mais semelhante a um gato. Como resultado, o DeepDream está tentando encontrar cães e gatos em todos os lugares da imagem (o conjunto de dados ImageNet tem muitos cães, portanto a rede possui muitos neurônios relacionados a cães).

objective_L2dx=x

Máxima
fonte