Classificazione delle immagini

Il compito di identificare ciò che rappresenta un'immagine è chiamato classificazione delle immagini. Un modello di classificazione delle immagini viene addestrato per riconoscere varie classi di immagini. Ad esempio, puoi addestrare un modello a riconoscere le foto che rappresentano tre diversi tipi di animali: conigli, criceti e cani. TensorFlow Lite fornisce modelli pre-addestrati ottimizzati che puoi distribuire nelle tue applicazioni mobili. Ulteriori informazioni sulla classificazione delle immagini utilizzando TensorFlow qui .

L'immagine seguente mostra l'output del modello di classificazione delle immagini su Android.

Screenshot dell'esempio di Android

Iniziare

Se non conosci TensorFlow Lite e lavori con Android o iOS, ti consigliamo di esplorare le seguenti applicazioni di esempio che possono aiutarti a iniziare.

Puoi sfruttare l'API predefinita di TensorFlow Lite Task Library per integrare i modelli di classificazione delle immagini in poche righe di codice. Puoi anche creare la tua pipeline di inferenza personalizzata utilizzando la libreria di supporto TensorFlow Lite .

L'esempio Android seguente mostra l'implementazione per entrambi i metodi rispettivamente come lib_task_api e lib_support .

Visualizza esempio Android

Visualizza esempio iOS

Se stai utilizzando una piattaforma diversa da Android/iOS o se hai già familiarità con le API di TensorFlow Lite , scarica il modello iniziale e i file di supporto (se applicabile).

Scarica il modello di avviamento

Descrizione del Modello

Come funziona

Durante l'addestramento, un modello di classificazione delle immagini viene alimentato con le immagini e le relative etichette . Ogni etichetta è il nome di un concetto distinto, o classe, che il modello imparerà a riconoscere.

Con dati di addestramento sufficienti (spesso centinaia o migliaia di immagini per etichetta), un modello di classificazione delle immagini può imparare a prevedere se le nuove immagini appartengono a una delle classi su cui è stato addestrato. Questo processo di previsione è chiamato inferenza . Tieni presente che puoi anche utilizzare il trasferimento di apprendimento per identificare nuove classi di immagini utilizzando un modello preesistente. Il trasferimento dell'apprendimento non richiede un set di dati di addestramento molto ampio.

Quando successivamente fornisci una nuova immagine come input per il modello, verranno restituite le probabilità dell'immagine che rappresenta ciascuno dei tipi di animali su cui è stato addestrato. Un esempio di output potrebbe essere il seguente:

Tipo animale Probabilità
Coniglio 0.07
Criceto 0.02
Cane 0,91

Ciascun numero nell'output corrisponde a un'etichetta nei dati di addestramento. Associando l'output alle tre etichette su cui è stato addestrato il modello, puoi vedere che il modello ha previsto un'alta probabilità che l'immagine rappresenti un cane.

Potresti notare che la somma di tutte le probabilità (per coniglio, criceto e cane) è uguale a 1. Questo è un tipo di output comune per i modelli con più classi (vedi Softmax per maggiori informazioni).

Risultati ambigui

Poiché le probabilità di output saranno sempre sommate a 1, se un'immagine non è riconosciuta con sicurezza come appartenente a nessuna delle classi su cui è stato eseguito il training del modello, è possibile che la probabilità sia distribuita tra le etichette senza che alcun valore sia significativamente più grande.

Ad esempio, quanto segue potrebbe indicare un risultato ambiguo:

Etichetta Probabilità
coniglio 0.31
criceto 0,35
cane 0,34
Se il tuo modello restituisce spesso risultati ambigui, potresti aver bisogno di un modello diverso e più accurato.

Scelta di un'architettura modello

TensorFlow Lite fornisce una varietà di modelli di classificazione delle immagini, tutti addestrati sul set di dati originale. Architetture modello come MobileNet, Inception e NASNet sono disponibili su TensorFlow Hub . Per scegliere il modello migliore per il tuo caso d'uso, devi considerare le singole architetture e alcuni dei compromessi tra i vari modelli. Alcuni di questi compromessi del modello si basano su metriche quali prestazioni, precisione e dimensioni del modello. Ad esempio, potresti aver bisogno di un modello più veloce per costruire uno scanner di codici a barre mentre potresti preferire un modello più lento e accurato per un'app di imaging medico. Si noti che i modelli di classificazione delle immagini forniti accettano diverse dimensioni di input. Per alcuni modelli, questo è indicato nel nome del file. Ad esempio, il modello Mobilenet_V1_1.0_224 accetta un input di 224x224 pixel. Tutti i modelli richiedono tre canali di colore per pixel (rosso, verde e blu). I modelli quantizzati richiedono 1 byte per canale e i modelli float richiedono 4 byte per canale. Gli esempi di codice Android e iOS dimostrano come elaborare le immagini della fotocamera a grandezza naturale nel formato richiesto per ciascun modello.

