Crie suas próprias “pinturas neurais” com DeepStyle e Ubuntu

Você sabia que as redes neurais também podem pintar? Pesquisadores treinaram uma enorme rede neural para transformar fotografias em pinturas neurais que parecem ter sido pintadas por artistas famosos.

Você sabia que as redes neurais também podem pintar?  Pesquisadores treinaram uma enorme rede neural para transformar fotografias em pinturas neurais que parecem ter sido pintadas por artistas famosos.
Propaganda

Redes neurais podem fazer muitas coisas. Eles podem interpretar imagens, entender nossas vozes 6 Recursos do Google Now que mudarão como você pesquisa 6 Recursos do Google Now que mudarão como você pesquisa Você já pode estar usando o Google Now no seu dispositivo Android, mas está recebendo tudo o que pode isto? Saber sobre esses pequenos recursos pode fazer uma grande diferença. Leia mais e traduza conversas Como funciona o tradutor Star Trek do Skype Como funciona o tradutor Star Trek do Skype O novo recurso de tradução do Skype oferece algo sonhado desde Star Trek - uma maneira fácil de se comunicar entre os idiomas. Consulte Mais informação . Mas você sabia que eles também podem pintar?

Um recente trabalho de pesquisa (intitulado “Algoritmo Neural de Estilo Artístico”) iniciou uma enxurrada de discussões on-line com alguns exemplos visuais notáveis. Essencialmente, o artigo discute uma técnica para treinar uma rede neural profunda Microsoft vs Google - Quem lidera a corrida de Inteligência Artificial? Microsoft vs Google - Quem lidera a corrida de Inteligência Artificial? Pesquisadores de inteligência artificial estão fazendo progressos tangíveis, e as pessoas estão começando a falar seriamente sobre IA novamente. Os dois titãs que lideram a corrida pela inteligência artificial são o Google e a Microsoft. Leia mais para separar o estilo artístico da estrutura da imagem e combinar o estilo de uma imagem com a estrutura de outra. O resultado de tudo isso é que você pode treinar uma enorme rede neural para transformar fotografias em "pinturas neurais" que parecem ter sido pintadas por artistas famosos - "falsificações digitais", por assim dizer.

Aqui estão alguns exemplos do artigo. A primeira imagem é a original. As imagens posteriores são os resultados gerados, com a pintura da qual o estilo foi amostrado mostrado em miniatura.

PaperImages

Os pesquisadores originais não lançaram seu código, infelizmente. No entanto, alguns programadores intrépidos replicaram seus resultados nos últimos dias e seu código está disponível, código aberto na Internet. Tudo que você precisa para executar é uma máquina Linux e um pouco de paciência.

Hoje, vou orientá-lo sobre como fazer isso e mostrar alguns dos meus próprios resultados. Você pode pensar nisso como uma sequela solta do nosso tutorial DeepDream Crie seus próprios sonhos de febre artificial com o "DeepDream" do Google Crie seus próprios sonhos de febre artificial com o "DeepDream" do Google Você já viu as imagens estranhas saindo do DeepDream? Quer fazer o seu próprio? Não procure mais! Consulte Mais informação . É um pouco complicado, mas qualquer um com uma máquina Linux pode acompanhar - sem necessidade de experiência em codificação.

Eu transformei uma pintura de luz de Picasso em uma pintura no estilo de Picasso com #DeepStyle! pic.twitter.com/cjkEoIhVcF

- James Blaha (@ jamesblaha) 5 de setembro de 2015

Configurando o Software

Em primeiro lugar, se você não estiver com muita pressa ou não tiver uma máquina Linux, ainda poderá jogar com o DeepStyle usando o bot do Twitter do DeepForger (enviar uma imagem e um estilo, e ele eventualmente responderá com os resultados quer). Se você quiser processar mais imagens rapidamente (e com mais controle sobre os resultados), leia o tutorial.

Primeiro, certifique-se de ter uma cópia atualizada do Ubuntu (14.04 é o que eu usei). Você deve ter pelo menos alguns shows extras de espaço no disco rígido. Para mais informações, confira nosso tutorial sobre Ubuntu dual-boot junto com o Windows Tired Of Windows 8? Como Dual Boot Windows e Ubuntu Cansado do Windows 8? Como fazer o boot duplo do Windows e Ubuntu Se você descobrir que o Windows 8 não é bem sua xícara de chá, e você não tem nenhum caminho viável para fazer o downgrade, pode ser uma boa idéia inicializar com Linux para ter uma alternativa ... Mais . Você também precisará de privilégios de root, por isso certifique-se de fazer antes de prosseguir.

