O que acontece se você combinar um editor de fotos e uma rede neural
Um exemplo do trabalho de um editor de fotos neural Neural Photo Editor. No centro está a imagem original. Quadrados vermelhos e azuis mostram áreas de espaço oculto geradas após o treinamento da rede neural. Eles podem ser manipulados diretamente (como normalmente feito) e indiretamente, através do “pincel de contexto”.Você acha que o “Photoshop” faz maravilhas em distorcer a realidade? Sim, ele pode remover completamente uma pessoa de uma fotografia ou deixar o cabelo crescer como sua cabeça, como Elon Mask, com a ajuda de uma "escova de contexto". Mas isso não fica ao lado do que a rede neural é capaz, se for permitido editá-la com análise contextual. Esta é uma realidade completamente diferente. Uma rede neural pode fazer uma pessoa em uma foto sorrir, dar a sua namorada os recursos de Angelina Jolie e assim por diante. As possibilidades são infinitas.O primeiro sinal nesta área é o editor de fotos neurais Neural Photo Editor , desenvolvido por funcionários da Escola de Engenharia e Ciências Físicas da Universidade Heriot-Watt (Edimburgo, Reino Unido), juntamente com um colega da Renishaw .Avanços recentes na criação de modelos generativos para imagens levaram ao surgimento de redes neurais que, após o treinamento, geram amostras e interpolam a mais alta qualidade. Dois métodos principais inventados em 2013-2014 são usados nesta área: Autoencoder Variacional (VAE) e Rede Adversarial Generativa(GAN). Eles mostraram que uma rede neural é capaz de gerar estruturas multidimensionais complexas em imagens naturais.Os codificadores automáticos variacionais VAE são modelos gráficos probabilísticos que aprendem a maximizar os limites inferiores variacionais (com base na probabilidade dos dados) projetando o resultado da aprendizagem em um espaço latente e, em seguida, reconstruindo a imagem desse espaço.As redes adversárias generativas (GANs) dominam o modelo generativo treinando uma rede (o “discriminador”) para distinguir entre dados reais e gerados. Ao mesmo tempo, outra rede (“gerador”) está aprendendo a gerar amostras que o discriminador não distingue das reais.Ambos os métodos são adequados para gerar imagens em um espaço oculto - por exemplo, para adicionar um sorriso a uma careta. Cada um deles tem suas próprias vantagens e desvantagens.Neural Photo Editor O Neural Photo Editor é uma interface inovadora para trabalhar com o espaço oculto de modelos generativos. Este método permite que você faça edições semânticas específicas na imagem usando o "pincel de contexto", que altera indiretamente seu próprio vetor.A idéia principal em um editor de fotos neurais é alterar o espaço oculto de maneira intuitiva, ou seja, editando uma imagem regular. O usuário seleciona a cor e o tamanho do pincel - aplica-o à imagem resultante. A rede neural executa uma convolução reversa, calculando a diferença entre a cor dos pixels de origem e a cor do pincel e altera o espaço oculto para minimizar essa diferença. Como resultado, obtemos edições semanticamente significativas na imagem resultante - mudanças de cabelo, um sorriso, covinhas nas bochechas, etc.
Resultado da alteração de uma foto usando um editor de foto neuralUm exemplo simples. Se tirarmos uma foto de um rosto branco com cabelos pretos - e aplicar um pincel preto na testa, mas um editor de fotos neurais adicionará automaticamente os cabelos lá. O editor trabalha em tempo real em uma GPU decente.Para melhorar o resultado da edição, o editor tem a capacidade de editar a reconstrução da imagem após a transformação por uma rede neural (máscara de interpolação). Nesse caso, o resultado sai melhor (na ilustração abaixo).
Visualização da máscara de interpolação. Superior esquerdo para a direita: reconstrução, delta (erro) da reconstrução, imagem original. Abaixo: reconstrução modificada, delta, imagem resultanteAs imagens a seguir mostram exemplos da operação de uma rede neural na reconstrução e interpolação de fotografias dos bancos de dados CelebA, ImageNet e SVHN. À esquerda estão as imagens de origem, com cada passo à direita, são mostrados os resultados de uma reconstrução gradual na rede neural.
Os autores publicaram seu trabalho em 22 de setembro de 2016 no arXiv.org.O código do Neural Photo Editor é publicado no Github . No mesmo repositório, o código para uma rede neural adversária introspectiva é publicado, que é um híbrido de auto-codificadores variacionais (VAE) e redes adversárias generativas (GAN).Para iniciar o Neural Photo Editor, você precisará de:- Theano , uma biblioteca Python para definir, otimizar e avaliar com eficiência expressões matemáticas usando matrizes multidimensionais.
- Lasagne , uma biblioteca para construção e treinamento de redes neurais na Theano.
- Para melhorar o desempenho, é recomendável (mas não necessário) instalar o cuDNN , uma biblioteca da Nvidia para a aceleração por hardware de procedimentos padrão, como convolução direta e reversa, pool, normalização e ativação de camada. Isso faz parte do Nvidia Deep Learning SDK .
- numpy, scipy, PIL, Tkinter e tkColorChooser do kit de instalação do Python.
Source: https://habr.com/ru/post/pt397847/
All Articles