É possível treinar redes neurais para desenhar em um determinado estilo?

10

É possível treinar redes neurais para desenhar em determinado estilo? (Por isso, ele pega uma imagem e a redesenha no estilo para o qual foi treinada.)

Existe alguma tecnologia aprovada para esse tipo de coisa? Eu sei sobre o algoritmo DeepArt. É bom preencher a imagem principal com certo padrão (por exemplo, imagem de vangoghify), mas estou procurando algo diferente - por exemplo, criar desenho animado em um determinado estilo a partir do retrato de entrada.

zavg
fonte
3
Um obstáculo ao treinamento de uma rede neural de fotografia para desenho animado pode ser encontrar um conjunto de dados de treinamento. Parece que o conjunto de dados precisaria conter fotografias e desenhos animados que os humanos desenharam com base nessas fotografias. Não conheço nenhum desses conjuntos de dados.
Tanner Swett
@TannerSwett Como você acha quantas imagens são necessárias para esse tipo de treinamento?
zavg
Eu não sou especialista, então só posso fazer um palpite. Eu acho que você precisaria de pelo menos mil imagens. Você pode precisar de muito mais do que isso. A propósito, sugiro olhar para esta ferramenta: github.com/hardmaru/sketch-rnn Essa ferramenta foi usada para gerar imitações de caracteres chineses; talvez uma ferramenta semelhante possa gerar imitações de desenhos animados.
precisa
Talvez eu esteja um pouco desatualizado, já que meu treinamento NN foi realizado há algum tempo, mas se você estiver pensando em treinar uma rede com alguns milhares de imagens e esperar que seja capaz de renderizar fotos em um estilo que você pode estar alcançando muito longe - Se você está pensando que este é um bom projeto inicial, não o faça. Para conseguir o que você descreve, seria necessário um monte de brincadeiras manuais. Pense no conhecimento necessário para interpretar uma imagem e não apenas na correspondência de padrões.
Peter Scott
Também vale a pena olhar em vox.com/2016/6/1/11787262/blade-runner-neural-network-encoding
Peter Scott

Respostas:

12

Existe um artigo relevante: LA Gatus, AS Ecker, M Bethge, 2015, A Algoritmo Neural do Estilo Artístico . Citando o resumo,

Aqui, apresentamos um sistema artificial baseado em uma rede neural profunda que cria imagens artísticas de alta qualidade perceptiva. O sistema utiliza representações neurais para separar e recombinar o conteúdo e o estilo de imagens arbitrárias, fornecendo um algoritmo neural para a criação de imagens artísticas.

Aqui está a Figura 2 deste artigo:

insira a descrição da imagem aqui

Há também uma implementação de código aberto muito popular baseada em tocha aqui, que é bastante fácil de usar. Veja o link para mais exemplos.

Lembre-se de que os cálculos são pesados ​​e, portanto, o processamento de imagens únicas é o escopo deste trabalho.

Edit: depois de verificar o seu projeto DeepArt mencionado, parece que ele está usando as mesmas técnicas. Não sei por que não é isso que você quer, porque o conceito de transferência de estilo é o mais geral possível.

Sascha
fonte
4
Os desenhos animados exageram e simplificam os recursos do que eles estão representando, produzindo formas muito diferentes das de uma fotografia. Não acredito que as redes neurais de transferência de estilos já tenham feito isso.
Tanner Swett
@TannerSwett Veja os exemplos aqui: imgur.com/a/ue6ap . Alguns deles são bastante animados.
Ameba
@amoeba Eles parecem caricaturais, sim, mas nenhum deles tem as proporções distorcidas que a maioria dos desenhos animados reais.
precisa
Estamos falando de transferência de estilo aqui. Todos os exemplos usam um estilo escolhido a priori, onde nenhum deles é caricatural (por que a saída deve parecer caricatural quando aprendida sobre Van Gogh). Talvez você possa simplesmente executar o projeto de código aberto (não tive problemas no passado) e experimentá-lo com entrada de desenho animado.
Sascha
7

Este é um problema bastante difícil de resolver. Você pode ver alguns exemplos aqui sobre como um estilo de desenho animado, por exemplo, do Simpson, foi aplicado a uma imagem.

Uma imagem de desenho animado geralmente não tem a estrutura que produz esse efeito artístico . A maneira mais fácil de tentar aplicar isso de alguma maneira seria ter um rastreador de rosto e, em seguida, tentar alinhar duas faces, por exemplo, uma face de desenho animado e uma face humana, e depois aplicar isso. Isso pode levá-lo a algum lugar, mas também pode parecer estranho. Você pode anotar pontos de referência nas imagens para ajudar ainda mais e fazer um registro não rígido antes disso. Essa ainda é uma solução de merda, mas o mais próximo que consigo pensar pode funcionar para rostos.

Editar:

O comentário de @TannerSwett acrescenta algo a isso: é possível acessar as páginas de alguns artistas e tentar encontrar suas ilustrações e aprender o estilo "deles". Ainda acho que isso não será satisfatório ou produzirá dados suficientes, mas isso seria uma coisa interessante a ser testada. No momento, não existe uma solução disponível no momento, mas acho que definitivamente existem algumas pessoas trabalhando nisso, e veremos melhores resultados em breve.

Acho que talvez o caminho a seguir não seja a abordagem da rede neural artística. Talvez seja melhor ter uma rede que possa classificar objetos em uma imagem e, em seguida, aprender as correspondências entre os objetos e seus colegas de desenho animado, depois misturar os resultados de alguma maneira significativa.

Gumeo
fonte
11
Esse exemplo de Simpson parece incrível para mim @Gumeo #
FabricioG #:
1

Não deve ser muito complicado de fazer. Ainda não li o artigo mencionado, aqui está minha receita:

Auto-codificadores variacionais

Demonstração online com rostos morphing: http://vdumoulin.github.io/morphing_faces/online_demo.html

e https://jmetzen.github.io/2015-11-27/vae.html para o codez.

Basicamente, isso fornece uma maneira de parametrizar o 'estilo' no seu caso, por exemplo, digamos o quão ampla ou difusa deve ser a pincelada. Coisas que dependem do estilo específico que você está tentando imitar.

No exemplo acima, diferentes faces 'morphed' ou 'imaginadas' são uma função dos parâmetros no espaço latente. Na imagem abaixo, isso seria o que você obtém alterando as coisas no nível do 'código'.

Aqui está a idéia básica: imagem original à esquerda, versão estilizada da mesma imagem à direita:

insira a descrição da imagem aqui

Agora, em teoria, se você treinar esse modelo em uma imagem normal e uma imagem estilizada como um alvo e adicionar convoluções, poderá aprender os filtros do kernel que correspondem ao tipo de "pinceladas" que o artista usa .

Obviamente, isso significa que você precisa ter alguns exemplos de imagens nas versões original e estilizada. Esse conjunto de dados seria bom doar para a comunidade - se você acabar fazendo isso, eu ficaria muito interessado em ver esse tipo de trabalho.

Boa sorte!

O artigo da wiki sobre codificadores automáticos seria um bom ponto de partida: https://en.wikipedia.org/wiki/Autoencoder

shuriken x blue
fonte