Ferramentas Básicas

Bem, este é um projeto de código aberto, então vamos querer ter o Git instalado. Git é o padrão ouro para software de controle de versão O que é Git & Por que você deve usar o controle de versão se você é um desenvolvedor O que é Git & Por que você deve usar controle de versão Se você é um desenvolvedor Como desenvolvedores web, na maioria das vezes nós tendemos a trabalhar em sites de desenvolvimento local e depois fazer o upload de tudo quando terminarmos. Isso é bom quando é só você e as mudanças são pequenas, ... Leia Mais. Praticamente todo projeto de código aberto que vale a pena conhecer está hospedado no Github.

Para baixar e instalar o Git, basta abrir um terminal e digitar “ sudo apt-get install git ” e concordar com as demandas do instalador.

Em seguida: vamos configurar algumas ferramentas básicas necessárias para fazer o software funcionar.

Primeiro, instale a Lua. Esta é a linguagem na qual a ferramenta está escrita. É bem simples. Basta digitar “ sudo apt-get install lua5.2 ” e seguir o processo de instalação.

Em segundo lugar, vamos pegar Luarocks. Esta é a ferramenta que facilita a instalação de outras ferramentas (você não ama o Linux?). Para este, digite “ sudo apt-get install luarocks ” e siga as etapas de instalação.

Terceiro, vamos instalar o Luajit. Este é um compilador just-in-time para Lua que tornará nossas vidas um pouco mais simples. Basta digitar “ sudo apt-get install luajit ”.

Por enquanto, tudo bem.

Eu sou um bot que cria falsificações de suas fotos no estilo de pintores famosos. Clique para instruções abaixo! pic.twitter.com/3MpThDNwRE

- O Forjador Profundo (@DeepForger) 5 de setembro de 2015

Frameworks

Em seguida, vamos instalar o Torch, uma estrutura de computação científica e aprendizado de máquina que compõe o backbone do aplicativo. Infelizmente, este não pode ser instalado usando o apt-get (o gerenciador de pacotes padrão do Ubuntu).

Felizmente, eles têm um instalador de uma linha que usa alguma mágica de linha de comando. Retorne ao seu terminal e digite “ curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash “.

Quando terminar, digite " luajit -ltorch ". Isso fará com que a interface da tocha e verifique se tudo foi instalado corretamente.

Saia disso.

Agora vamos instalar loadcaffe - um pacote específico da rede neural. Instale sua única dependência digitando “ sudo apt-get install libprotobuf-dev protobuf-compiler ”. Então você pode instalar o pacote usando " sudo luarocks install loadcaffe" .

@Johnicholas Seu colapso de falsificação, estilo avec pela Escola de Rembrandt van Rijn. #DigitalArt #StyleNet pic.twitter.com/pf0sZxWkaT

- The Deep Forger (@DeepForger) 7 de setembro de 2015

Dependências de verificação dupla

Finalmente, vamos atualizar preventivamente algumas coisas apenas para garantir que tudo corra bem.

Digite “ sudo luarocks install image ” para garantir que seu pacote de imagens esteja atualizado. Em seguida, insira “ luarocks install nn ”, que fará o mesmo com o pacote 'nn'.

Instalando o Deep Style

Bem! Neste ponto, estamos prontos para instalar o software em si. Para limpeza, crie uma nova pasta no seu diretório pessoal ('mkdir DeepStyle'). Em seguida, insira-o usando " cd Deepstyle ". Agora digite “ sudo git clone https://github.com/jcjohnson/neural-style.git".

Em seguida, temos que baixar o modelo. Faça uma xícara de café ou algo assim, isso vai demorar um pouco. Volte para o terminal e digite " sudo sh models/download_models.sh ". Isso iniciará um processo de download longo e elaborado. Se falhar devido a erros de permissão, tente dar permissões de leitura / gravação nas pastas relevantes, usando chmod.

