Apprendere l’estimazione della posizione utilizzando nuove tecniche di computer vision.

Learn position estimation using new computer vision techniques.

Introduzione

Trovare e tracciare le posizioni dei punti chiave o dei giunti del corpo in un’immagine o sequenza video è il compito della rilevazione della postura, comunemente indicata come stima della posa o rilevamento dei punti chiave. Cerca di comprendere e rappresentare la posizione e l’organizzazione spaziale delle persone o di altre cose in una scena. La rilevazione della posa gioca un ruolo cruciale e trova applicazioni in vari settori, tra cui la robotica e l’automazione, i giochi, la sicurezza e la sorveglianza, nonché il monitoraggio dello sport e del fitness. Consente una vasta gamma di applicazioni che coinvolgono l’interazione uomo-computer, l’analisi, l’animazione, la salute, la sicurezza e la robotica offrendo informazioni dettagliate sul movimento umano e sulle relazioni spaziali. In questo articolo, studieremo alcuni algoritmi eccitanti di rilevazione della posa utilizzando nuove tecniche di visione artificiale. Comprendi come, in quanto principiante, possiamo utilizzarli in un ambiente reale. Questi algoritmi sono:

  • OpenPose
  • PoseNet
  • MoveNet

Esamineremo anche due nuovi algoritmi recentemente contribuiti da Google che utilizzano l’architettura MobileNet V2. Questi due algoritmi sono MoveNet Lightning e MoveNet Thunder.

Obiettivi di apprendimento

  • Comprensione dei fondamenti: Imparare tutto quello che c’è da sapere sull’idea di stima della postura e perché è così cruciale per la visione artificiale.
  • Comprensione della rilevazione dei punti chiave: Conoscere i metodi di rilevamento dei punti chiave, che implicano la localizzazione di particolari componenti o punti chiave del corpo in un’immagine o video.
  • Associazione e tracciamento dei punti chiave: Imparare a tracciare i punti chiave nel tempo e ad associarli tra i frame per stimare la posa continua di una persona utilizzando l’associazione e il tracciamento dei punti chiave. Riconoscere le difficoltà e i metodi utilizzati in questo processo.
  • Preelaborazione dei dati: Sviluppare le tue competenze di modellazione addestrando modelli di stima della posa utilizzando set di dati annotati. Identificare le fasi coinvolte nella raccolta e nell’etichettatura dei dati di formazione, nella scelta di funzioni di perdita appropriate e nell’ottimizzazione delle prestazioni del modello.
  • Applicazioni e integrazione: Scoprire i diversi modi in cui la stima della posa nella visione artificiale viene utilizzata in aree come la realtà aumentata, il riconoscimento dei gesti, l’interazione uomo-computer e il riconoscimento delle azioni umane.

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

Architetture del modello

1. OpenPose

Il modello di rilevazione della posa OpenPose ha un’architettura complessa con diverse fasi e parti. Per trovare ed stimare i punti chiave di numerose persone in un’immagine o video, viene utilizzata una pipeline multi-stage. Il modello esamina prima l’immagine di input e fa uno sforzo per comprendere le sue caratteristiche. Il modello mappa queste caratteristiche per rappresentare vari aspetti dell’immagine, tra cui forme, colori e texture. Nella fase successiva, il modello si concentra sulla comprensione delle connessioni tra diverse parti del corpo.

Producono un altro insieme di mappe che illustrano i potenziali collegamenti tra diverse parti del corpo, come la connessione tra il polso e il gomito o la spalla e l’anca. Per determinare la vera posa di ciascuna persona, il modello utilizza un algoritmo per decifrare le mappe di collegamento. Analizza le mappe per stabilire le relazioni tra le componenti del corpo e costruisce un modello scheletrico completo di ogni posa.

Questi passaggi consentono al modello OpenPose di individuare e tracciare le posizioni di diverse persone in tempo reale con precisione ed efficienza.

2. PoseNet

La rete neurale convoluzionale (CNN) serve come fondamento per la progettazione del modello di rilevamento della posa PoseNet. Per estrarre informazioni utili, prende un’immagine di input e la fa passare attraverso diversi strati di elaborazione convoluzionale. Questi strati convoluzionali aiutano a catturare i numerosi modelli e strutture dell’immagine. Il metodo di stima della posa di una sola persona utilizzato da PoseNet si concentra sulla stima dei punti chiave della posa di una singola persona. Le coordinate 2D dei punti chiave del corpo possono essere direttamente regredite utilizzando l’architettura CNN. Ciò significa che il modello sviluppa la capacità di prevedere le coordinate X e Y dei giunti corporei come i polsi, i gomiti, le ginocchia e le caviglie durante la formazione.

La stima della posa è veloce e semplice grazie alla semplicità dell’architettura PoseNet, rendendolo ideale per applicazioni con risorse di elaborazione limitate, come browser web o smartphone. Offre un approccio rapido e semplice per determinare la posizione di una persona in un’immagine o video.

3. MoveNet

