Le innovazioni nell'ambito dell'intelligenza artificiale, il machine learning e l'analisi delle immagini trovano oggigiorno sempre più applicazioni pratiche, spostandosi dall'area della pura ricerca alle App divertenti che possono girare sui nostri smartphone. Si pensi, ad esempio, a FaceApp, in grado di "invecchiare" qualsiasi volto in modo automatico, e con appena qualche click.
Questo tipo di applicazioni, e soprattutto la loro accessibilità odierna, fino a una decina di anni fa era più simile alla fantascienza che all'uso quotidiano che facciamo della tecnologia. Eppure le cose sono cambiate. Recentemente, uno sviluppatore ha reso disponibile su GitHub uno script in Python che implementa un algoritmo pubblicato lo scorso anno sulla rivista Advances in Neural Information Processing Systems.
Tramite questo algoritmo, è possibile trasferire i cambiamenti delle espressioni facciali registrati su un video, trasferendoli su un'immagine statica che è quindi possibile animare. Il video seguente riassume rapidamente i concetti chiave alla base di questo algoritmo:
Installazione del tool
Per installare lo script, è innanzitutto necessario installare una versione di Python uguale o successiva alla 3.7.3. Possiamo assicurarcene eseguendo l'interprete Python da terminale e controllando il numero di versione.
Fatto ciò, scarichiamo il progetto pubblicato su GitHub. Se preferiamo, possiamo anche clonarlo con Git. Ottenuto il codice, spostiamoci nella directory principale
Creazione del virtual environment
Per prima cosa, è consigliabile creare e attivare un virtual environment. Assicuriamoci quindi di poterne creare uno, installando il modulo virtualenv
:
pip install virtualenv
Quindi, creiaamo il virtual environment:
virtualenv env
Per attivarlo, su Windows procediamo come segue:
env/Script/activate
Su Linux, invece:
source env/bin/activate
Installazione delle dipendenze
Installiamo poi i moduli richiesti:
pip install -r requirements.txt
Aggiungiamo quindi PyTorch e Torchvision, sfruttando ancora una volta pip:
pip install torch===1.0.0 torchvision===0.2.1 -f https://download.pytorch.org/whl/cu100/torch_stable.html
Otteniamo i file pre-addestrati
Una volta ottenuti tutti i requisiti, avremo la necessità di scaricare i file contenenti i parametri che l'algoritmo dovrà utilizzare per effettuare opportunamente il morphing. Questi file includono il modello, i pesi e tutto il necessario per la corretta esecuzione dello script.
Scarichiamo il file .zip disponibile a questo link, e scompattiamone il contenuto in una cartella che chiameremo extract.
Eseguiamo lo script
Non resta quindi che eseguire il nostro script. Abbiamo due opzioni:
- se vogliamo eseguirlo sfruttando la webcam, avviamo lo script come segue:
python image_animation.py -i <immagine_input> -c <path_checkpoint>
dove<path_checkpoint>
è uno dei due file .tar contenuti nella directory extract che avevamo creato in precedenza - se invece vogliamo utilizzare un file video come input, procediamo così:
python image_animation.py -i <immagine_input> -c <path_checkpoint> -v <video_input>