Guida alle attività di classificazione delle immagini

L'attività Classificatore di immagini MediaPipe consente di eseguire la classificazione delle immagini. Puoi utilizzare questa attività per identificare cosa rappresenta un'immagine tra un insieme di categorie definite durante l'addestramento. Questa attività opera su dati di immagine con un modello di machine learning (ML) come dati statici o un flusso continuo e restituisce un elenco di potenziali categorie classificate per punteggio di probabilità decrescente.

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.
  • Regione di interesse: consente di eseguire la classificazione su una regione dell'immagine anziché sull'intera immagine.
  • Impostazioni internazionali mappa etichette: imposta la lingua utilizzata per i nomi visualizzati.
  • Soglia punteggio: filtra i risultati in base ai punteggi delle previsioni.
  • Classificazione Top-K: limita il numero di risultati di classificazione.
  • Lista consentita e lista bloccata: specifica le categorie classificate.
Input attività Output attività
L'input può essere uno dei seguenti tipi di dati:
  • Immagini statiche
  • Fotogrammi video decodificati
  • Feed video in diretta
Il classificatore di immagini restituisce un elenco di categorie contenenti:
  • Indice di categoria: l'indice della categoria negli output del modello
  • Punteggio: il punteggio di confidenza per questa categoria, di solito una probabilità in [0,1]
  • Nome categoria (facoltativo): il nome della categoria come 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à 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
display_names_locale Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nei metadati del modello dell'attività, se disponibili. Il valore predefinito è en per l'inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato utilizzando l'API Metadata Writer di TensorFlow Lite Codice 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. Eventuali numeri positivi -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 elemento in virgola mobile Non impostata
category_allowlist Consente di impostare l'elenco facoltativo di nomi di categorie consentite. Se il campo non è vuoto, i risultati della classificazione il cui nome categoria non è presente in questo set verranno filtrati. I nomi di categoria duplicati o sconosciuti vengono ignorati. Questa opzione si esclude a vicenda con category_denylist e l'utilizzo di entrambe genera un errore. Qualsiasi stringa Non impostata
category_denylist Consente di impostare l'elenco facoltativo di nomi di categorie non consentiti. Se il campo non è vuoto, i risultati di classificazione il cui nome di categoria è presente in questo set verranno filtrati. I nomi di categoria duplicati o sconosciuti vengono ignorati. Questa opzione si esclude a vicenda con category_allowlist e l'uso di entrambe genera un errore. Qualsiasi stringa Non impostata
result_callback Imposta il listener dei risultati per ricevere i risultati di classificazione in modo asincrono quando il classificatore di immagini è in modalità live streaming. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM N/A Non impostata

ottimizzabili

Il classificatore di immagini richiede che un modello di classificazione delle immagini sia scaricato e archiviato nella directory del progetto. Inizia con il modello predefinito consigliato per la tua piattaforma di destinazione quando inizi a sviluppare con questa attività. Gli altri modelli disponibili di solito fanno compromessi tra prestazioni, accuratezza, risoluzione e requisiti delle 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, ad esempio alberi, animali, cibo, veicoli, persone e così via. Consulta l'elenco completo delle etichette supportate. EfficientNet-Lite0 è disponibile nei modelli int8 e float 32. Questo modello è consigliato perché trova un equilibrio tra latenza e accuratezza. È precisa e allo stesso tempo abbastanza leggera per molti casi d'uso.

Nome modello Forma di input Tipo di quantizzazione Versions
EfficientNet-Lite0 (int8) 224 x 224 int8 Più recente
EfficientNet-Lite0 (float 32) 224 x 224 Nessuna (float32) Più recente

Modello EfficientNet-Lite2

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

Nome modello Forma di input Tipo di quantizzazione Versions
EfficientNet-Lite2 (int8) 224 x 224 int8 Più recente
EfficientNet-Lite2 (float 32) 224 x 224 Nessuna (float32) Più recente

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
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

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

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