Blog.

Guida Deep Photo Style Transfer in Tensorflow | Computer Vision


Autore
Andrea Provino
Data
Tempo di lettura
3 minuti
Categoria
Guide

deep-phoyo-style-transfer-tensorflow-guide

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.


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum