Guida alle attività di riconoscimento dei gesti

Una mano che fa il gesto del pollice in su, identificata come tale dal modello con un livello di confidenza del 63%

L'attività di riconoscimento dei gesti MediaPipe ti consente di riconoscere i gesti delle mani in tempo reale e fornisce i risultati dei gesti riconosciuti insieme ai punti di riferimento delle mani rilevate. Puoi utilizzare questa attività per riconoscere gesti specifici delle mani di un utente e richiamare le funzionalità dell'applicazione corrispondenti a questi gesti.

Questa attività opera sui dati delle immagini con un modello di machine learning (ML) e accetta dati statici o uno stream continuo. L'attività genera punti di riferimento delle mani in coordinate dell'immagine, punti di riferimento delle mani in coordinate del mondo, dominanza della mano (mano sinistra/mano destra) e le categorie di gesti delle mani di più mani.

Prova!

Inizia

Per iniziare a utilizzare questa attività, segui una di queste guide all'implementazione per la tua piattaforma di destinazione. Queste guide specifiche per la piattaforma illustrano un'implementazione di base di questa attività, utilizzando un modello consigliato, e forniscono esempi di codice con le opzioni di configurazione consigliate:

Dettagli attività

Questa sezione descrive le funzionalità, gli input, gli output e le opzioni di configurazione di questa attività.

Funzionalità

  • Elaborazione delle immagini di input: l'elaborazione include la rotazione, il ridimensionamento, la normalizzazione e la conversione dello spazio colore delle immagini.
  • Soglia di punteggio: filtra i risultati in base ai punteggi di previsione.
  • Lista consentita ed esclusa delle etichette: specifica le categorie di gesti riconosciute dal modello.
Input delle attività Output delle attività
Il Rilevamento dei gesti accetta un input di uno dei seguenti tipi di dati:
  • Immagini statiche
  • Fotogrammi video decodificati
  • Feed video in diretta
Il Rilevamento dei gesti restituisce i seguenti risultati:
  • Categorie di gesti delle mani
  • Mano dominante delle mani rilevate
  • Punti di riferimento delle mani rilevate nelle coordinate dell'immagine
  • Punti di riferimento delle mani rilevate in coordinate mondiali

Opzioni di configurazione

Questa attività ha le seguenti opzioni di configurazione:

Nome opzione Descrizione Intervallo di valori Valore predefinito
running_mode Imposta la modalità di esecuzione dell'attività. Esistono tre modalità:

IMMAGINE: la modalità per l'inserimento di singole immagini.

VIDEO: la modalità per i fotogrammi decodificati di un video.

