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 riconosciuti relativi ai gesti della mano insieme ai punti di riferimento mani rilevate. Puoi utilizzare questa attività per riconoscere gesti specifici 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 sia di dati statici che di un flusso continuo. L'attività restituisce dei punti di riferimento a mano coordinate dell'immagine, punti di riferimento delle mani nelle coordinate del mondo, mano dominante (mano sinistra/destra) e le categorie di gesti di più mani.

Fai una prova!

Inizia

Inizia a utilizzare questa attività seguendo una di queste guide all'implementazione per il tuo piattaforma di destinazione. Queste guide specifiche per piattaforma ti illustreranno una procedura di base implementazione di questa attività, utilizzando un modello consigliato, e fornisci esempi di codice con le opzioni di configurazione consigliate:

di Gemini Advanced.

Dettagli attività

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

Funzionalità

  • Elaborazione dell'immagine di input. L'elaborazione include la rotazione, il ridimensionamento delle immagini, normalizzazione e conversione dello spazio colore.
  • Soglia punteggio: filtra i risultati in base ai punteggi delle previsioni.
  • Lista consentita delle etichette e lista bloccata: specifica le categorie di gesti riconosciuti dal modello.
Input per le attività Output delle attività
Il riconoscimento gesti accetta 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 mondiali

Opzioni di configurazione

Questa attività include 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 tipi di modalità:

IMAGE: la modalità per gli input di immagini singole.

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

LIVE_STREAM: la modalità per un live streaming di input dati, ad esempio quelli di una videocamera. In questa modalità, resultListener deve essere per impostare un listener in modo che riceva risultati in modo asincrono.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands Il numero massimo di mani che può essere rilevato GestureRecognizer. Any integer > 0 1
min_hand_detection_confidence Il punteggio di confidenza minimo per il rilevamento della mano considerata efficace nel modello di rilevamento della palma. 0.0 - 1.0 0.5
min_hand_presence_confidence Il punteggio di confidenza minimo del punteggio di presenza della mano nella mano modello di rilevamento dei punti di riferimento. In modalità Video e live streaming del riconoscimento gesti: se il punteggio di sicurezza della presenza della mano del modello di punto di riferimento della mano è inferiore a questa soglia, attiva il modello di rilevamento della mano. Altrimenti, un algoritmo leggero di rilevamento della mano per determinare la posizione mani per il successivo rilevamento dei punti di riferimento. 0.0 - 1.0 0.5
min_tracking_confidence Il punteggio di confidenza minimo per cui deve essere preso in considerazione il monitoraggio della mano riuscito. Questa è la soglia di IoU del riquadro di delimitazione tra le mani nella il frame corrente e l'ultimo. In modalità Video e Stream di Riconoscimento gesti: se il rilevamento non va a buon fine, il riconoscimento attiva la mano il rilevamento automatico. In caso contrario, il rilevamento della mano viene ignorato. 0.0 - 1.0 0.5
canned_gestures_classifier_options Opzioni per configurare il 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.
  • N. massimo di risultati: il numero massimo di risultati della 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 il valore è 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 è compresa in questo set verranno filtrati. Si escludono a vicenda con lista bloccata.
  • Lista bloccata delle categorie: la lista bloccata dei nomi delle categorie. Se il campo non è vuoto, i risultati della classificazione che appartengono a questa categoria verranno filtrati. Si escludono a vicenda con la 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 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.
  • N. massimo di risultati: il numero massimo di risultati della 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 il valore è 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 è compresa in questo set verranno filtrati. Si escludono a vicenda con lista bloccata.
  • Lista bloccata delle categorie: la lista bloccata dei nomi delle categorie. Se il campo non è vuoto, i risultati della classificazione che appartengono a questa categoria verranno filtrati. Si escludono a vicenda con la 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 in modo che riceva i risultati della classificazione in modo asincrono quando il riconoscimento dei gesti è in modalità live streaming. Può essere utilizzato solo quando la modalità di corsa è impostata su LIVE_STREAM ResultListener N/D N/D

    Modelli

    Il riconoscimento gesti utilizza un bundle di modelli con due pacchetti di modelli predefiniti: gruppo di modelli di riferimento a forma di mano e un bundle di modelli per la classificazione dei gesti. La modello punto di riferimento rileva la presenza di mani e geometria delle mani e il gesto di riconoscimento dei 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 numero in virgola mobile 16 informazioni Più recenti

    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 di modelli di punto di riferimento a mano

    Il bundle di modelli del punto di riferimento della mano rileva la localizzazione del punto chiave di 21 mani-nocca all'interno delle regioni delle mani rilevate. Il modello è stato addestrato circa 30.000 immagini del mondo reale e diverse mani sintetiche visualizzate e modelli imposti su vari background. Consulta la definizione dei 21 punti di riferimento di seguito:

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

    Poiché il modello di rilevamento del palmo richiede molto più tempo, in modalità Video o In diretta modalità stream, il riconoscimento gesti usa un riquadro di delimitazione definito dalla mano rilevata punti di riferimento nel frame corrente per localizzare la regione delle mani nei prossimi frame. In questo modo si riduce il numero di volte in cui il riconoscimento dei gesti attiva il modello di rilevamento del palmo. Solo quando il modello dei punti di riferimento della mano non è stato più in grado di identificare abbastanza richieste della presenza di mani o il rilevamento della mano non va a buon fine, il modello di rilevamento della mano per rilocalizzare le mani.

    Bundle di modelli di classificazione dei gesti

    Il bundle del modello 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 gesto il riconoscimento restituisce il risultato "None". 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 rete neurale in due passaggi un modello di incorporamento dei gesti seguito da un modello di classificazione dei gesti. Per saperne di più, consulta la scheda del 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 come input. Il bundle del modello di classificazione dei gesti fornito contiene classificatore di gesti predefiniti, che rileva i 7 comuni gesti delle mani introdotti in alto. Puoi estendere il bundle del modello in modo che riconosca altri gesti mediante l'addestramento un classificatore di gesti personalizzato. Per ulteriori dettagli, vedi di seguito Modelli personalizzati.

    Riconoscimento dei gesti con classificatore di gesti predefinito e classificatore di gesti personalizzato preferisce il gesto personalizzato se entrambi i classificatori riconoscono lo stesso gesto le rispettive categorie. Se un solo classificatore di gesti riconosce il gesto, Il riconoscimento gesti restituisce direttamente il gesto riconosciuto.

    Benchmark delle attività

    Ecco i benchmark delle attività per l'intera pipeline in base a quanto riportato sopra modelli preaddestrati. 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 si desidera migliorare o modificare le capacità dei modelli forniti in puoi usare Model Maker per modificare i modelli esistenti. Modelli personalizzati utilizzati con MediaPipe deve essere nel formato .task, che è un file del bundle di modelli. Tu valuta 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 Personalizza i modelli per il Riconoscimento dei gesti.