Transferência de Estilo – Styling Images with Convolutional Neural Networks

Criando belos efeitos de imagem

Greg Surma Blocked Unblock Seguir Seguindo 13 de janeiro

No artigo de hoje, vamos criar efeitos de transferência de estilo notáveis. Para isso, teremos que entender melhor como funcionam as Redes Neurais Convolucionárias e suas camadas. No final deste artigo, você poderá criar um aplicativo de transferência de estilo capaz de aplicar um novo estilo a uma imagem enquanto preserva seu conteúdo original.

Horizonte de Boston misturado com "A Noite Estrelada" de Van Gogh

Transferência de estilo

Antes de irmos para o nosso aplicativo de transferência de estilo, vamos esclarecer o que estamos nos esforçando para alcançar.

Vamos definir uma transferência de estilo como um processo de modificar o estilo de uma imagem enquanto preservamos seu conteúdo.

Dada uma imagem de entrada e uma imagem de estilo, podemos calcular uma imagem de saída com o conteúdo original, mas com um novo estilo. Ele foi descrito no artigo de Leon A. Gatys, Um Algoritmo Neural de Estilo Artístico , que é uma ótima publicação, e você deve definitivamente conferir.

 Imagem de Entrada + Imagem de Estilo -> Imagem de Saída (Entrada com Estilo) 

Como funciona?

  1. Usamos imagens de entrada e imagens de estilo e as redimensionamos para formas iguais.
  2. Carregamos uma Rede Neural Convolucional pré-treinada ( VGG16 ).
  3. Sabendo que podemos distinguir as camadas responsáveis pelo estilo (formas básicas, cores etc.) e as responsáveis pelo conteúdo (recursos específicos da imagem), podemos separar as camadas para trabalhar independentemente no conteúdo e no estilo.
  4. Em seguida, definimos nossa tarefa como um problema de otimização, no qual vamos minimizar:
  • perda de conteúdo (distância entre as imagens de entrada e saída – nós nos esforçamos para preservar o conteúdo)
  • perda de estilo (distância entre o estilo e as imagens de saída – nós nos esforçamos para aplicar um novo estilo)
  • perda de variação total (regularização – suavidade espacial para minimizar a imagem de saída)

5. Finalmente, definimos nossos gradientes e otimizamos com o algoritmo L-BFGS .