Guida alle attività di rilevamento di oggetti

Un gatto e un cane evidenziati con riquadri di delimitazione etichettati correttamente

L'attività MediaPipe Object Detector consente di rilevare la presenza e la posizione di più classi di oggetti all'interno di immagini o video. Ad esempio, un rilevatore di oggetti può individuare i cani in un'immagine. Questa attività opera sui dati delle immagini con un modello di machine learning (ML), accettando dati statici o uno stream video continuo come input e producendo un elenco di risultati di rilevamento. Ogni risultato di rilevamento rappresenta un oggetto visualizzato nell'immagine o nel video.

Prova!

Inizia

Per iniziare a utilizzare questa attività, segui una di queste guide all'implementazione per la piattaforma su cui stai lavorando:

Queste guide specifiche per la piattaforma illustrano un'implementazione di base di questa attività, incluso un modello consigliato e un esempio di codice con le opzioni di configurazione consigliate.

Dettagli attività

Questa sezione descrive le funzionalità, gli input e gli output 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.
  • Impostazioni internazionali mappa delle etichette: imposta la lingua utilizzata per i nomi visualizzati
  • Soglia di punteggio: filtra i risultati in base ai punteggi di previsione.
  • Rilevamento dei primi k: filtra i risultati del rilevamento dei numeri.
  • Lista consentita ed esclusa delle etichette: specifica le categorie rilevate.
Input delle attività Output delle attività
L'API Object Detector accetta un input di uno dei seguenti tipi di dati:
  • Immagini statiche
  • Fotogrammi video decodificati
  • Feed video in diretta
L'API Object Detector restituisce i seguenti risultati per gli oggetti rilevati:
  • Categoria dell'oggetto
  • Punteggio di probabilità
  • Coordinate del riquadro di delimitazione

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
display_names Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nei metadati del modello dell'attività, se disponibile. Il valore predefinito è en per l'inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato utilizzando l'API TensorFlow Lite Metadata Writer Codice delle impostazioni internazionali it
max_results Imposta il numero massimo facoltativo di risultati di rilevamento con il punteggio più alto da restituire. Qualsiasi numero positivo -1 (vengono restituiti tutti i risultati)
score_threshold Imposta la soglia del punteggio di previsione che sostituisce quella fornita nei metadati del modello (se presenti). I risultati inferiori a questo valore vengono rifiutati. Qualsiasi stato mobile Non impostato
category_allowlist Imposta l'elenco facoltativo dei nomi delle categorie consentite. Se non è vuoto, i risultati di rilevamento il cui nome della categoria non è presente in questo insieme verranno eliminati. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione è mutuamente esclusiva con category_denylist e l'utilizzo di entrambe genera un errore. Qualsiasi stringa Non impostato
category_denylist Imposta l'elenco facoltativo dei nomi di categorie non consentiti. Se non è vuoto, i risultati di rilevamento il cui nome della categoria è presente in questo insieme verranno esclusi. I nomi di categorie duplicati o sconosciuti vengono ignorati. Questa opzione è mutuamente esclusa da category_allowlist e l'utilizzo di entrambe genera un errore. Qualsiasi stringa Non impostato

Modelli

L'API Object Detector richiede che un modello di rilevamento di oggetti venga scaricato e memorizzato nella directory del progetto. Se non hai già un modello, inizia con quello predefinito consigliato. Gli altri modelli presentati in questa sezione fanno un compromesso tra latenza e accuratezza.

Il modello EfficientDet-Lite0 utilizza una struttura di base EfficientNet-Lite0 con una dimensione di input di 320 x 320 e una rete di funzionalità BiFPN. Il modello è stato addestrato con il set di dati COCO, un set di dati di rilevamento degli oggetti su larga scala che contiene 1,5 milioni di istanze di oggetti e 80 etichette di oggetti. Consulta l'elenco completo delle etichette supportate. EfficientDet-Lite0 è disponibile come int8, float16 o float32. Questo modello è consigliato perché trova un equilibrio tra latenza e precisione. È preciso e abbastanza leggero per molti casi d'uso.

Nome modello Forma di input Tipo di quantizzazione Versioni
EfficientDet-Lite0 (int8) 320 x 320 int8 Ultime notizie
EfficientDet-Lite0 (float 16) 320 x 320 float 16 Ultime notizie
EfficientDet-Lite0 (float 32) 320 x 320 Nessuno (float32) Ultime notizie

Modello EfficientDet-Lite2

