Guida alle attività di riconoscimento dei gesti

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

Questa attività opera sui dati di 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 nelle coordinate dell'immagine, i punti di riferimento della mano nelle coordinate del mondo, la mano (mano sinistra/destra) e le categorie dei gesti della 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 le piattaforme illustrano l'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 in input: l'elaborazione include la rotazione, il ridimensionamento, la normalizzazione e la conversione dello spazio colore dell'immagine.
  • Soglia punteggio: filtra i risultati in base ai punteggi delle previsioni.
  • Lista consentita e lista bloccata: specifica le categorie di gesti riconosciute dal modello.
Input attività Output attività
Il riconoscimento Gesti accetta l'input di uno dei seguenti tipi di dati:
  • Immagini statiche
  • Fotogrammi video decodificati
  • Feed video in diretta
Il riconoscimento 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 nelle coordinate del mondo

Opzioni di configurazione

Questa attività prevede le seguenti opzioni di configurazione:

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

IMAGE: la modalità per gli input 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 listener per ricevere i risultati in modo asincrono.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands Il numero massimo di mani può essere rilevato dall'GestureRecognizer. Any integer > 0 1
min_hand_detection_confidence Il punteggio di affidabilità minimo affinché il rilevamento della mano venga considerato efficace nel modello di rilevamento del palmo. 0.0 - 1.0 0.5
min_hand_presence_confidence Il punteggio di affidabilità minimo del punteggio della presenza di persone nel modello di rilevamento dei punti di riferimento della mano. In modalità Video e in live streaming del Riconoscimento gesti, se il punteggio di sicurezza della presenza della mano del modello del punto di riferimento della mano è inferiore a questa soglia, viene attivato il modello di rilevamento del palmo. Altrimenti, viene utilizzato un algoritmo di tracciamento della mano leggero per determinare la posizione delle lancette e del successivo rilevamento dei punti di riferimento. 0.0 - 1.0 0.5
min_tracking_confidence Il punteggio di affidabilità minimo affinché la registrazione della mano venga considerata riuscita. Si tratta della soglia IoU del riquadro di delimitazione tra le mani nel frame corrente e nell'ultimo frame. In modalità Video e in modalità stream del Riconoscimento di gesti, se il rilevamento non va a buon fine, quest'ultimo attiva il rilevamento delle mani. In caso contrario, il rilevamento della mano viene ignorato. 0.0 - 1.0 0.5
canned_gestures_classifier_options Opzioni per configurare il comportamento predefinito del classificatore di gesti. 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 gli eventuali metadati del modello TFLite.
  • Numero massimo di risultati: 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 dei quali i risultati vengono rifiutati. Se impostato su 0, verranno restituiti tutti i risultati disponibili.
  • Lista consentita delle categorie: la lista consentita dei nomi delle categorie. Se il campo non è vuoto, i risultati di classificazione la cui categoria non è presente in questo set verranno filtrati. Esclusiva a vicenda con la lista bloccata.
  • Lista bloccata categoria: la lista bloccata dei nomi di categoria. Se il campo non è vuoto, i risultati di classificazione la cui categoria rientra in questo set verranno filtrati. Esclusiva a vicenda con lista consentita.
    • Impostazioni internazionali dei nomi visualizzati: any string
    • N. massimo di risultati: any integer
    • Soglia punteggio: 0.0-1.0
    • Lista consentita della categoria: vector of strings
    • Lista bloccata categoria: vector of strings
    • Impostazioni internazionali dei nomi visualizzati: "en"
    • N. massimo di risultati: -1
    • Soglia punteggio: 0
    • Lista consentita della categoria: vuota
    • Lista bloccata categoria: 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 gli eventuali metadati del modello TFLite.
  • Numero massimo di risultati: 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 dei quali i risultati vengono rifiutati. Se impostato su 0, verranno restituiti tutti i risultati disponibili.
  • Lista consentita delle categorie: la lista consentita dei nomi delle categorie. Se il campo non è vuoto, i risultati di classificazione la cui categoria non è presente in questo set verranno filtrati. Esclusiva a vicenda con la lista bloccata.
  • Lista bloccata categoria: la lista bloccata dei nomi di categoria. Se il campo non è vuoto, i risultati di classificazione la cui categoria rientra in questo set verranno filtrati. Esclusiva a vicenda con lista consentita.
    • Impostazioni internazionali dei nomi visualizzati: any string
    • N. massimo di risultati: any integer
    • Soglia punteggio: 0.0-1.0
    • Lista consentita della categoria: vector of strings
    • Lista bloccata categoria: vector of strings
    • Impostazioni internazionali dei nomi visualizzati: "en"
    • N. massimo di risultati: -1
    • Soglia punteggio: 0
    • Lista consentita della categoria: vuota
    • Lista bloccata categoria: vuota
    result_callback Imposta il listener dei risultati per ricevere i risultati della classificazione in modo asincrono quando il riconoscimento dei gesti è in modalità live streaming. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM ResultListener N/A N/A

    ottimizzabili

    Il riconoscimento dei gesti utilizza un bundle di modelli con due pacchetti di modelli predefiniti: un bundle di modelli di punti di riferimento della mano e un bundle di modelli di classificazione dei gesti. Il modello dei punti di riferimento rileva la presenza della geometria di mani e 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 Versions
    HandGestureClassifier 192 x 192, 224 x 224 numero in virgola mobile 16 informazioni Più recente

    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 riconoscimento dei gesti.

    Bundle modello punto di riferimento mano

    Il bundle di modelli di riferimento della mano rileva la localizzazione del punto chiave di 21 coordinate della giuntura della mano all'interno delle regioni della mano rilevate. Il modello è stato addestrato su circa 30.000 immagini reali, nonché su diversi modelli di mano sintetici visualizzati su vari sfondi. Consulta la definizione dei 21 punti di riferimento di seguito:

    Il bundle del modello di indice 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 dall'intera immagine di input, mentre il modello di rilevamento dei punti di riferimento delle mani trova i punti di riferimento sull'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 streaming, riconoscimento gesti utilizza un riquadro di delimitazione definito dai punti di riferimento della mano rilevati nel frame corrente per localizzare l'area delle mani nel frame successivo. In questo modo si riduce il numero di volte in cui il riconoscimento Gesti attiva l'attivazione del modello di rilevamento del palmo. Solo quando il modello dei punti di riferimento della mano non è più in grado di identificare un numero sufficiente di presenza delle mani o quando il rilevamento non riesce, il modello di rilevamento del palmo viene richiamato per rilocalizzare le mani.

    Bundle di modelli di classificazione dei gesti

    Il bundle di modelli di classificazione dei gesti è in grado di riconoscere i seguenti gesti comuni delle 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 riconoscimento dei gesti restituisce il risultato "Nessuno". Se il modello non rileva le mani, il riconoscimento dei gesti restituisce vuoto.

    Il bundle di modelli 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. Scopri di più nella scheda del modello di classificazione dei gesti.

    Il modello di incorporamento tramite 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 predefinito, che rileva i 7 gesti più comuni introdotti in precedenza. Puoi estendere il bundle di modelli per riconoscere più gesti addestrando un classificatore di gesti personalizzato. Per ulteriori dettagli, consulta la seguente sezione Modelli personalizzati.

    Il riconoscimento gesti con un classificatore di gesti predefinito e uno strumento di classificazione dei gesti personalizzato preferisce il gesto personalizzato se entrambi i classificatori riconoscono lo stesso gesto nelle proprie categorie. Se un solo classificatore di gesti riconosce il gesto, il riconoscimento gesti emette direttamente il gesto riconosciuto.

    Benchmark attività

    Ecco i benchmark delle attività per l'intera pipeline basati sui modelli preaddestrati precedenti. Il risultato della latenza è la latenza media su Pixel 6 utilizzando CPU / GPU.

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

    Modelli personalizzati

    Se vuoi migliorare o alterare 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 nel formato .task, ovvero un file di bundle di modelli. Ti consigliamo di utilizzare Model Maker per modificare i modelli forniti per questa attività prima di crearne di nuovi.

    Per ulteriori informazioni su come personalizzare un modello per questa attività, consulta Personalizzare i modelli per il riconoscimento dei gesti.