Guida alle attività di classificazione delle immagini

Un animale etichettato correttamente come fenicottero con un livello di confidenza del 95%

L'attività Classificatore di immagini MediaPipe ti consente di eseguire la classificazione delle immagini. Puoi utilizzare questa attività per identificare cosa rappresenta un'immagine tra un insieme di categorie definite al momento dell'addestramento. Questa attività opera sui dati delle immagini con un modello di machine learning (ML) come dati statici o uno stream continuo e genera un elenco di potenziali categorie classificate in base al punteggio di probabilità decrescente.

Prova!

Inizia

Per iniziare a utilizzare questa attività, segui una di queste guide all'implementazione per la tua piattaforma di destinazione. Queste guide specifiche per la piattaforma 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 delle immagini di input: l'elaborazione include la rotazione, il ridimensionamento, la normalizzazione e la conversione dello spazio colore delle immagini.
  • Regione di interesse: esegui la classificazione su una regione dell'immagine anziché sull'intera immagine.
  • 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.
  • Classificazione Top-k: limita il numero di risultati di classificazione.
  • Lista consentita ed esclusa delle etichette: specifica le categorie classificate.
Input delle attività Output delle attività
L'input può essere uno dei seguenti tipi di dati:
  • Immagini statiche
  • Fotogrammi video decodificati
  • Feed video in diretta
Il classificatore delle immagini genera un elenco di categorie contenenti:
  • indice categoria: l'indice della categoria negli output del modello
  • Punteggio: il punteggio di confidenza per questa categoria, in genere una probabilità compresa tra 0 e 1
  • Nome della categoria (facoltativo): il nome della categoria specificato nei metadati del modello TFLite, se disponibile
  • Nome visualizzato della categoria (facoltativo): un nome visualizzato per la categoria come specificato nei metadati del modello TFLite, nella lingua specificata tramite le opzioni internazionali dei nomi visualizzati, se disponibili

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_locale 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 classificazione con il punteggio più alto da restituire. Se < 0, verranno restituiti tutti i risultati disponibili. Qualsiasi numero positivo -1
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 classificazione 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 classificazione 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
result_callback Imposta l'ascoltatore dei risultati in modo da ricevere i risultati della classificazione in modo asincrono quando l'Image Classifier è in modalità live streaming. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM N/D Non impostato

Modelli

Il classificatore delle immagini richiede che un modello di classificazione delle immagini venga scaricato e memorizzato nella directory del progetto. Quando inizi a sviluppare con questa attività, inizia con il modello predefinito consigliato per la tua piattaforma di destinazione. Gli altri modelli disponibili di solito prevedono compromessi tra prestazioni, precisione, risoluzione e requisiti di risorse e, in alcuni casi, includono funzionalità aggiuntive.

Il modello EfficientNet-Lite0 utilizza un'architettura EfficientNet ed è stato addestrato utilizzando ImageNet per riconoscere 1000 classi, come alberi, animali, cibo, veicoli, persone e così via. Consulta l'elenco completo delle etichette supportate. EfficientNet-Lite0 è disponibile come modello int8 e float 32. 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
EfficientNet-Lite0 (int8) 224 x 224 int8 Ultime notizie
EfficientNet-Lite0 (float 32) 224 x 224 Nessuno (float32) Ultime notizie

Modello EfficientNet-Lite2

Il modello EfficientNet-Lite2 utilizza un'architettura EfficientNet ed è stato addestrato utilizzando ImageNet per riconoscere 1000 classi, come alberi, animali, cibo, veicoli, persone e così via. Consulta l'elenco completo delle etichette supportate. EfficientNet-Lite2 è disponibile come modello int8 e float 32. Questo modello è in genere più preciso di EfficientNet-Lite0, ma è anche più lento e richiede una maggiore quantità di memoria. Questo modello è adatto per i casi d'uso in cui l'accuratezza ha una priorità più alta rispetto alla velocità o alle dimensioni.

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

Benchmark delle attività

Ecco i benchmark delle attività per l'intera pipeline in base ai modelli preaddestrati sopra riportati. Il risultato della latenza è la latenza media su Pixel 6 che utilizza la CPU / GPU.

Nome modello Latenza della CPU Latenza GPU
EfficientNet-Lite0 (float 32) 23,52 ms 18,90 ms
EfficientNet-Lite0 (int8) 10,08 ms -
EfficientNet-Lite2 (float 32) 44,17 ms 22,20 ms
EfficientNet-Lite2 (int8) 19,43 ms -

Modelli personalizzati

Puoi utilizzare un modello ML personalizzato con questa attività se vuoi migliorare o modificare le funzionalità dei modelli forniti. Puoi utilizzare Model Maker per modificare i modelli esistenti o crearne uno utilizzando strumenti come TensorFlow. I modelli personalizzati utilizzati con MediaPipe devono essere in formato TensorFlow Lite e devono includere metadata specifici che descrivono i parametri di funzionamento del modello. Ti consigliamo di utilizzare Model Maker per modificare i modelli forniti per questa attività prima di crearne uno tuo.

Se vuoi creare un classificatore di immagini personalizzato utilizzando il tuo set di dati, inizia con il tutorial sulla personalizzazione del classificatore di immagini.