@ 44thats44oars encomendou este #ProceduralArt #NeuralArt. pic.twitter.com/tbMH7gsvc8

- The Deep Forger (@DeepForger) 6 de setembro de 2015

Usando o estilo profundo

Ok, estamos bem para ir. Usar o software é bem simples.

Verifique se você está no diretório DeepStyle / estilo neural no terminal. Agora, você precisará de algumas imagens para trabalhar. Faça o download deles da Internet (ou qualquer outro) e, em seguida, copie-os para a pasta DeepStyle / estilo neural usando o navegador de arquivos.

Agora você pode usar a linha de comando para processar imagens individuais. O formato é bem direto:

th neural_style.lua -style_image YOURPAINTINGHERE.jpg" - content_image YOURPHOTOHERE.jpg" -gpu -1

(Obviamente, você precisará substituir os pedaços em ALL CAPS pelos nomes dos seus arquivos).

Isso fará com que a rede neural seja iniciada. Ele será executado por cerca de uma hora, lançando novas imagens parcialmente convergidas a cada alguns minutos até que seja concluído. O flag -gpu -1 impede que ele tente acessar sua GPU.

Depois de várias horas de tentativas (e de manipular o sistema operacional várias vezes), não consegui fazer com que o Ubuntu e o CUDA funcionassem bem com a minha GPU (uma NVIDIA GTX 970). Se você tiver mais sorte com isso, você vai querer instalar o CUDA e o cudann.torch (veja o repositório do github para mais informações). Se não, tudo bem - ainda funcionará usando sua CPU; Vai ser um pouco mais lento.

Se você tiver algum problema para fazer tudo isso funcionar, apenas me pergunte nos comentários e farei o possível para ajudá-lo.

Resultados

Aqui estão algumas imagens que eu criei nos últimos dias. Os resultados são mistos, mas muitos deles são bem impressionantes.

zack-paden-composite

Clique aqui para resolução completa.

Este é do meu amigo Zack em uma caminhada para Yellowstone. O estilo vem de uma pintura abstrata, criada por Theresa Paden. Eu estava curioso para ver como o sistema faria usando uma imagem com absolutamente nenhuma estrutura. Os resultados são bem legais e você pode definitivamente ver as semelhanças com a imagem do estilo.

jerseycity-demuth-composite

Clique aqui para resolução completa.

Este vem de cortesia de um dos meus artistas favoritos, Charles Demuth (veja: Incenso de uma Nova Igreja e Figura 5 em Ouro). Curiosamente, Demuth é uma das principais inspirações visuais para a arte de Team Fortress 2 Team Fortress 2: O Jogo Steam Free-to-Play, você deve jogar Team Fortress 2: O Jogo Steam Free-to-Play, você deve jogar Team Fortress 2 apenas um jogo rápido para testar gráficos e desempenho, ou é um jogo que vale a pena jogar repetidamente? Leia mais, como você pode ver na imagem do estilo.

Eu a alimentei com uma imagem de Jersey City que encontrei na Wikimedia. Os resultados são ... muito bons. Ele não captou a angularidade do estilo de Demuth, mas certamente captou a aparência suave e texturizada e a paleta de cores.

flores-okeefe-composite

Clique aqui para resolução completa.

Esta é uma tentativa de gerar uma O'Keeffe sintética, usando uma imagem bastante mundana de algumas flores que encontrei. Os resultados são, francamente, espetaculares. Esteticamente, este é um dos meus resultados favoritos. A riqueza das cores e formas de O'Keeffe transparece claramente. As bordas estratificadas das pétalas da flor tornam-se as bordas das folhas no fundo. As flores se dissolvem em cores, tornando-se quase abstratas.

Seria uma boa pintura se um humano fizesse isso. Estou muito tentado a passar alguns dias processando uma versão de resolução mais alta desta e tê-la emoldurada.

shannon-picasso-composite

Clique aqui para resolução completa.

Aqui está minha amiga Shannon em seu traje de Halloween, por meio de uma estampa de Picasso. Curiosamente, o dispositivo optou por pintar a parte inferior do rosto branco (semelhante ao layout de cores da peça de Picasso). Não tenho certeza se isso foi uma coincidência ou não, mas os resultados são impressionantes. Também parece ter identificado corretamente o cabelo de Shannon no lado esquerdo e o re-desenhou usando a cor e a linha do cabelo na imagem do estilo. Idem para o chapéu dela.

