introduzione
L'arte ha sempre trasceso eoni di esistenza umana. Possiamo vedere le loro tracce dalla preistoria, come l'arte harappana nella civiltà della valle dell'Indo, all'arte contemporanea nei tempi moderni.. Soprattutto, l'arte è stata un mezzo per esprimere la propria creatività, opinioni su come percepiamo il mondo. Come ha detto il mitico Leonardo Da Vinci,
"La pittura è poesia che si vede più di quanto si senta".
Quello che a volte dimentichiamo è che la maggior parte dell'arte segue uno schema. Uno schema che ci piace e ha un senso nel nostro cervello. La prossima volta che vedo un dipinto, prova a notare le pennellate su di esso. Vedrai un motivo emergere dalla vernice. NOI, come gli esseri umani, siamo esperti nel riconoscere questi modelli. I nostri meccanismi neurali si sono evoluti per essere eccezionalmente freddi nel corso degli anni nel riconoscere i modelli in natura..
Ora potresti chiedere perché sto blaterando sull'arte e sui modelli. Questo perché ti mostrerò come creare arte con l'aiuto di cervelli artificiali!! In questo articolo, construiremos una neuronale rossoLe reti neurali sono modelli computazionali ispirati al funzionamento del cervello umano. Usano strutture note come neuroni artificiali per elaborare e apprendere dai dati. Queste reti sono fondamentali nel campo dell'intelligenza artificiale, consentendo progressi significativi in attività come il riconoscimento delle immagini, Elaborazione del linguaggio naturale e previsione delle serie temporali, tra gli altri. La loro capacità di apprendere schemi complessi li rende strumenti potenti.. artificial que extraerá estilo de una imagen y lo replicará en la otra. Così sei pronto?
Sommario
- Cos'è l'arte neurale??
- Conoscere il punto cruciale
- Codificarlo
- Dove andare da qui??
- Risorse addizionali
Cos'è l'arte neurale??
Proviamo a capire questo argomento con un esempio.
Fonte [1]
L'immagine sopra è la famosa “La notte stellata” il Vincent Van Gogh. Basta guardare il dipinto per qualche minuto. Vedi? Noti le pennellate? Vedi le curve e i bordi che definiscono ogni singolo oggetto?, cosa ti rende così facile riconoscerli?
Ora facciamo un compito veloce. Cerca di ricordare gli schemi che vedi. Basta riempirti il cervello con ogni piccolo dettaglio. Fatto? Ok, ora dai un'occhiata alla seguente immagine.
Fonte [2]
Questa è una fotografia scattata da una città chiamata "Tubigen" situata in Germania. Per il prossimo passo del compito, chiudi gli occhi e prova a replicare lo stile di una notte stellata con questa immagine. Chiedilo a te stesso, se sei van gogh (Ipoteticamente, Certo!) E ti chiedono di disegnare questa fotografia tenendo conto degli stili che hai memorizzato prima, Come lo faresti?
Pensare
.
.
.
.
l'hai fatto? Eccellente! Hai appena creato arte neurale!
.
.
.
Vuoi vedere cosa può fare una rete neurale artificiale?
Fonte [2]
Potresti chiedere come una macchina ha svolto un compito del genere. È semplice una volta compresa l'essenza!
Quello che fa la rete neurale è cercare di estrarre il “Punti importanti” di entrambe le immagini, vale a dire, prova a riconoscere quali attributi definiscono l'immagine e impara da essa. Questi attributi appresi sono una rappresentazione interna della rete neurale, che puoi vedere qui sotto.
Fonte [2]
Quindi hai avuto modo di conoscere i concetti teorici coinvolti nell'arte neurale, ora conosciamo gli aspetti pratici della sua attuazione.
Entra nel cervello di un artista artificiale:
L'arte neurale funziona come segue:
- Definiamo prima le funzioni di perdita necessarie per generare il nostro risultato, vale a dire, perdita di stile, perdita di contenuto e totale perdita di variazione.
- Definiamo la nostra funzione di ottimizzazione, vale a dire, algoritmo di retropropagazione. Qui usiamo L-BFGS perché è più veloce ed efficiente per i dati più piccoli.
- Quindi impostiamo il nostro stile e gli attributi di contenuto del nostro modello.
- Poi passiamo un'immagine al nostro modello (preferibilmente la nostra immagine di base) e lo ottimizziamo per ridurre al minimo tutte le perdite che abbiamo definito sopra.
Conosceremo alcuni dei punti importanti che dovresti sapere prima di iniziare. Mentre la maggior parte dei fondamenti delle reti neurali sono trattati in questo articolo, Ne ripeterò alcuni e spiegherò alcune cose aggiuntive.
- Che cos'è un Funzione di perditaLa funzione di perdita è uno strumento fondamentale nell'apprendimento automatico che quantifica la discrepanza tra le previsioni del modello e i valori effettivi. Il suo obiettivo è quello di guidare il processo di formazione minimizzando questa differenza, consentendo così al modello di apprendere in modo più efficace. Esistono diversi tipi di funzioni di perdita, come l'errore quadratico medio e l'entropia incrociata, ognuno adatto a compiti diversi e...? La funzione di perdita è una funzione che calcola la differenza tra i valori previsti e i valori originali.. Fondamentalmente, indica quanti errori si sono verificati in un calcolo. In qualsiasi algoritmo di apprendimento automatico, la funzione di perdita viene utilizzata per stimare le prestazioni del modello sui dati. Ciò è particolarmente utile nel caso delle reti neurali, dove provi in modo iterativo a far funzionare meglio il tuo modello. Quando si implementa l'arte neurale, deve controllare tre funzioni di perdita, vale a dire:
- Perdita di contenuto, vale a dire, la differenza tra “contenuto” dell'immagine risultante e dell'immagine di base. Questo viene fatto per garantire che il tuo modello non si discosti troppo dall'immagine di base..
- Perdita di stile, vale a dire, la differenza tra “stile” dell'immagine risultante e dell'immagine di base. Per fare questo, devi prima calcolare la matrice di grammi di entrambe le immagini e poi trovare la loro differenza. La matrice di Gram non è altro che trovare la covarianza di un'immagine con se stessa. Questo viene fatto per mantenere lo stile nell'immagine risultante.
- Perdita totale di convalida, vale a dire, la differenza tra un pixel nell'immagine risultante e il pixel adiacente. Questo viene fatto in modo che l'immagine rimanga visivamente coerente..
- Che cos'è una funzione di ottimizzazione?? Quando abbiamo calcolato la funzione di perdita, intentamos minimizar nuestras pérdidas cambiando los parametriIl "parametri" sono variabili o criteri che vengono utilizzati per definire, misurare o valutare un fenomeno o un sistema. In vari campi come la statistica, Informatica e Ricerca Scientifica, I parametri sono fondamentali per stabilire norme e standard che guidano l'analisi e l'interpretazione dei dati. La loro corretta selezione e gestione sono fondamentali per ottenere risultati accurati e pertinenti in qualsiasi studio o progetto..... La funzione di ottimizzazione ci aiuta a scoprire quanto cambiamento è necessario per migliorare il nostro modello “ottimizzato”. Qui implementiamo un metodo di ottimizzazione chiamato algoritmo Broyden-Fletcher-Goldfarb-Shanno (BFGS). BFGS es una variante del algoritmo de descenso de gradienteGradiente è un termine usato in vari campi, come la matematica e l'informatica, per descrivere una variazione continua di valori. In matematica, si riferisce al tasso di variazione di una funzione, mentre in progettazione grafica, Si applica alla transizione del colore. Questo concetto è essenziale per comprendere fenomeni come l'ottimizzazione negli algoritmi e la rappresentazione visiva dei dati, consentendo una migliore interpretazione e analisi in... en el que se hace una diferenciación de segundo orden para encontrar el mínimo local. Leggi Questo articolo per avere una prospettiva matematica dell'algoritmo.
Ora che abbiamo capito quale sarà il nostro flusso per costruire un'arte neurale, Scendiamo e iniziamo a hackerare roba!
Codificarlo!
Questo Diwali è stato interessante per me. Ho deciso di fare qualche ricerca sull'arte neurale e su come l'India si illumina il giorno del Diwali. mi sono imbattuta in questa foto “India nella notte di Diwali”. E ho pensato di creare qualcosa di simile sulla stessa linea. Fare quello, uniremo le due immagini sotto con l'aiuto dell'arte neurale.
Fonte [3]
Quindi prima getteremo le basi.
passo 0: Installa su PC Duro e le sue dipendenze. Per questo, useremo un backend Theano. Cambia il tuo backend seguendo i passaggi menzionati qui. Cosa c'è di più, dovresti anche impostare l'ordine corretto per l'immagine. Nel file keras.json, dove è cambiato il backend?, sostituisci image_dim_ordering con 'tr'. Quindi dovrebbe assomigliare a questo,
"image_dim_ordering": "th"
passo 1: Quindi vai alla tua directory di lavoro e configura la struttura della directory come mostrato di seguito
|-- keras_NeuralStyle # questa è la tua directory di lavoro | |-- base_immagine.jpg # questa è la tua immagine di base | |-- reference_image.jpg # questa è la tua immagine di riferimento
passo 2: Avvia un taccuino jupyter nella tua directory di lavoro digitando jupyter notebook
e implementare il seguente codice. Ti fornirò solo una panoramica passo passo di ciò che fa ogni blocco.
- Primo, devi importare tutti i moduli necessari per implementare il codice
- Prossimo, imposta i percorsi delle immagini su cui vuoi proiettare.
- Definisci le variabili richieste e assegna loro i valori come mostrato di seguito. Nota che questi valori possono essere modificati, ma questo può cambiare drasticamente l'output. Cosa c'è di più, asegúrese de que el valor de la variabileIn statistica e matematica, un "variabile" è un simbolo che rappresenta un valore che può cambiare o variare. Esistono diversi tipi di variabili, e qualitativo, che descrivono caratteristiche non numeriche, e quantitativo, che rappresentano quantità numeriche. Le variabili sono fondamentali negli esperimenti e negli studi, poiché consentono l'analisi delle relazioni e dei modelli tra elementi diversi, facilitare la comprensione di fenomeni complessi.... img_nrows sea el mismo que img_ncols. Ciò è necessario affinché la matrice di grammi funzioni..
- Quindi definiamo le funzioni di supporto. Questi sono responsabili della gestione della pre-elaborazione delle immagini.
- Cree MarcatoriIl "Marcatori" son herramientas lingüísticas que se utilizan para guiar la estructura y el flujo de un texto. Su función principal es señalar relaciones entre ideas, como la adición, contraste o causa y efecto. Ejemplos comunes incluyen "Cosa c'è di più", "tuttavia" e "così". Estos elementos no solo mejoran la cohesión del escrito, sino que también facilitan la comprensión por parte del lector, haciendo el contenido más accesible y claro.... de posición de entrada para pasar imágenes al modelo
- Carica un modello di rete neurale pre-addestrato (si no sabe qué es el addestramentoLa formazione è un processo sistematico volto a migliorare le competenze, conoscenze o abilità fisiche. Viene applicato in vari ambiti, come lo sport, Formazione e sviluppo professionale. Un programma di allenamento efficace include la pianificazione degli obiettivi, Pratica regolare e valutazione dei progressi. L'adattamento alle esigenze individuali e la motivazione sono fattori chiave per ottenere risultati di successo e sostenibili in qualsiasi disciplina.... previo, vedere questa discussione)
- Stampa il riepilogo del modello per vedere quale modello è
- Memorizza i nomi di tutti i livelli della rete neurale come un dizionario insieme ai loro output
- Come sopra definito, configuriamo le funzioni di perdita
- Quindi impostiamo gli attributi di contenuto e stile …
- E imposta i gradienti e la funzione di output finale per l'arte neurale
- Definiamo le funzioni per calcolare perdite e gradienti
- Ora prendiamo l'immagine di base come input e la iteriamo per ottenere la nostra immagine finale. Sulla mia macchina locale, ci vuole un minuto per ottenere il risultato in un'iterazione. Secondo le tue risorse (e pazienza), ci vorrebbe al massimo 5 minuti ottieni il risultato. Puoi anche aumentare il numero di iterazioni per ottimizzare ulteriormente il risultato.
- E dopo una lunga attesa, avremo questa bellissima immagine!
NOTA: Il file di codice può essere visto su github qui.
Dove andare da qui??
Abbiamo assistito a una piccola dimostrazione di una scoperta significativa nel mondo dell'arte. Molte modifiche sono state apportate a questo metodo per renderlo esteticamente gradevole. Ad esempio, mi piace molto questa implementazione in cui hanno preso stili diversi e li hanno applicati a regioni diverse.
Le prime due immagini sono le mascherine, che aiutano a stabilire quale parte dovrebbe essere stilizzata. Le prossime due immagini rappresentano gli stili da utilizzare. L'ultima immagine è l'immagine di base a cui applicare lo stile.
Di seguito è riportato l'output generato dall'arte neurale.
Sembra incredibile, no? sono sicuro che, come me, ti piace anche provare l'arte neurale. Per aiutarti a iniziare con esso, Ho coperto le basi dell'arte neurale e come puoi creare la tua prima immagine. Sono sicuro che sei desideroso di esplorare di più e, così, Sto aggiungendo alcune risorse aggiuntive solo per te.
Risorse addizionali
Queste sono alcune delle migliori risorse che ho trovato sull'arte neurale. Vai avanti ed entra nell'affascinante mondo dell'arte neurale.
Riferimenti
Fonti di immagini
[1] https://www.wikiart.org/en/vincent-van-gogh/la-notte-stellata-1889
[2] https://arxiv.org/abs/1508.06576
[3] Google
Note finali
Spero che tu abbia trovato questo articolo stimolante.. Ora è il momento per te di dare un'occhiata e fare arte da solo!! Si crea un arte, condividilo con la community. Se hai qualche domanda, Mi piacerebbe interagire con te nei commenti.. E per fare esperienza di lavoro nelle reti neurali, no olvide probar nuestro problema de práctica de apprendimento profondoApprendimento profondo, Una sottodisciplina dell'intelligenza artificiale, si affida a reti neurali artificiali per analizzare ed elaborare grandi volumi di dati. Questa tecnica consente alle macchine di apprendere modelli ed eseguire compiti complessi, come il riconoscimento vocale e la visione artificiale. La sua capacità di migliorare continuamente man mano che vengono forniti più dati lo rende uno strumento chiave in vari settori, dalla salute...: Identificare le cifre.