Guida alle attività di riconoscimento dei gesti

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

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

Questa attività opera su dati immagine con un modello di machine learning (ML) e accetta dati statici o un flusso continuo. L'attività restituisce i punti di riferimento della mano in coordinate dell'immagine, i punti di riferimento della mano in coordinate mondiali, la lateralità (mano sinistra/destra) e le categorie di gesti con la mano di più mani.

Prova!

Inizia

Inizia a utilizzare questa attività seguendo una di queste guide all'implementazione per la tua piattaforma di destinazione. Queste guide specifiche per piattaforma ti 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 dell'immagine di input: l'elaborazione include rotazione, ridimensionamento, normalizzazione e conversione dello spazio colore dell'immagine.
  • Soglia del punteggio: filtra i risultati in base ai punteggi di previsione.
  • Lista consentita e lista bloccata delle etichette: specifica le categorie di gesti riconosciute dal modello.
Input dell'attività Output dell'attività
Il riconoscitore di gesti accetta un input di uno dei seguenti tipi di dati:
  • Immagini statiche
  • Fotogrammi video decodificati
  • Feed video in diretta
Il riconoscitore di gesti restituisce i seguenti risultati:
  • Categorie di gesti con la mano
  • Lateralità delle mani rilevate
  • Punti di riferimento delle mani rilevate nelle coordinate dell'immagine
  • Punti di riferimento delle mani rilevate nelle 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 gli input di singole immagini.

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