Usi e limitazioni

I modelli di classificazione delle immagini TensorFlow Lite sono utili per la classificazione con etichetta singola; cioè, prevedere quale singola etichetta è più probabile che l'immagine rappresenti. Sono addestrati a riconoscere 1000 classi di immagini. Per un elenco completo delle classi, vedere il file delle etichette nel modello zip . Se desideri addestrare un modello per riconoscere nuove classi, consulta Personalizza modello . Per i seguenti casi d'uso, dovresti utilizzare un diverso tipo di modello:
  • Prevedere il tipo e la posizione di uno o più oggetti all'interno di un'immagine (vedi Rilevamento oggetti )
  • Previsione della composizione di un'immagine, ad esempio soggetto rispetto allo sfondo (vedi Segmentazione )
Una volta che il modello iniziale è in esecuzione sul dispositivo di destinazione, puoi sperimentare diversi modelli per trovare l'equilibrio ottimale tra prestazioni, precisione e dimensioni del modello.

Personalizza il modello

I modelli pre-addestrati forniti sono addestrati per riconoscere 1000 classi di immagini. Per un elenco completo delle classi, vedere il file delle etichette nel modello zip . Puoi anche utilizzare il trasferimento di apprendimento per addestrare nuovamente un modello a riconoscere le classi non nel set originale. Ad esempio, è possibile riqualificare il modello per distinguere tra diverse specie di alberi, nonostante non ci siano alberi nei dati di addestramento originali. Per fare ciò, avrai bisogno di una serie di immagini di formazione per ciascuna delle nuove etichette che desideri addestrare. Scopri come eseguire l'apprendimento del trasferimento con TFLite Model Maker o in Riconosci i fiori con il codelab TensorFlow .

Benchmark delle prestazioni

Le prestazioni del modello vengono misurate in termini di tempo impiegato da un modello per eseguire l'inferenza su un determinato componente hardware. Minore è il tempo, più veloce sarà il modello. Le prestazioni richieste dipendono dall'applicazione. Le prestazioni possono essere importanti per applicazioni come il video in tempo reale, dove può essere importante analizzare ogni fotogramma prima che venga disegnato il fotogramma successivo (ad es. l'inferenza deve essere più veloce di 33 ms per eseguire l'inferenza in tempo reale su un flusso video a 30 fps) . La gamma di prestazioni dei modelli MobileNet quantizzati TensorFlow Lite va da 3,7 ms a 80,3 ms. I numeri dei benchmark delle prestazioni vengono generati con lo strumento di benchmarking .
Nome del modello Dimensioni del modello Dispositivo NNAPI processore
Mobilenet_V1_1.0_224_quant 4,3 Mb Pixel 3 (Android 10) 6 ms 13 ms*
Pixel 4 (Android 10) 3,3 ms 5 ms*
iPhone XS (iOS 12.4.1) 11 ms**

* 4 fili utilizzati.

** 2 thread utilizzati su iPhone per il miglior risultato in termini di prestazioni.

Precisione del modello

La precisione viene misurata in termini di frequenza con cui il modello classifica correttamente un'immagine. Ad esempio, ci si può aspettare che un modello con una precisione dichiarata del 60% classifichi correttamente un'immagine una media del 60% delle volte.

Le metriche di precisione più rilevanti sono Top-1 e Top-5. Top-1 si riferisce alla frequenza con cui l'etichetta corretta appare come l'etichetta con la probabilità più alta nell'output del modello. Top-5 si riferisce alla frequenza con cui l'etichetta corretta appare nelle 5 probabilità più alte nell'output del modello.

Il range di accuratezza Top-5 dei modelli MobileNet quantizzato TensorFlow Lite dal 64,4 all'89,9%.

Dimensioni del modello

La dimensione di un modello su disco varia in base alle sue prestazioni e precisione. Le dimensioni possono essere importanti per lo sviluppo su dispositivi mobili (dove potrebbero influire sulle dimensioni dei download delle app) o quando si lavora con l'hardware (dove lo spazio di archiviazione disponibile potrebbe essere limitato).

Le dimensioni dei modelli MobileNet quantizzati TensorFlow Lite vanno da 0,5 a 3,4 MB.

Ulteriori letture e risorse

Utilizzare le seguenti risorse per ulteriori informazioni sui concetti relativi alla classificazione delle immagini: