Una curiosa e sorprendente applicazione del machine learning alle foto: trasferire uno stile da un’immagine ad un’altra grazie alla computer vision.
In questa guida imparerai a creare splendide immagini con l’ausilio di tensorflow e di una rete neurale artificale.
Requisti Hardware
La maggior parte dei processi di machine learning richiede macchine performanti, questo non è da meno. Se sei privo di GPU con memoria RAM dedicata, e ti limiti a possedere un laptop con i5 o anche i7, ti conviene lasciare perdere.
Puoi sempre provare, ma i tempi di processing crescono a dismisura. Con una 1070, un i5 6700k (non OC) e 8GB di RAM ho ottenuto ottimi risultati. Usa questi dati come riferimento.
Download deep-photo-styletransfer-tf
Collegati alla respository di GitHub e scarica i file. Estrai poi l’archivio in una cartella da te scelta.
Deep Photo Style Transfer Tensorflow Repository | Download GitHub
Ora, affinché il sistema funzioni correttamente hai bisogno di un modello allenato ad effettuare questo tipo di operazioni. Come puoi leggere sul Readme, uno compatibile è il VGG-19.
Collegati al link sottostante e scarica il modello. (La differenza riguarda il numero di classi e altri parametri che tuttavia assumo importanza solo in lavori più complessi.)
VGG19 (*.NPY) | Download Google Drive
E’ normale che Drive non riesca a analizzare il file per riscontrare eventuali virus. Ti devi fidare.

Configurazione cartelle
Ora apri l’archivo zip della repository e nella cartella:
deep-photo-styletransfer-tf-master\vgg19
Inserisci il file:
vgg19.npy
Scegli le foto
Ai seguenti percorsi trovi una serie di foto e stili tra cui scegliere.
[stili] deep-photo-styletransfer-tf-master\examples\style
[foto] deep-photo-styletransfer-tf-master\examples\input
Ti fermo subito: non puoi prendere una bella foto del mare, spostarla in una di queste cartelle, premere invio e aspettarti che l’AI applichi tuto all’immagine.
Questo sistema, per poter funzionare, necessita delle maschere di segmentazione. Ossia un’immagine che, ricavata da una foto originaria, contenga un numero variabile di regioni uniformi e disgiunte che gli script usano per non creare una foto che sembri uscita dal deretano di un cinghiale. O dal culettino profumato di un bambino, ecco un’immagine meno forte.
Al momento quindi, dovrai limitarti a scegliere una foto da modificare e uno stile da usare tra quelli presenti nella repository.

Niente panico
Se vuoi davvero usare una tua foto, mi sto attrezazzando per trovare la giusta configurazione. Per il momento, siamo in fase LOG.
Creazione immagine ibrida
Con anaconda prompt è molto facile avviare l’ibridazione. Digita dal prompt:
python deep_photostyle.py --content_image_path--style_image_path --content_seg_path --style_seg_path --style_option 2
Aggiugnendo per ogni voce i percorsi delle immagini che vuoi usare. Dato che ti consoco, e hai la pazienza di un bambino che vuole aprire i regali la viglia di Natale, puoi anche fidarti di me e sperimentare questa combinazione:
python deep_photostyle.py --content_image_path ./examples/input/in56.png --style_image_path ./examples/style/tar9.png --content_seg_path ./examples/segmentation/in56.png --style_seg_path ./examples/segmentation/tar9.png --style_option 2
Potresti dover importare qualche libreria, leggi i messaggi di errore e con una rapida ricerca su Google avrai vita facile. Eventualmente, queste sono le librerie che devi installare:
pip install pillow
pip install scipy
pip insall numpy
A te il divertimento!
Alla prossima!
Un caldo abbraccio, Andrea.