Esta é uma das peças em que as limitações da técnica começam a ficar claras. Se Picasso estivesse realmente pintando Shannon, ele teria jogado fora a estrutura do rosto dela e distorcido as feições para conseguir o efeito que queria. Esse sistema não entende esses tipos de conceitos de alto nível e é capaz de imitar apenas aspectos superficiais do estilo, como as linhas escuras e angulares e a paleta de cores.

eiffel-vangogh-composite

Clique aqui para resolução completa.

Bastante direta: uma foto da Torre Eiffel e a outra Noite Estrelada de Van Gogh. Ele faz um bom trabalho tornando a nuvem em um estilo Van Gogh-ey, apesar da ausência de nuvens na imagem original. Também faz um bom trabalho de traduzir a cena do dia para a noite.

Eu não tinha certeza por que decidiu dar a ponta da torre Fiffel como um pilar de fogo. Parece legal, mas não é justificável pelos dados de entrada. Então percebi que a imagem do estilo tem treze tiras amarelas verticais longas, na forma de reflexos na água. Esse é um cluster muito grande, com poucos dados de treinamento. O pobre provavelmente aprendeu que qualquer borda vertical de alto contraste deve ser uma dessas reflexões. Você pode ver listras verticais mais estranhas nas nuvens.

nebulosa-vangogh-composite

Clique aqui para resolução completa.

Mesma pintura de Van Gogh, mas desta vez eu dei algumas estrelas para pintar. Neste caso, a parte dos pilares da nebulosa da Águia. Eu gosto dos resultados - embora, mais uma vez, você possa ver sua obsessão por listras amarelas. Cada porção vertical do pilar se torna uma linha amarela brilhante e instável. Também é claramente perturbado pelo verde, o que não ocorreu nos dados de treinamento, e faz o possível para se livrar dele em favor do azul e do preto.

Tecnologia

Alguns resultados disso são extremamente convincentes, embora a técnica tenha limitações claras. Algumas imagens têm uma composição ruim, e o sistema tem dificuldade com artistas mais abstratos como Picasso - que famosamente gostava de distorcer seu assunto, espalhando suas características. O algoritmo pega suas linhas angulares e colide com cores, mas ainda é escravo dos valores de pixel da imagem. Não tem a compreensão de que você precisaria desviar-se muito do material de origem.

O que me excita sobre tudo isso é que não acho que essas limitações sejam fundamentais.

A abordagem usada aqui - treinar uma rede em uma imagem e usá-la para construir outra - é basicamente uma espécie de hack. Isso dá à rede muito poucos dados para trabalhar. Uma versão mais avançada desse aplicativo usaria uma rede com informações sobre muitas pinturas, e talvez até imagens reais, para dar bastante contexto à imagem que está tentando "pintar".

Uma compreensão profunda do estilo só pode existir em um contexto mais amplo. Você não pode derivar isso de uma única imagem. Projetar uma arquitetura que forneça ao sistema acesso a dados mais amplos pode permitir que ela obtenha uma compreensão mais "humana" da imagem e como os artistas representam diferentes elementos do mundo real. Essa rede pode produzir imagens mais abstratas e com melhor composição. Tais algoritmos deixariam de ser um brinquedo legal (assim) e se tornariam uma maneira de produzir arte real e original.

Qual é um pensamento muito peculiar, em alguns aspectos.

Fazendo suas próprias imagens

Se você obtiver um resultado decepcionante, poderá brincar um pouco com as opções para tentar obter resultados mais convincentes. A lista completa está no Github. Os mais importantes são

  • -content_weight -value Quanto pesar o termo de reconstrução de conteúdo. O padrão é 5e0.
  • -style_weight -value: Quanto peso dar à imagem do estilo. O padrão é 1e2.
  • -style_scale - value: Qual o tamanho dos patches de imagem que o sistema deve analisar (maior se torna mais abstrato). O padrão é 1.0.

Depois de obter tudo funcionando de acordo com sua satisfação, poste suas imagens mais interessantes nos comentários. Estou realmente interessado em ver o que vocês inventam.

Créditos da imagem: pintor do cérebro humano via Shutterstock

In this article