Riconoscimento della posa umana in tempo reale con la computer vision

Scrittura · 1 dic 2019

Riconoscimento della posa umana in tempo reale con la computer vision

Usare TensorFlow e PoseNet su un flusso video

Per un nuovo progetto entusiasmante ho sperimentato la computer vision con TensorFlow. Volevo ottenere il riconoscimento della posa umana in tempo reale, per pilotare proiezioni video interattive e giochi. Era ora di tuffarsi nel mondo del machine learning, dei tensori e della computer vision!

Computer vision

È davvero affascinante il campo scientifico interdisciplinare della computer vision, che studia come far acquisire ai computer una comprensione di alto livello a partire da immagini digitali e flussi video. Comprende le sfide di acquisire, elaborare e analizzare immagini digitali. Alla fine vuoi che il computer prenda decisioni in base a ciò che capisce del (complesso) mondo che lo circonda.

TensorFlow

TensorFlow è una piattaforma open source end-to-end per il machine learning, sviluppata in origine da Google. Si basa sul lavoro scientifico di vari studiosi ed è diventata nel tempo un ecosistema stabile e robusto di strumenti, librerie e risorse della community.

Il nome "TensorFlow" deriva dal concetto di "flusso di tensori". Un tensore si descrive meglio come una "cosa", per esempio qualcosa che il computer ha riconosciuto, o che cerca di analizzare. Tecnicamente un tensore è un array multidimensionale di valori numerici. Così il computer può confrontare "cose" diverse e vedere quanto le loro caratteristiche si somigliano (o differiscono).

La sfida principale nell'elaborazione di immagini in tempo reale è ridurre la complessità dell'immagine in pezzi gestibili, che si possano esprimere come tensori. Di solito l'algoritmo di computer vision si compone di molti passaggi. Passaggi come riconoscere una forma, ritagliare proprio quella forma, ridimensionarla, toglierle il colore, confrontare i contorni, eccetera. I tensori scorrono attraverso questi passaggi, da "non analizzato" a "riconosciuto", da cui il nome TensorFlow.

Potenza di calcolo

Il bello del machine learning moderno con TensorFlow è che in genere non servono hardware (molto) costosi per ottenere risultati. Il motivo è che il "lavoro pesante" si fa quando si addestrano i modelli di machine learning, che puoi immaginare un po' come "tabelle di riferimento". Questi modelli nascono analizzando dataset noti, in cui il computer riceve la "risposta" e ricava le caratteristiche del soggetto. Addestrare i modelli richiede tempo, potenza di calcolo e dati di addestramento.

Dati di addestramento

Google ha fatto una cosa davvero geniale: ha distribuito l'addestramento dei suoi modelli di machine learning a tutti noi. Sì, compreso te!

reCAPTCHA

Può darsi che ti sia già imbattuto in un "reCAPTCHA". È quella prova visiva da superare quando ordini qualcosa online o provi a registrarti da qualche parte. Protegge i proprietari di negozi e siti web dagli (spam)bot e serve a distinguere gli umani dai bot. Lo fa mostrando agli umani immagini (complesse) e chiedendo di identificare gli oggetti al loro interno. Come segnali stradali, incroci, auto, eccetera. Google usa questo feedback umano per addestrare i suoi modelli.

reCAPTCHA: da anni stai addestrando l'IA di Google!
reCAPTCHA: da anni stai addestrando l'IA di Google!

Il bello è che molte scoperte di Google sono rese pubbliche, e ci sono tanti progetti open source interessanti che permettono a noi, semplici sviluppatori, di fare cose incredibili con il machine learning.

Riconoscimento della posa umana con PoseNet

Uno dei modelli di machine learning disponibili è PoseNet. È un modello di visione che permette di stimare la posa di una persona in un'immagine o in un video. Lo fa determinando dove si trovano le articolazioni principali del corpo, come gomiti, mani, fianchi, ginocchia, caviglie, eccetera.

Io e il mini-me riconosciuti dal modello PoseNet
Io e il mini-me riconosciuti dal modello PoseNet

L'algoritmo Single Shot MultiBox Detector (SSD)

Il Single Shot MultiBox Detector è un algoritmo molto diffuso per rilevare oggetti in immagini e flussi video. È popolare per la sua velocità. Il principio è relativamente semplice da capire: l'algoritmo cerca di ridurre la complessità dell'immagine il più in fretta possibile, facendo analisi approfondite solo su mappe di caratteristiche rimpicciolite e semplificate.

Questo approccio funziona meglio se vuoi rilevare oggetti grandi, perché si fanno notare subito: producono abbastanza caratteristiche di alto livello da permettere previsioni già nelle prime fasi dell'algoritmo. Ottimo per il rilevamento del corpo, che è uno dei primi passi quando vuoi determinare le pose umane (prima guardi dove si trova una persona, poi qual è la sua posa).

Algoritmo MobileNet-SSD (immagine: hey-yahei.cn)
Algoritmo MobileNet-SSD (immagine: hey-yahei.cn)

Nel riconoscimento di immagini e persone i cinesi sono piuttosto bravi, per vari motivi. I loro algoritmi funzionano bene su hardware relativamente debole. Così la computer vision gira bene su ogni genere di dispositivo, in tempo reale!

Casi d'uso fighissimi

Poter rilevare le pose in tempo reale apre la strada a un sacco di cose divertenti. Puoi diventare, letteralmente, il controller di un gioco o l'input di un'installazione artistica interattiva!

Lo specchio PomPom

Con i suoi 928 pompon sferici di finta pelliccia, questa installazione artistica di Daniel Rozin è fantastica. La scultura è comandata da centinaia di motori che costruiscono le sagome degli spettatori usando la computer vision.

Specchio PomPom di finta pelliccia di Daniel Rozin
Specchio PomPom di finta pelliccia di Daniel Rozin

Trasformarti in un uccello: The Treachery of Sanctuary

Permettere alle persone di perdersi per un momento è stato possibile solo unendo discipline diverse. Questa fantastica installazione artistica interattiva diretta da Chris Milk è un gigantesco trittico che, grazie alla computer vision, accompagna gli spettatori attraverso le varie fasi del volo.

Trasformare le persone in uccelli con la computer vision
Trasformare le persone in uccelli con la computer vision

Conclusione

Lavorare a progetti creativi e sperimentali è un privilegio incredibile, ed è ciò che rende il mio lavoro così entusiasmante.

Con quantità di dati sempre più enormi, dare un senso digitale e autonomo a tutto questo è una grande sfida per il futuro: una sfida su cui voglio assolutamente lavorare!

← Altri scritti