LIVE_STREAM: la modalità per un live streaming di dati di input, ad esempio da una videocamera. In questa modalità, resultListener deve essere chiamato per configurare un ascoltatore per ricevere i risultati in modo asincrono.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands Il numero massimo di mani può essere rilevato dal GestureRecognizer. Any integer > 0 1
min_hand_detection_confidence Il punteggio di attendibilità minimo per il rilevamento della mano deve essere considerato positivo nel modello di rilevamento del palmo. 0.0 - 1.0 0.5
min_hand_presence_confidence Il punteggio di attendibilità minimo del punteggio di presenza della mano nel modello di rilevamento dei punti di riferimento della mano. In modalità Video e Live streaming del Rilevamento dei gesti, se il punteggio di confidenza della presenza della mano del modello di landmark della mano è inferiore a questa soglia, viene attivato il modello di rilevamento del palmo. In caso contrario, viene utilizzato un algoritmo di monitoraggio delle mani snello per determinare la posizione delle mani per il successivo rilevamento dei punti di riferimento. 0.0 - 1.0 0.5
min_tracking_confidence Il punteggio di attendibilità minimo per il rilevamento delle mani deve essere considerato positivo. Questa è la soglia IoU del riquadro di delimitazione tra le mani nel frame corrente e nell'ultimo frame. In modalità Video e in modalità Stream di Rilevamento dei gesti, se il rilevamento non riesce, Rilevamento dei gesti attiva il rilevamento della mano. In caso contrario, il rilevamento della mano viene ignorato. 0.0 - 1.0 0.5
canned_gestures_classifier_options Opzioni per la configurazione del comportamento del classificatore dei gesti predefiniti. I gesti predefiniti sono ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"]
  • Impostazioni internazionali dei nomi visualizzati: le impostazioni internazionali da utilizzare per i nomi visualizzati specificati tramite i metadati del modello TFLite, se presenti.
  • Risultati massimi: il numero massimo di risultati di classificazione con il punteggio più alto da restituire. Se < 0, verranno restituiti tutti i risultati disponibili.
  • Soglia di punteggio: il punteggio sotto il quale i risultati vengono rifiutati. Se impostato su 0, verranno restituiti tutti i risultati disponibili.
  • Lista consentita di categorie: la lista consentita dei nomi delle categorie. Se non è vuoto, i risultati di classificazione la cui categoria non è in questo insieme verranno filtrati. Esclusivo con la lista bloccata.
  • Lista bloccata delle categorie: la lista bloccata dei nomi delle categorie. Se non è vuoto, i risultati di classificazione la cui categoria è in questo insieme verranno filtrati. Si escludono a vicenda con la lista consentita.
    • Impostazioni internazionali per i nomi visualizzati: any string
    • Risultati massimi: any integer
    • Soglia di punteggio: 0.0-1.0
    • Lista consentita di categorie: vector of strings
    • Lista bloccata delle categorie: vector of strings
    • Impostazioni internazionali per i nomi visualizzati: "en"
    • Risultati massimi: -1
    • Soglia di punteggio: 0
    • Lista consentita di categorie: vuota
    • Lista bloccata delle categorie: vuota
    custom_gestures_classifier_options Opzioni per la configurazione del comportamento del classificatore dei gesti personalizzati.
  • Impostazioni internazionali dei nomi visualizzati: le impostazioni internazionali da utilizzare per i nomi visualizzati specificati tramite i metadati del modello TFLite, se presenti.
  • Risultati massimi: il numero massimo di risultati di classificazione con il punteggio più alto da restituire. Se < 0, verranno restituiti tutti i risultati disponibili.
  • Soglia di punteggio: il punteggio sotto il quale i risultati vengono rifiutati. Se impostato su 0, verranno restituiti tutti i risultati disponibili.
  • Lista consentita di categorie: la lista consentita dei nomi delle categorie. Se non è vuoto, i risultati di classificazione la cui categoria non è in questo insieme verranno filtrati. Esclusivo con la lista bloccata.
  • Lista bloccata delle categorie: la lista bloccata dei nomi delle categorie. Se non è vuoto, i risultati di classificazione la cui categoria è in questo insieme verranno filtrati. Si escludono a vicenda con la lista consentita.
    • Impostazioni internazionali per i nomi visualizzati: any string
    • Risultati massimi: any integer
    • Soglia di punteggio: 0.0-1.0
    • Lista consentita di categorie: vector of strings
    • Lista bloccata delle categorie: vector of strings
    • Impostazioni internazionali per i nomi visualizzati: "en"
    • Risultati massimi: -1
    • Soglia di punteggio: 0
    • Lista consentita di categorie: vuota
    • Lista bloccata delle categorie: vuota
    result_callback Imposta l'ascoltatore dei risultati in modo da ricevere i risultati della classificazione in modo asincrono quando il riconoscitore dei gesti è in modalità live streaming. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM ResultListener N/D N/D

    Modelli

    Il Rilevamento dei gesti utilizza un bundle di modelli con due bundle di modelli precompilati: un bundle di modelli di landmark della mano e un bundle di modelli di classificazione dei gesti. Il modello di landmark rileva la presenza delle mani e la loro geometria, mentre il modello di riconoscimento dei gesti riconosce i gesti in base alla geometria delle mani.

    Nome modello Forma di input Tipo di quantizzazione Scheda del modello Versioni
    HandGestureClassifier 192 x 192, 224 x 224 float 16 informazioni Ultime notizie

    Questa attività supporta anche la modifica del bundle di modelli utilizzando Model Maker. Per ulteriori informazioni sull'utilizzo di Model Maker per personalizzare i modelli per questa attività, consulta la pagina Personalizzare i modelli per il Riconoscitore di gesti.

    Set di modelli di punti di riferimento della mano

    Il bundle del modello di punti di riferimento della mano rileva la localizzazione dei punti chiave di 21 coordinate delle nocche delle mani all'interno delle regioni delle mani rilevate. Il modello è stato addestrato su circa 30.000 immagini del mondo reale, nonché su diversi modelli di mani sintetiche resi su vari sfondi. Di seguito è riportata la definizione dei 21 punti di riferimento:

    Codici per punti di riferimento specifici della mano

    Il bundle del modello di rilevamento dei punti di riferimento della mano contiene il modello di rilevamento del palmo e il modello di rilevamento dei punti di riferimento della mano. Il modello di rilevamento della mano localizza la regione delle mani dall'intera immagine di input e il modello di rilevamento dei punti di riferimento della mano trova i punti di riferimento nell'immagine della mano ritagliata definita dal modello di rilevamento della mano.

    Poiché il modello di rilevamento della mano è molto più laborioso, in modalità Video o Live streaming, il Rilevamento dei gesti utilizza la casella delimitante definita dai landmark della mano rilevati nell'inquadratura corrente per localizzare la regione delle mani nell'inquadratura successiva. In questo modo si riducono le volte in cui il Rilevamento dei gesti attiva il modello di rilevamento del palmo. Solo quando il modello di punti di riferimento della mano non è più in grado di identificare il numero richiesto di mani o il rilevamento delle mani non va a buon fine, viene invocato il modello di rilevamento del palmo per eseguire una nuova localizzazione delle mani.

    Pacchetto di modelli di classificazione dei gesti

    Il bundle del modello di classificazione dei gesti può riconoscere questi gesti comuni con le mani:

    0 - Unrecognized gesture, label: Unknown
    1 - Closed fist, label: Closed_Fist
    2 - Open palm, label: Open_Palm
    3 - Pointing up, label: Pointing_Up
    4 - Thumbs down, label: Thumb_Down
    5 - Thumbs up, label: Thumb_Up
    6 - Victory, label: Victory
    7 - Love, label: ILoveYou
    

    Se il modello rileva le mani, ma non riconosce un gesto, il gesto riconoscitore restituisce il risultato "Nessuna". Se il modello non rileva le mani, il riconoscimento dei gesti restituisce un valore vuoto.

    Il bundle del modello di classificazione dei gesti contiene una pipeline di reti neurali in due passaggi con un modello di embedding dei gesti seguito da un modello di classificazione dei gesti. Scopri di più nella scheda del modello di classificazione dei gesti.

    Il modello di embedding dei gesti codifica le caratteristiche dell'immagine in un vettore di caratteristiche, mentre il modello di classificazione è un classificatore di gesti leggero che prende il vettore di caratteristiche come input. Il bundle del modello di classificazione dei gesti fornito contiene il classificatore di gesti predefiniti, che rileva i 7 gesti comuni delle mani introdotti sopra. Puoi estendere il bundle di modelli per riconoscere più gesti addestrando il tuo classificatore di gesti personalizzato. Per ulteriori dettagli, consulta la seguente sezione Modelli personalizzati.

    Il Riconoscitore di gesti con classificatore di gesti predefiniti e classificatore di gesti personalizzati preferisce il gesto personalizzato se entrambi i classificatori riconoscono lo stesso gesto nelle rispettive categorie. Se un solo classificatore di gesti riconosce il gesto, il Rilevatore di gesti ne restituisce direttamente il gesto riconosciuto.

    Benchmark delle attività

    Ecco i benchmark delle attività per l'intera pipeline in base ai modelli preaddestrati sopra indicati. Il risultato della latenza è la latenza media su Pixel 6 che utilizza CPU / GPU.

    Nome modello Latenza della CPU Latenza GPU
    GestureRecognizer 16,76 ms 20,87 ms

    Modelli personalizzati

    Se vuoi migliorare o modificare le funzionalità dei modelli forniti in questa attività, puoi utilizzare Model Maker per modificare i modelli esistenti. I modelli personalizzati utilizzati con MediaPipe devono essere in formato .task, ovvero un file del pacchetto del modello. Ti consigliamo di utilizzare Model Maker per modificare i modelli forniti per questa attività prima di crearne uno tuo.

    Per ulteriori informazioni sulla personalizzazione di un modello per questa attività, consulta Personalizzare i modelli per il Riconoscitore di gesti.