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.
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:
- Android - Esempio di codice - Guide
- Python - Esempio di codice - Guida
- Web - Esempio di codice - Guida
- iOS - Esempio di codice - Guide
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:
|
Il classificatore delle immagini genera un elenco di categorie contenenti:
|
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.
Modello EfficientNet-Lite0 (consigliato)
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.