Il modello EfficientDet-Lite2 utilizza una struttura di base EfficientNet-Lite2 con dimensioni di input di 448 x 448 e una rete di funzionalità BiFPN. Il modello è stato addestrato con il set di dati COCO, un set di dati di rilevamento degli oggetti su larga scala che contiene 1,5 milioni di istanze di oggetti e 80 etichette di oggetti. Consulta l'elenco completo delle etichette supportate. EfficientDet-Lite2 è disponibile come modello int8, float16 o float32. Questo modello è generalmente più preciso di EfficientDet-Lite0, ma è anche più lento e richiede una maggiore quantità di memoria. Questo modello è appropriato per casi in cui l'accuratezza ha una priorità maggiore rispetto alla velocità e alle dimensioni.

Nome modello Forma di input Tipo di quantizzazione Versioni
EfficientDet-Lite2 (int8) 448 x 448 int8 Ultime notizie
EfficientDet-Lite2 (float 16) 448 x 448 float 16 Ultime notizie
EfficientDet-Lite2 (float 32) 448 x 448 Nessuno (float32) Ultime notizie

Modello SSD MobileNetV2

Il modello SSD MobileNetV2 utilizza una struttura di base MobileNetV2 con dimensioni di input di 256 x 256 e una rete di funzionalità SSD. Il modello è stato addestrato con il set di dati COCO, un set di dati di rilevamento degli oggetti su larga scala che contiene 1,5 milioni di istanze di oggetti e 80 etichette di oggetti. Consulta l'elenco completo delle etichette supportate. SSD MobileNetV2 è disponibile come modello int8 e float 32. Questo modello è più veloce e leggero di EfficientDet-Lite0, ma in genere è anche meno preciso. Questo modello è adatto a casi d'uso che richiedono un modello veloce e leggero che sacrifica un po' di precisione.

Nome modello Forma di input Tipo di quantizzazione Versioni
SSDMobileNet-V2 (int8) 256 x 256 int8 Ultime notizie
SSDMobileNet-V2 (float 32) 256 x 256 Nessuno (float32) Ultime notizie

Requisiti e metadati del modello

Questa sezione descrive i requisiti per i modelli personalizzati se decidi di creare un modello da utilizzare con questa attività. I modelli personalizzati devono essere in formato TensorFlow Lite e devono includere metadata che descrivono i parametri di funzionamento del modello.

Requisiti di progettazione

Input Shape Descrizione
Immagine di input Tensore float32 di forma [1, altezza, larghezza, 3] L'immagine di input normalizzata.
Output Shape Descrizione
detection_boxes Tensore float32 di forma [1, num_boxes, 4] Posizione della casella di ogni oggetto rilevato.
detection_classes Tensore Float32 di forma [1, num_boxes] Indici dei nomi delle classi per ogni oggetto rilevato.
detection_scores Tensore float32 di forma [1, num_boxes] Punteggi di previsione per ogni oggetto rilevato.
num_boxes Tensore Float32 di dimensione 1 Il numero di caselle rilevate.

Requisiti per i metadati

Parametro Descrizione Descrizione
input_norm_mean Il valore medio utilizzato nella normalizzazione del tensore di input. L'immagine di input normalizzata.
input_norm_std La norma del campo utilizzata nella normalizzazione del tensore di input. Posizione della casella di ogni oggetto rilevato.
label_file_paths I percorsi dei file delle etichette tensore delle categorie. Se il modello non contiene file di etichette, passa un elenco vuoto. Indici dei nomi delle classi per ogni oggetto rilevato.
score_calibration_md Informazioni sull'operazione di calibrazione del punteggio nel tensore di classificazione. Questo parametro non è obbligatorio se il modello non utilizza la calibrazione del punteggio
.
Punteggi di previsione per ogni oggetto rilevato.
num_boxes Tensore Float32 di dimensione 1 Il numero di caselle rilevate.

Benchmark delle attività

Ecco i benchmark delle attività per i 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
Modello EfficientDet-Lite0 float32 61,30 ms 27,83 ms
Modello EfficientDet-Lite0 float16 53,97 ms 27,97 ms
Modello EfficientDet-Lite0 int8 29,31 ms -
Modello EfficientDet-Lite2 float32 197,98 ms 41,15 ms
Modello EfficientDet-Lite2 float16 198,77 ms 47,31 ms
Modello EfficientDet-Lite2 int8 70,91 ms -
Modello SSD MobileNetV2 float32 36,30 ms 24,01 ms
Modello SSD MobileNetV2 float16 37,35 ms 28,16 ms