L'attività di rilevamento dei volti di MediaPipe consente di rilevare i volti in un'immagine o in un video. Puoi utilizzare questo compito per individuare volti e caratteristiche facciali all'interno di un frame. Questa attività utilizza un modello di machine learning (ML) che funziona con singole immagini o un flusso continuo di immagini. L'attività restituisce le posizioni del volto, insieme ai seguenti punti chiave del viso: occhio sinistro, occhio destro, punta del naso, bocca, tragio dell'occhio sinistro e tragio dell'occhio destro.
Inizia
Inizia a utilizzare questa attività seguendo una di queste guide all'implementazione per la tua piattaforma di destinazione. Queste guide specifiche per piattaforma illustrano un'implementazione di base di questa attività, tra cui un modello consigliato e un esempio di codice con opzioni di configurazione consigliate:
- Android - Esempio di codice - Guida
- Python - Esempio di codice - Guida
- Web - Esempio di codice - Guida
- iOS - Esempio di codice - Guida
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.
| Input dell'attività | Output dell'attività |
|---|---|
Il rilevatore di volti accetta un input di uno dei seguenti tipi di dati:
|
Il rilevatore di volti restituisce i seguenti risultati:
|
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 |
min_detection_confidence |
Il punteggio di confidenza minimo affinché il rilevamento del volto venga considerato riuscito. | Float [0,1] |
0.5 |
min_suppression_threshold |
La soglia minima di soppressione non massima per il rilevamento dei volti da considerare sovrapposti. | Float [0,1] |
0.3 |
result_callback |
Imposta il listener dei risultati per ricevere i risultati del rilevamento
in modo asincrono quando il rilevatore di volti è in modalità
live streaming. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM. |
N/A |
Not set |
Modelli
I modelli di rilevamento dei volti possono variare a seconda dei casi d'uso previsti, ad esempio il rilevamento a corto e lungo raggio. In genere, i modelli fanno anche compromessi tra prestazioni, precisione, risoluzione e requisiti di risorse e, in alcuni casi, includono funzionalità aggiuntive.
I modelli elencati in questa sezione sono varianti di BlazeFace, un rilevatore di volti leggero e preciso ottimizzato per l'inferenza della GPU mobile. I modelli BlazeFace sono adatti ad applicazioni come la stima dei punti chiave del viso 3D, la classificazione delle espressioni e la segmentazione delle regioni del viso. BlazeFace utilizza una rete di estrazione delle funzionalità leggera simile a MobileNetV1/V2.
BlazeFace (a corto raggio)
Un modello leggero per rilevare uno o più volti all'interno di immagini simili a selfie scattate con la fotocamera di uno smartphone o una webcam. Il modello è ottimizzato per immagini della fotocamera anteriore dello smartphone a distanza ravvicinata. L'architettura del modello utilizza una tecnica di rete convoluzionale Single Shot Detector (SSD) con un encoder personalizzato. Per saperne di più, consulta l'articolo di ricerca su Single Shot MultiBox Detector.
| Nome modello | Forma di input | Tipo di quantizzazione | Scheda del modello | Versioni |
|---|---|---|---|---|
| BlazeFace (a corto raggio) | 128 x 128 | float 16 | info | Più recenti |
BlazeFace (gamma completa)
Un modello relativamente leggero per rilevare uno o più volti all'interno di immagini scattate con la fotocamera di uno smartphone o una webcam. Il modello è ottimizzato per immagini a gamma completa, come quelle scattate con una fotocamera posteriore dello smartphone. L'architettura del modello utilizza una tecnica simile a una rete convoluzionale CenterNet con un encoder personalizzato.
| Nome modello | Forma di input | Tipo di quantizzazione | Scheda del modello | Versioni |
|---|---|---|---|---|
| BlazeFace (gamma completa) | 128 x 128 | float 16 | info | Più recenti |
BlazeFace Sparse (full-range)
Una versione più leggera del normale modello BlazeFace a gamma completa, di dimensioni circa il 60% più piccole. Il modello è ottimizzato per le immagini a gamma completa, come quelle scattate con una fotocamera posteriore dello smartphone. L'architettura del modello utilizza una tecnica simile a una rete convoluzionale CenterNet con un encoder personalizzato.
| Nome modello | Forma di input | Tipo di quantizzazione | Scheda del modello | Versioni |
|---|---|---|---|---|
| BlazeFace Sparse (full-range) | 128 x 128 | float 16 | info | Più recenti |
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 CPU / GPU.
| Nome modello | Latenza della CPU | Latenza GPU |
|---|---|---|
| BlazeFace (a corto raggio) | 2,94 ms | 7,41 ms |