Crea il tuo "Neural Paintings" con DeepStyle e Ubuntu

Sapevi che le reti neurali possono anche dipingere? I ricercatori hanno addestrato un'enorme rete neurale per trasformare le fotografie in dipinti neurali che sembrano dipinti da artisti famosi.

Sapevi che le reti neurali possono anche dipingere?  I ricercatori hanno addestrato un'enorme rete neurale per trasformare le fotografie in dipinti neurali che sembrano dipinti da artisti famosi.
Annuncio pubblicitario

Le reti neurali possono fare molte cose. Possono interpretare le immagini, capire le nostre voci 6 Funzionalità di Google Now che cambieranno Ricerca di contenuti 6 Funzionalità di Google Now che cambieranno Modalità di ricerca È possibile che tu stia già utilizzando Google Now sul tuo dispositivo Android, ma ottieni tutto ciò che puoi dal vero? Conoscere queste piccole funzionalità può fare una grande differenza. Leggi altro e traduci conversazioni Come funziona il traduttore Star Trek di Skype Come funziona il traduttore Star Trek di Skype La nuova funzione di traduzione di Skype offre qualcosa di sognato da Star Trek, un modo semplice per comunicare attraverso le lingue. Leggi di più . Ma lo sapevi che possono anche dipingere?

Un recente articolo di ricerca (intitolato "A Neural Algorithm of Artistic Style") ha dato il via ad una raffica di discussioni online con alcuni esempi visivi sorprendenti. In sostanza, il documento discute una tecnica per addestrare una rete neurale profonda Microsoft vs Google - Chi guida la gara di Intelligenza Artificiale? Microsoft vs Google - Chi guida la gara di Intelligenza Artificiale? I ricercatori di intelligenza artificiale stanno facendo progressi tangibili e la gente sta iniziando a parlare seriamente di AI. I due titani che guidano la corsa all'intelligenza artificiale sono Google e Microsoft. Leggi di più per separare lo stile artistico dalla struttura dell'immagine e unire lo stile di un'immagine con la struttura di un altro. Il risultato di tutto questo è che è possibile addestrare un'enorme rete neurale per trasformare le fotografie in "dipinti neurali" che sembrano dipinti da artisti famosi - "contraffazioni digitali", per così dire.

Ecco alcuni esempi dall'articolo. La prima immagine è l'originale. Le immagini successive sono i risultati generati, con il dipinto da cui è stato campionato lo stile mostrato in miniatura.

paperimages

I ricercatori originali non hanno rilasciato il loro codice, sfortunatamente. Tuttavia, alcuni intrepidi programmatori hanno replicato i loro risultati negli ultimi giorni, e il loro codice è disponibile, open source su Internet. Tutto ciò che serve per eseguirlo è una macchina Linux e un po 'di pazienza.

Oggi vi illustrerò come farlo e vi mostrerò alcuni dei miei risultati. Puoi pensare a questo come a un sequel del nostro tutorial DeepDream Crea i tuoi sogni di febbre artificiali con "DeepDream" di Google Crea i tuoi sogni di febbre artificiali con "DeepDream" di Google Hai visto le immagini scattanti provenienti da DeepDream? Vuoi fare il tuo? Non guardare oltre! Leggi di più . È un po 'complicato, ma chiunque abbia una macchina Linux può seguire - nessuna esperienza di codifica necessaria.

Ho trasformato un dipinto leggero di Picasso in un dipinto in stile Picasso con #DeepStyle! pic.twitter.com/cjkEoIhVcF

- James Blaha (@jamesblaha) 5 settembre 2015

Impostazione del software

