È possibile formare una rete neurale per disegnare un'immagine in un certo stile?


10

È possibile formare una rete neurale per disegnare un'immagine in un certo stile? (Quindi prende un'immagine e la ridisegna in uno stile per cui è stata addestrata.)

Esiste una tecnologia approvata per questo genere di cose? Conosco l'algoritmo DeepArt. È utile riempire l'immagine principale con un certo motivo (ad esempio l'immagine vangoghify), ma sto cercando qualcosa di diverso, ad esempio creare un fumetto in un certo stile dal ritratto in ingresso.


3
Un ostacolo alla formazione di una rete neurale da fotografia a cartone animato potrebbe essere la ricerca di un set di dati di formazione. Sembra che il set di dati dovrebbe contenere fotografie e cartoni animati che gli umani hanno disegnato sulla base di quelle fotografie. Non sono a conoscenza di tali set di dati.
Tanner Swett,

@TannerSwett Come pensi quante immagini sono necessarie per questo tipo di allenamento?
zavg,

Non sono un esperto, quindi posso solo fare un'ipotesi selvaggia. Penso che avresti bisogno di almeno mille immagini. Potresti aver bisogno di molto di più. A proposito, suggerisco di guardare questo strumento: github.com/hardmaru/sketch-rnn Questo strumento è stato usato per generare imitazioni di caratteri cinesi; forse uno strumento simile potrebbe generare imitazioni di cartoni animati.
Tanner Swett,

Potrei essere un po 'fuori moda come la mia formazione NN era qualche tempo fa, ma se stai pensando di allenare una rete con poche migliaia di immagini e ti aspetti che sia in grado di eseguire il rendering di immagini in uno stile che potresti raggiungere troppo lontano - se stai pensando che questo è un buon progetto di partenza, allora non farlo. Per ottenere ciò che descrivi richiederebbe un sacco di manipolazione manuale. Pensa alle conoscenze richieste per interpretare un'immagine e non solo alla corrispondenza del modello.
Peter Scott,

Vale anche la pena dare un'occhiata
Peter Scott

Risposte:


12

C'è un documento pertinente: LA Gatus, AS Ecker, M Bethge, 2015, A Neural Algorithm of Artistic Style . Citando dall'astratto,

Qui introduciamo un sistema artificiale basato su una rete neurale profonda che crea immagini artistiche di alta qualità percettiva. Il sistema utilizza rappresentazioni neurali per separare e ricombinare il contenuto e lo stile di immagini arbitrarie, fornendo un algoritmo neurale per la creazione di immagini artistiche.

Ecco la Figura 2 di questo documento:

inserisci qui la descrizione dell'immagine

C'è anche un un'implementazione open source molto popolare basata sulla torcia qui che è abbastanza facile da usare. Vedi il link per altri esempi.

Tieni presente che i calcoli sono pesanti e quindi l'elaborazione di singole immagini è lo scopo di questo lavoro.

Modifica: dopo aver verificato il tuo progetto DeepArt menzionato, sembra che stia usando le stesse tecniche. Non sono sicuro del perché questo non sia ciò che desideri, perché il concetto di trasferimento di stile è generale.


4
I cartoni animati esagerano e semplificano le caratteristiche di qualunque cosa stiano rappresentando, producendo forme che sono molto diverse dalle forme di una fotografia. Non credo che le reti neurali di trasferimento di stile esistenti lo abbiano mai fatto.
Tanner Swett,

@TannerSwett Guarda gli esempi qui: imgur.com/a/ue6ap . Alcuni di loro sono piuttosto animati.
amoeba,

@amoeba Sembrano da cartone animato, sì, ma nessuno di loro ha le proporzioni distorte che la maggior parte dei cartoni animati reali ha.
Tanner Swett,

Stiamo parlando del trasferimento di stile qui. Tutti gli esempi usano uno stile scelto a priori, in cui nessuno di questi è stato da cartone animato (perché l'output dovrebbe apparire da cartone animato, quando ha appreso su Van Gogh). Forse potresti semplicemente far funzionare il progetto open-source (non ho avuto problemi in passato) e provarlo con input-cartoon.
sascha,

7

Questo è un problema piuttosto difficile da risolvere. Puoi vedere alcuni esempi qui su come uno stile di cartone animato, ad esempio quello di Simpson, è stato applicato a un'immagine.

Un'immagine di cartone animato in genere non ha la struttura che dà questo artistico effetto . Il modo più semplice per provare ad applicarlo in qualche modo sarebbe quello di avere un face-tracker, quindi provare ad allineare due facce, ad esempio una faccia da cartone animato e una faccia umana, e quindi applicare questo. Potrebbe portarti da qualche parte, ma potrebbe anche sembrare strano. È quindi possibile annotare punti di riferimento nelle immagini per aiutare ulteriormente e fare una registrazione non rigida prima di questo. Questa è ancora in qualche modo una soluzione shitmix, ma il più vicino che mi viene in mente potrebbe funzionare per i volti.

Modificare:

Il commento di @TannerSwett aggiunge qualcosa a questo, è possibile andare sulle pagine di alcuni artisti e provare a trovare le loro illustrazioni e provare ad apprendere il "loro" stile. Continuo a non pensare che fornirà dati soddisfacenti o sufficienti, ma sarebbe una cosa interessante da testare. Al momento non esiste una soluzione generalmente disponibile, ma penso che ci siano sicuramente alcune persone che ci stanno lavorando e vedremo presto risultati migliori.

Penso che forse la strada da percorrere non sia l'approccio artistico alla rete neurale. Forse è meglio avere una rete in grado di classificare gli oggetti in un'immagine e quindi apprendere le corrispondenze tra gli oggetti e le loro controparti dei cartoni animati, quindi fondere i risultati in modo significativo.


1
Quell'esempio di Simpson mi sembra davvero fantastico @Gumeo
FabricioG il

1

Non dovrebbe essere troppo complicato da fare. Non ho letto l'articolo menzionato, ecco la mia ricetta:

Encoder automatici variazionali

Demo online con volti morphing: http://vdumoulin.github.io/morphing_faces/online_demo.html

e https://jmetzen.github.io/2015-11-27/vae.html per il codez.

Fondamentalmente, questo ti dà un modo per parametrizzare lo 'stile' nel tuo caso, ad esempio diciamo quanto dovrebbe essere ampia o sfocata la pennellata. Roba che dipende dallo stile particolare che stai cercando di emulare.

Nell'esempio sopra, diverse facce "trasformate" o "immaginate" sono una funzione dei parametri nello spazio latente. Nell'immagine qui sotto sarebbe quello che ottieni cambiando roba a livello di 'codice'.

Ecco l'idea di base: immagine originale a sinistra, versione stilizzata della stessa immagine a destra:

inserisci qui la descrizione dell'immagine

Ora, in teoria, se dovessi allenare un tale modello su un'immagine normale e un'immagine stilizzata come obiettivo e aggiungere delle circonvoluzioni, dovresti essere in grado di apprendere i filtri del kernel che corrispondono al tipo di "pennellate" che l'artista usa .

Ovviamente, ciò significa che è necessario disporre di alcuni esempi di immagini sia nella versione originale che in quella stilizzata. Un set di dati del genere sarebbe bello da donare alla comunità - se finisci per farlo, sarei molto desideroso di vedere questo tipo di lavoro.

In bocca al lupo!

L'articolo wiki sugli encoder automatici sarebbe un buon punto di partenza: https://en.wikipedia.org/wiki/Autoencoder

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.