Crea un'app Web che riconosca le posizioni yoga utilizzando un modello di Model Asset eXchange ospitato su Machine Learning eXchange

Nodo di origine: 1573049

Sommario

Questo modello di codice IBM Developer spiega come rilevare le pose umane in una determinata immagine utilizzando il modello Human Pose Estimator da Model Asset eXchange ospitato su Scambio di apprendimento automatico. Utilizzando le coordinate, le linee di posa create dal modello vengono assemblate in pose dell'intero corpo per ciascuno degli esseri umani rilevati nell'immagine.

Descrizione

Il Stimatore di posa umana il modello rileva gli umani e le loro pose in una data immagine. Il modello rileva prima l'essere umano nell'immagine di input e quindi identifica le parti del corpo, inclusi naso, collo, occhi, spalle, gomiti, polsi, fianchi, ginocchia e caviglie. Successivamente, ciascuna coppia di parti del corpo associate è collegata da una "linea di posa", come mostrato nella seguente immagine. Una linea potrebbe collegare l'occhio sinistro al naso, mentre un'altra potrebbe collegare il naso al collo.

Esempio di linea di posa

Ogni linea di posa è rappresentata da un elenco [x1, y1, x2, y2], in cui la prima coppia di coordinate (x1, y1) è l'inizio
punto della linea per una parte del corpo, mentre la seconda coppia di coordinate (x2, y2) è il punto finale della linea per il
altra parte del corpo associata. Le linee di posa sono assemblate in pose di tutto il corpo per ciascuno degli umani rilevati nel
immagine.

Il modello si basa sull'implementazione TF del Modello OpenPose. Il codice in questo repository distribuisce il modello come servizio Web in un contenitore Docker.

Yogait, un assistente di yoga che utilizza il modello MAX di stima della posa umana per indovinare quale posa yoga sta eseguendo un utente, utilizza un SVM pre-allenato per classificare le pose. Invece di utilizzare le linee cartesiane restituite dal modello MAX, Yogait utilizza una rappresentazione polare per eseguire la classificazione. Questo è stato fatto per rendere molto più facile classificare le pose. Invece di addestrare l'SVM su un sistema di coordinate xy, che richiederebbe traslazione e rotazione quando si aumentano i dati, la rappresentazione polare si basa solo sulla posizione delle articolazioni rispetto al centro del modello stimato.

Le coordinate [x, y] vengono convertite in [phi, rho] per ciascun giunto.

Conversione della posa

SVM esegue la classificazione su una versione appiattita dei vettori polari. Rispetto a una rappresentazione cartesiana, questa rappresentazione polare utilizza pochi dati e può eseguire la classificazione su un essere umano in qualsiasi parte di una cornice catturata. Se si dovesse usare la rappresentazione cartesiana, si dovrebbero eseguire tutte le pose al centro dell'inquadratura della telecamera.

Dopo aver completato il modello di codice, capirai come:

  • Costruisci un'immagine Docker del modello MAX di stima della posa umana
  • Distribuire un modello di apprendimento profondo con un endpoint REST
  • Genera una stima della posa per una persona in un fotogramma video utilizzando l'API REST del modello MAX
  • Eseguire un'applicazione Web che utilizza l'API REST del modello

Flow

Architettura del flusso Yogait

  1. Il server invia il video acquisito fotogramma per fotogramma dalla webcam all'API del modello.
  2. L'interfaccia utente Web richiede le linee di posa stimate per il frame dal server.
  3. Il server riceve i dati dall'API del modello e aggiorna il risultato all'interfaccia utente Web.

Istruzioni

Trova i passaggi dettagliati per questo modello nel README. Questi passaggi mostrano come:

  1. Imposta il modello MAX.
  2. Avvia l'app Web.
  3. Esegui localmente con uno script Python.
  4. Usa un quaderno Jupyter.

Fonte: https://developer.ibm.com/patterns/build-a-web-application-that-recognizes-yoga-poses-using-a-model-from-the-model-asset-exchange/

Timestamp:

Di più da Sviluppatore IBM