LIVE_STREAM: la modalità per un live streaming dei dati di input, ad esempio da una videocamera. In questa modalità, resultListener deve essere chiamato per configurare un listener per ricevere i risultati in modo asincrono.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands Il numero massimo di mani che possono essere rilevate da GestureRecognizer. Any integer > 0 1
min_hand_detection_confidence Il punteggio di confidenza minimo per il rilevamento della mano da considerare riuscito nel modello di rilevamento del palmo. 0.0 - 1.0 0.5
min_hand_presence_confidence Il punteggio di confidenza minimo del punteggio di presenza della mano nel modello di rilevamento dei punti di riferimento della mano. In modalità Video e Live streaming di Gesture Recognizer, se il punteggio di confidenza della presenza della mano del modello di punti di riferimento della mano è inferiore a questa soglia, viene attivato il modello di rilevamento del palmo. In caso contrario, viene utilizzato un algoritmo di tracciamento delle mani leggero per determinare la posizione della mano o delle mani per il successivo rilevamento dei punti di riferimento. 0.0 - 1.0 0.5
min_tracking_confidence Il punteggio di confidenza minimo affinché il tracciamento delle mani venga considerato riuscito. Questa è la soglia IoU del riquadro di delimitazione tra le mani nel fotogramma corrente e nell'ultimo fotogramma. In modalità Video e Stream di Gesture Recognizer, se il monitoraggio non riesce, Gesture Recognizer 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 di 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 al di sotto del quale i risultati vengono rifiutati. Se impostato su 0, verranno restituiti tutti i risultati disponibili.
  • Lista consentita per le categorie: la lista consentita dei nomi delle categorie. Se non è vuoto, i risultati di classificazione la cui categoria non è inclusa in questo insieme verranno filtrati. Si esclude a vicenda con la denylist.
  • Lista bloccata per le categorie: la lista bloccata dei nomi delle categorie. Se non è vuoto, i risultati della classificazione la cui categoria è inclusa in questo insieme verranno filtrati. Si esclude a vicenda con la lista consentita.
    • Locale dei nomi visualizzati: any string
    • Risultati massimi: any integer
    • Soglia punteggio: 0.0-1.0
    • Lista consentita di categorie: vector of strings
    • Lista bloccata per le categorie: vector of strings
    • Locale dei nomi visualizzati: "en"
    • Risultati massimi: -1
    • Soglia punteggio: 0
    • Lista consentita per le categorie: vuota
    • Lista bloccata per le categorie: vuota
    custom_gestures_classifier_options Opzioni per configurare il comportamento del classificatore di 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 al di sotto del quale i risultati vengono rifiutati. Se impostato su 0, verranno restituiti tutti i risultati disponibili.
  • Lista consentita per le categorie: la lista consentita dei nomi delle categorie. Se non è vuoto, i risultati di classificazione la cui categoria non è inclusa in questo insieme verranno filtrati. Si esclude a vicenda con la denylist.
  • Lista bloccata per le categorie: la lista bloccata dei nomi delle categorie. Se non è vuoto, i risultati della classificazione la cui categoria è inclusa in questo insieme verranno filtrati. Si esclude a vicenda con la lista consentita.
    • Locale dei nomi visualizzati: any string
    • Risultati massimi: any integer
    • Soglia punteggio: 0.0-1.0
    • Lista consentita di categorie: vector of strings
    • Lista bloccata per le categorie: vector of strings
    • Locale dei nomi visualizzati: "en"
    • Risultati massimi: -1
    • Soglia punteggio: 0
    • Lista consentita per le categorie: vuota
    • Lista bloccata per le categorie: vuota
    result_callback Imposta il listener dei risultati per ricevere i risultati della classificazione in modo asincrono quando il riconoscitore di gesti è in modalità live streaming. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM ResultListener N/D N/D

    Modelli

    Gesture Recognizer utilizza un bundle di modelli con due bundle di modelli preconfigurati: un bundle di modelli di punti di riferimento della mano e un bundle di modelli di classificazione dei gesti. Il modello di punti di riferimento rileva la presenza di mani e la geometria della mano, mentre il modello di riconoscimento dei gesti riconosce i gesti in base alla geometria della mano.

    Nome modello Forma di input Tipo di quantizzazione Scheda del modello Versioni
    HandGestureClassifier 192 x 192, 224 x 224 float 16 info Più recenti

    Questa attività supporta anche la modifica del bundle del modello utilizzando Model Maker. Per saperne di più sull'utilizzo di Model Maker per personalizzare i modelli per questa attività, consulta la pagina Personalizzare i modelli per Gesture Recognizer.

    Bundle del modello 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 della mano all'interno delle regioni della mano rilevate. Il modello è stato addestrato su circa 30.000 immagini del mondo reale, nonché su diversi modelli sintetici di mani renderizzati sovrapposti a 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 del palmo localizza la regione delle mani nell'intera immagine di input, mentre 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 del palmo.

    Poiché il modello di rilevamento del palmo richiede molto più tempo, in modalità Video o Live stream, Gesture Recognizer utilizza il riquadro di delimitazione definito dai punti di riferimento della mano rilevati nel frame corrente per localizzare la regione delle mani nel frame successivo. In questo modo si riducono le volte in cui il modello di rilevamento del palmo attiva il riconoscitore di gesti. Solo quando il modello di punti di riferimento della mano non è più in grado di identificare un numero sufficiente di mani richieste o il tracciamento delle mani non riesce, viene richiamato il modello di rilevamento del palmo per rilocalizzare le mani.

    Pacchetto del modello di classificazione dei gesti

    Il bundle del modello di classificazione dei gesti può riconoscere questi comuni gesti della mano:

    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 riconoscitore di gesti restituisce il risultato "Nessuno". Se il modello non rileva le mani, il riconoscitore di gesti restituisce un valore vuoto.

    Il bundle del modello di classificazione dei gesti contiene una pipeline di rete neurale a due passaggi con un modello di incorporamento dei gesti seguito da un modello di classificazione dei gesti. Per maggiori dettagli, consulta la scheda Modello di classificazione dei gesti.

    Il modello di incorporamento dei gesti codifica le caratteristiche dell'immagine in un vettore di caratteristiche e 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 comuni gesti della mano introdotti sopra. Puoi estendere il bundle di modelli per riconoscere più gesti addestrando il tuo classificatore di gesti personalizzato. Per ulteriori dettagli, consulta la sezione Modelli personalizzati.

    Gesture Recognizer con classificatore di gesti predefinito e classificatore di gesti personalizzato preferisce il gesto personalizzato se entrambi i classificatori riconoscono lo stesso gesto nelle rispettive categorie. Se solo un classificatore di gesti riconosce il gesto, Gesture Recognizer 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 utilizzando la 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 bundle del modello. Prima di creare i tuoi modelli, ti consigliamo di utilizzare Model Maker per modificare quelli forniti per questa attività.

    Per saperne di più sulla personalizzazione di un modello per questa attività, consulta Personalizzare i modelli per Gesture Recognizer.