Prima di tutto, se non hai molta fretta o non hai una macchina Linux, puoi comunque giocare con DeepStyle usando il bot DeepForger su Twitter (mandagli un'immagine e uno stile, e alla fine risponderai con i risultati che hai volere). Se vuoi elaborare più immagini velocemente (e con più controllo sui risultati), continua a leggere per il tutorial.

Prima di tutto, assicurati di avere una copia aggiornata di Ubuntu (14.04 è quello che ho usato). Dovresti avere almeno qualche concerto extra di spazio sul disco rigido. Per ulteriori informazioni, consulta il nostro tutorial su Ubuntu dual-boot insieme a Windows Tired Of Windows 8? Come avviare Windows e Ubuntu stanchi di Windows 8? Come riavviare Windows e Ubuntu Se scopri che Windows 8 non è esattamente la tua tazza di tè e non hai un percorso percorribile per il downgrade, potrebbe essere una buona idea il dual boot con Linux per avere un'alternativa ... Leggi Di Più . Avrai anche bisogno dei privilegi di root, quindi assicurati di farlo prima di procedere.

Strumenti di base

A destra, questo è un progetto open-source, quindi vogliamo installare Git . Git è lo standard d'oro per il software di controllo delle versioni What Is Git e Why You Should Use Controllo di versione Se sei uno sviluppatore Cos'è Git e Perché dovresti usare il controllo di versione Se sei uno sviluppatore Come sviluppatori web, molto tempo tendiamo a lavorare su siti di sviluppo locali, quindi basta caricare tutto quando abbiamo finito. Questo va bene quando sei solo tu e le modifiche sono piccole, ... Per saperne di più. Praticamente ogni progetto open source che vale la pena conoscere è ospitato su Github.

Per scaricare e installare Git, basta aprire un terminale e digitare " sudo apt-get install git " e accettare le richieste dell'installatore.

Successivo: imposteremo alcuni strumenti di base necessari per far funzionare il software.

Innanzitutto, installa Lua. Questa è la lingua in cui è scritto lo strumento. È piuttosto semplice. Basta digitare " sudo apt-get install lua5.2 " e seguire la procedura di installazione.

Secondo, avremo Luarock. Questo è lo strumento che semplifica l'installazione di altri strumenti (non ami Linux?). Per questo, digita " sudo apt-get install luarocks " e segui i passaggi dell'installazione.

Terzo, installeremo Luajit. Questo è un compilatore just-in-time per Lua che renderà le nostre vite un po 'più semplici. Basta digitare " sudo apt-get install luajit ."

Fin qui tutto bene.

Sono un bot che crea falsi dalle tue foto nello stile di famosi pittori. Clicca qui per le istruzioni! pic.twitter.com/3MpThDNwRE

- The Deep Forger (@DeepForger), 5 settembre 2015

Frameworks

Quindi, installeremo Torch, un framework di calcolo scientifico e di apprendimento automatico che costituisce la spina dorsale dell'applicazione. Sfortunatamente, questo non può essere installato usando apt-get (il gestore di pacchetti standard di Ubuntu).

Fortunatamente, hanno un programma di installazione su una sola riga che usa un po 'di magia da linea di comando. Ritorna al tuo terminale e inserisci " 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 hai finito, digita " luajit -ltorch ". Questo farà apparire l'interfaccia della torcia e verificherà che tutto sia stato installato correttamente.

Esci da quello.

Ora installeremo loadcaffe, un pacchetto specifico per la rete neurale. Installa la sua unica dipendenza digitando " sudo apt-get install libprotobuf-dev protobuf-compiler ". Quindi puoi installare il pacchetto stesso usando " sudo luarocks install loadcaffe" .

@Johnicholas La tua demolizione, stile avec di School of Rembrandt van Rijn. #DigitalArt #StyleNet pic.twitter.com/pf0sZxWkaT

- The Deep Forger (@DeepForger) 7 settembre 2015

Doppie dipendenze di controllo

Infine, aggiorneremo preventivamente alcune cose solo per assicurarci che tutto vada liscio.

Digita " sudo luarocks install image " per assicurarti che il tuo pacchetto immagine sia aggiornato. Quindi, inserisci " luarocks install nn " che farà lo stesso per il tuo pacchetto 'nn'.

Installazione di Deep Style

Tutto apposto! A questo punto, siamo pronti per installare effettivamente il software stesso. Per motivi di pulizia, crea una nuova cartella nella tua home directory ('mkdir DeepStyle'). Quindi, inseriscilo, usando " cd Deepstyle ". Ora digita " sudo git clone https://github.com/jcjohnson/neural-style.git".

Il prossimo, dobbiamo scaricare il modello. Fai una tazza di caffè o qualcosa del genere, ci vorrà un po '. Torna al terminale e digita " sudo sh models/download_models.sh ". Ciò avvierà un processo di download lungo ed elaborato. Se fallisce a causa di errori di autorizzazione, prova a darti permessi di lettura / scrittura sulle cartelle rilevanti, usando chmod.

@ 44thats44oars ha commissionato questo #ProceduralArt #NeuralArt. pic.twitter.com/tbMH7gsvc8

- The Deep Forger (@DeepForger), 6 settembre 2015

Utilizzando Deep Style

Ok, siamo a posto. L'utilizzo del software è piuttosto semplice.

Assicurati di essere nella directory DeepStyle / neural nel terminale. Ora, avrai bisogno di alcune immagini su cui lavorare. Scaricali da Internet (o qualsiasi altra cosa), quindi copiali nella cartella DeepStyle / neural usando il browser di file.

Ora puoi usare la riga di comando per elaborare le singole immagini. Il formato è piuttosto semplice:

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

(Ovviamente, dovrai sostituire i blocchi in TUTTO MAIUSC con i nomi dei tuoi file).

Ciò farà iniziare la rete neurale. Funzionerà per circa un'ora, spargendo nuove immagini parzialmente convergenti ogni pochi minuti fino a quando non finisce. Il flag -gpu -1 lo interrompe dal tentativo di accedere alla tua GPU.

Dopo diverse ore di tentativi (e il funzionamento del sistema operativo diverse volte) non sono riuscito a far funzionare Ubuntu e CUDA con la mia GPU (una NVIDIA GTX 970). Se hai più fortuna con questo, ti consigliamo di installare CUDA e cudann.torch (vedi il repository github per maggiori informazioni). In caso contrario, va bene - funzionerà ancora usando la tua CPU; sarà solo un po 'più lento.

Se hai problemi a far funzionare tutto questo, chiedimi nei commenti e farò del mio meglio per aiutarti.

risultati

Ecco alcune immagini che ho generato negli ultimi due giorni. I risultati sono misti, ma molti di questi sono piuttosto impressionanti.

Zack-Paden composito

Clicca qui per la piena risoluzione.

Questo è del mio amico Zack in un'escursione a Yellowstone. Lo stile deriva da un dipinto astratto, creato da Theresa Paden. Ero curioso di vedere come avrebbe fatto il sistema usando un'immagine assolutamente senza struttura. I risultati sono piuttosto accurati e puoi sicuramente vedere le somiglianze con l'immagine di stile.

JerseyCittà-Demuth composito

Clicca qui per la piena risoluzione.

Questo viene gentilmente offerto da uno dei miei artisti preferiti, Charles Demuth (vedi: Incenso di una nuova chiesa e Figura 5 in oro). È interessante notare che Demuth è una delle principali ispirazioni visive per l'arte di Team Fortress 2 Team Fortress 2: Il gioco di Steam Free-to-Play Devi giocare a Team Fortress 2: Il gioco di Steam Free-to-Play che devi giocare è Team Fortress 2 solo un gioco veloce per testare la grafica e le prestazioni, o è un gioco che vale la pena giocare ripetutamente? Leggi di più, come puoi vedere dall'immagine di stile.

Gli ho dato un'immagine di Jersey City che ho trovato su Wikimedia. I risultati sono ... abbastanza buoni. Non ha colto l'angolosità dello stile di Demuth, ma certamente ha colto l'aspetto morbido e strutturato e la tavolozza dei colori.

fiori-Okeefe-composito

Clicca qui per la piena risoluzione.

Questo è un tentativo di generare un O'Keeffe sintetico, usando un'immagine abbastanza banale di alcuni fiori che ho trovato. I risultati sono, francamente, spettacolari. Esteticamente, questo è uno dei miei risultati preferiti. La ricchezza dei colori e delle forme di O'Keeffe emerge chiaramente. I bordi a strati dei petali del fiore diventano i bordi delle foglie sullo sfondo. I fiori stessi si dissolvono in colori, diventando quasi astratti.

Sarebbe un buon dipinto se un essere umano lo facesse. Sono molto tentato di passare un paio di giorni a mostrare una versione a risoluzione più alta di questa e incorniciarla.

shannon-picasso-composito

Clicca qui per la piena risoluzione.

Ecco la mia amica Shannon nel suo costume di Halloween, con una stampa di Picasso. È interessante notare che il dispositivo ha scelto di dipingere la parte inferiore del suo viso bianco (simile alla disposizione dei colori del pezzo Picasso). Non sono sicuro che sia stata una coincidenza o meno, ma i risultati sono sorprendenti. Sembra anche che abbia identificato correttamente i capelli di Shannon sul lato sinistro, e li ha ridisegnati usando il colore e il disegno dei capelli nell'immagine di stile. Idem per il suo cappello.

Questo è uno dei pezzi in cui i limiti della tecnica iniziano a diventare chiari. Se Picasso stesse effettivamente dipingendo Shannon, avrebbe gettato via la struttura del suo viso e distorto i lineamenti per ottenere l'effetto che voleva. Questo sistema non comprende quei tipi di concetti di alto livello ed è in grado di imitare solo aspetti superficiali dello stile, come le linee scure, angolari e la tavolozza dei colori.

eiffel-vangogh-composito

Clicca qui per la piena risoluzione.

Abbastanza semplice: una foto della Torre Eiffel e l' altra notte stellata di Van Gogh. Fa un buon lavoro rendendo la nuvola in stile Van Gogh-ey, nonostante l'assenza di nuvole nell'immagine originale. Fa anche un buon lavoro di traduzione della scena dal giorno alla notte.

Non ero sicuro del motivo per cui ha deciso di rendere la punta della torre Fiffel come una colonna di fuoco. Sembra interessante, ma non è davvero giustificabile dai dati di input. Poi mi sono reso conto che l'immagine di stile ha tredici strisce gialle verticali lunghe, in forma di riflessi nell'acqua. Questo è un cluster piuttosto massiccio, dati così pochi dati di addestramento. La cosa povera ha probabilmente imparato che qualsiasi bordo verticale ad alto contrasto deve essere uno di quei riflessi. È possibile vedere più righe verticali estranee nelle nuvole.

nebulosa-vangogh-composito

Clicca qui per la piena risoluzione.

Lo stesso dipinto di Van Gogh, ma questa volta gli ho dato delle vere stelle da dipingere. In questo caso, la parte dei pilastri della nebulosa Eagle. Mi piacciono i risultati, anche se, ancora una volta, puoi vedere la sua ossessione per le strisce gialle. Ogni porzione verticale del pilastro diventa una linea gialla luminosa e traballante. È anche chiaramente sconvolto dal verde, che non si è verificato nei dati di allenamento, e fa del suo meglio per sbarazzarsene a favore del blu e del nero.

Tecnologia

Alcuni risultati sono estremamente convincenti, sebbene la tecnica abbia limiti evidenti. Alcune immagini hanno una composizione scadente, e il sistema ha difficoltà con artisti più astratti come Picasso - che notoriamente amava distorcere la sua materia, spargendone le caratteristiche. L'algoritmo riprende le sue linee angolari e scontrando i colori, ma è ancora schiavo dei valori dei pixel dell'immagine. Non ha la comprensione di cui avresti bisogno per allontanarti troppo dal materiale di partenza.

Ciò che mi entusiasma di tutto questo è che non penso che queste limitazioni siano fondamentali.

L'approccio usato qui - formare una rete su un'immagine e usarlo per costruirne un'altra - è fondamentalmente una specie di hack. Fornisce alla rete pochissimi dati con cui lavorare. Una versione più avanzata di questa applicazione userebbe una rete che ha informazioni su molti dipinti, e forse anche immagini reali, per dare un sacco di contesto all'immagine che sta cercando di "dipingere".

Una profonda conoscenza dello stile può esistere solo in un contesto più ampio. Non puoi derivarlo da una singola immagine. Progettare un'architettura che dia al sistema l'accesso a dati più ampi potrebbe consentire di ricavare una comprensione più "umana" dell'immagine, e di come gli artisti rappresentino diversi elementi del mondo reale. Una tale rete potrebbe essere in grado di produrre immagini più astratte e con una composizione migliore. Tali algoritmi cessano di essere un giocattolo interessante (come questo) e diventano un modo per produrre un'arte reale e originale.

Qual è un pensiero molto particolare, in qualche modo.

Crea le tue immagini

Se si ottiene un risultato deludente, è possibile giocare un po 'con le opzioni per cercare di ottenere risultati più convincenti. L'elenco completo è sul Github. I più importanti sono

  • -content_weight -value Quanto pesa il termine di ricostruzione del contenuto. L'impostazione predefinita è 5e0.
  • -style_weight -value: Quanto peso dare all'immagine di stile. Il valore predefinito è 1e2.
  • -style_scale - value: quanto grande deve essere il patch delle immagini nel sistema (maggiore diventa più astratto). Il valore predefinito è 1.0.

Una volta che tutto funziona in modo soddisfacente, per favore pubblica le tue immagini più interessanti nei commenti. Sono davvero interessato a vedere quello che voi ragazzi inventare.

Crediti immagine: pittore del cervello umano tramite Shutterstock

In this article