L’architettura del modello di rilevamento della posa di MoveNet è anche costruita utilizzando una rete neurale convoluzionale profonda (CNN). Utilizza un design mobile-friendly ottimizzato per operare su sistemi integrati e altri dispositivi con risorse limitate. MoveNet utilizza un approccio di stima della posa di una singola persona con l’obiettivo di stimare i punti chiave della posa di una persona. Inizia con una semplice rete di base, poi procede con le fasi di associazione dei punti chiave e di rilevamento dei punti chiave. La rete di base elabora l’immagine di input, isolando le caratteristiche significative. La fase di associazione dei punti chiave raffina ulteriormente i punti chiave tenendo conto delle loro dipendenze e delle relazioni geografiche. La fase di rilevamento dei punti chiave prevede i punteggi di confidenza e le posizioni esatte dei punti chiave del corpo.

Il design di MoveNet equilibra l’efficienza e la precisione, rendendolo adatto per la stima della posa in tempo reale su dispositivi con limitata potenza di calcolo. In diverse applicazioni, come il monitoraggio della forma fisica, la realtà aumentata e l’interazione basata su gesti, offre un metodo pratico per identificare e tracciare le posizioni umane.

Lightning e Thunder nella rilevazione della posa

Come versioni specializzate della famiglia di modelli MoveNet, Google ha creato i modelli di rilevamento della posa Lightning e Thunder. Nel 2021, il team di Lightning ha presentato una versione migliorata di Lightning appositamente progettata per la stima della posa estremamente veloce. È perfetto per le applicazioni con limitazioni di latenza rigide in quanto utilizza tecniche di compressione del modello e aggiornamenti architetturali per ridurre i requisiti di calcolo e ottenere tempi di inferenza rapidissimi. Il rilascio di Thunder nel 2022, d’altra parte, si concentra sulla stima della posa di più persone. Aumenta la capacità di MoveNet di identificare e seguire con precisione le posizioni di più persone contemporaneamente in situazioni live.

Sia i modelli Lightning che Thunder si distinguono dai metodi concorrenti fornendo una precisa stima della postura che è efficiente e adatta a determinati casi d’uso: Lightning per l’inferenza ultraveloce e il supporto universale dei dispositivi, e Thunder per una maggiore precisione e prestazioni. Questi modelli dimostrano la dedizione di Google allo sviluppo della tecnologia di rilevamento della posa per soddisfare una vasta gamma di esigenze applicative.

Implementazione della rilevazione della posa

Abbiamo bisogno di seguire alcune procedure per utilizzare il modello MoveNet Lightning per la rilevazione della posa su un’immagine. Per iniziare, assicurati di avere installato le librerie e le dipendenze software necessarie. Due framework di deep learning ampiamente utilizzati, TensorFlow e PyTorch, sono esempi di tali librerie. Successivamente, carica i pesi del modello MoveNet Lightning, generalmente disponibili in formato pre-addestrato. Una volta caricato il modello, preelabora l’immagine di input ridimensionandola alla dimensione di input appropriata e applicando eventuali normalizzazioni necessarie. Alimenta il modello con l’immagine preelaborata, quindi usa l’inferenza in avanti per ottenere i risultati. I punti chiave previsti per varie aree corporee, comunemente mostrati come coordinate (x, y), costituiranno l’output.

Infine, esegui qualsiasi post-elaborazione necessaria sui punti chiave, come il collegamento dei punti chiave per creare rappresentazioni scheletriche o l’applicazione di criteri di confidenza. I risultati della stima della posa sono migliorati da questa fase di post-elaborazione. Utilizzando il modello MoveNet Lightning per la rilevazione della posa su un’immagine, è possibile stimare e analizzare le posizioni delle persone all’interno dell’immagine seguendo questi passaggi.

Spiegazione per la rilevazione

È data qui una spiegazione dettagliata per la rilevazione della posa su un’immagine di input.

Cominciamo a costruire un modello MoveNet Lightning per l’implementazione in tempo reale della rilevazione della posa su dati video.

Prima di tutto, importiamo le librerie necessarie.

import tensorflow as tf
import numpy as np
from matplotlib import pyplot as plt
import cv2

Poi il passaggio più importante, il caricamento del nostro modello MoveNet Lightning single-pose. Single pose qui descrive che il modello sta per rilevare la posa di un singolo individuo, mentre la sua altra versione denominata multi-pose rileva le posizioni di più persone in un frame.

interpreter = tf.lite.Interpreter(model_path='lite-model_movenet_singlepose_lightning_3.tflite')
interpreter.allocate_tensors()

Punti chiave per il modello

Puoi scaricare questo modello da TensorFlow Hub. Ora, definiamo i punti chiave per il modello. I punti chiave sono aree o landmark unici sul corpo umano che vengono identificati e monitorati nel contesto dei modelli di rilevamento della posa come MoveNet. Questi punti chiave rappresentano importanti giunture e parti del corpo, consentendo una comprensione approfondita della postura corporea. I polsi, i gomiti, le spalle, i fianchi, le ginocchia e le caviglie sono punti chiave frequentemente utilizzati, oltre alla testa, agli occhi, al naso e alle orecchie.

EDGES = {
    (0, 1): 'm',
    (0, 2): 'c',
    (1, 3): 'm',
    (2, 4): 'c',
    (0, 5): 'm',
    (0, 6): 'c',
    (5, 7): 'm',
    (7, 9): 'm',
    (6, 8): 'c',
    (8, 10): 'c',
    (5, 6): 'y',
    (5, 11): 'm',
    (6, 12): 'c',
    (11, 12): 'y',
    (11, 13): 'm',
    (13, 15): 'm',
    (12, 14): 'c',
    (14, 16): 'c'
}

#Funzione per disegnare i punti chiave
def draw_keypoints(frame, keypoints, confidence_threshold):
    y, x, c = frame.shape
    shaped = np.squeeze(np.multiply(keypoints, [y,x,1]))
    
    for kp in shaped:
        ky, kx, kp_conf = kp
        if kp_conf > confidence_threshold:
            cv2.circle(frame, (int(kx), int(ky)), 4, (0,255,0), -1) 

Il dizionario dei punti chiave per i sopracitati punti chiave sono,

naso:0, occhio sinistro:1, occhio destro:2, orecchio sinistro:3, orecchio destro:4, spalla sinistra:5, spalla destra:6, gomito sinistro:7, gomito destro:8, polso sinistro:9, polso destro:10, anca sinistra:11, anca destra:12, ginocchio sinistro:13, ginocchio destro:14, caviglia sinistra:15, caviglia destra:16

Ora, dopo aver disegnato le connessioni, vediamo come catturare il video attraverso la libreria OpenCV.

cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    
    cv2.imshow(frame)

cv2.VideoCapture, è una funzione importante di OpenCV per la lettura di video di input. In questo caso, 0 specifica che si cattura il video dalla fotocamera principale del laptop, mentre 1 viene utilizzato per le persone che utilizzano webcam esterne. Per utilizzare un video di input personalizzato, basta racchiudere il percorso dell’immagine tra virgolette.

Nell’estimazione della posa attraverso la visione artificiale, l’elaborazione dei frame e il ridimensionamento è molto importante. Fornisce funzionalità come:

  • Le immagini o i frame video di input sono uniformi per soddisfare la dimensione prevista dal modello ridimensionando il frame.
  • Utilizza il padding per risolvere la situazione in cui le dimensioni originali del frame sono inferiori alla dimensione di input richiesta dal modello. L’aggiunta di padding ingrandisce il frame per ospitare la dimensione di input richiesta, garantendo un’elaborazione uniforme indipendentemente dalle dimensioni di input.

Fare riferimento al codice dettagliato qui.

Conclusioni

Quindi, cosa abbiamo imparato da questo articolo? Esaminiamo alcuni importanti punti salienti di questo articolo.

  • Prospettiva di ricerca: la stima della posa è un argomento che è molto presente nella ricerca, con nuovi sviluppi e difficoltà che si presentano ogni giorno. È possibile avanzare in questo campo investigando nuovi algoritmi di visione artificiale, migliorando le tecniche attuali o affrontando particolari problemi legati alla stima della posa.
  • Importanza: la stima della posa contribuisce in modo significativo ad interazioni più naturali e intuitive tra persone e computer nell’interazione uomo-computer. Con l’aiuto di questo articolo, è possibile utilizzare la propria competenza per costruire e creare sistemi interattivi che reagiscono a gesti fisici, posture o movimenti corporei.
  • Progetti accademici: la stima della posa è un ottimo argomento per i progetti accademici, sia che venga svolta in modo indipendente o collaborativo. Sfide, dataset o applicazioni correlate alla stima della posa possono essere esplorate e si può creare un progetto che esponga la propria comprensione e le proprie abilità di applicazione pratica.
  • Un’ampia gamma di applicazioni: la stima della posa ha numerose applicazioni in vari campi, tra cui lo sport, la medicina, la videosorveglianza e le industrie dell’animazione e dell’intrattenimento.

Un metodo efficace per prevedere con precisione le pose umane in applicazioni in tempo reale è il modello di rilevamento della posa MoveNet, in particolare la sua forma migliorata MoveNet Lightning. Questi modelli possono rilevare e tracciare i punti chiave che rappresentano con precisione le diverse parti del corpo utilizzando reti neurali convoluzionali profonde. Sono ideali per l’implementazione su dispositivi con risorse limitate, come i telefoni cellulari e i sistemi embedded, grazie alla loro semplicità ed efficienza. I modelli MoveNet forniscono una soluzione flessibile per una varietà di applicazioni, tra cui il tracciamento della forma fisica, la realtà aumentata, l’interazione basata sui gesti e l’analisi di folla. Possono gestire sia la stima della posa singola che quella della posa multi-persona. Hanno apportato notevoli contributi al campo dell’identificazione della postura che dimostrano lo sviluppo della tecnologia della visione artificiale e la sua promessa di migliorare l’interazione uomo-computer e la comprensione del movimento.

Domande frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e vengono utilizzati a discrezione dell’autore.