Classificazione delle immagini

Il compito di identificare ciò che rappresenta un'immagine è chiamato classificazione delle immagini . Un modello di classificazione delle immagini è addestrato a 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. Scopri di più sulla classificazione delle immagini utilizzando TensorFlow qui .

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

Screenshot dell'esempio 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 pronta all'uso della libreria attività TensorFlow Lite per integrare 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 di entrambi i metodi rispettivamente come lib_task_api e lib_support .

Visualizza l'esempio di Android

Visualizza l'esempio iOS

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

Scarica il modello iniziale

Descrizione del Modello

Come funziona

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

Dati 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 l'apprendimento del trasferimento 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 al modello, questo restituirà le probabilità che l'immagine rappresenti ciascuno dei tipi di animale su cui è stato addestrato. Un output di esempio potrebbe essere il seguente:

Tipo di animale Probabilità
Coniglio 0,07
Criceto 0,02
Cane 0,91

Ogni 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 modelli con più classi (vedi Softmax per ulteriori informazioni).

Risultati ambigui

Poiché la somma delle probabilità di output sarà sempre 1, se un'immagine non viene riconosciuta con sicurezza come appartenente a una delle classi su cui è stato addestrato il modello, è possibile vedere la probabilità 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 modello di architettura

TensorFlow Lite fornisce una varietà di modelli di classificazione delle immagini, tutti addestrati sul set di dati originale. Architetture di modelli come MobileNet, Inception e NASNet sono disponibili su TensorFlow Hub . Per scegliere il modello migliore per il proprio caso d'uso, è necessario considerare le singole architetture nonché alcuni compromessi tra i vari modelli. Alcuni di questi compromessi tra modelli si basano su parametri 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 più accurato per un'app di imaging medico. Tieni presente 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, mentre 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 a etichetta singola; ovvero, 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 file zip del modello . Se desideri addestrare un modello a riconoscere nuove classi, consulta Personalizzare il modello . Per i seguenti casi d'uso, dovresti utilizzare un tipo diverso di modello:
  • Prevedere il tipo e la posizione di uno o più oggetti all'interno di un'immagine (vedi Rilevamento oggetti )
  • Prevedere la composizione di un'immagine, ad esempio soggetto rispetto allo sfondo (vedi Segmentazione )
Una volta eseguito il modello iniziale 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 preaddestrati forniti sono addestrati per riconoscere 1000 classi di immagini. Per un elenco completo delle classi, vedere il file delle etichette nel file zip del modello . È inoltre possibile utilizzare l'apprendimento trasferito per riqualificare un modello in modo che riconosca le classi non presenti nel set originale. Ad esempio, potresti riqualificare il modello per distinguere tra diverse specie di alberi, nonostante non siano presenti alberi nei dati di addestramento originali. Per fare ciò, avrai bisogno di una serie di immagini di addestramento per ciascuna delle nuove etichette che desideri addestrare. Scopri come eseguire l'apprendimento del trasferimento con TFLite Model Maker o nel codelab Riconosci i fiori con TensorFlow .

Benchmark delle prestazioni

Le prestazioni del modello vengono misurate in termini di tempo necessario affinché un modello esegua l'inferenza su un determinato componente hardware. Minore è il tempo, più veloce sarà il modello. Le prestazioni richieste dipendono dalla vostra applicazione. Le prestazioni possono essere importanti per applicazioni come video in tempo reale, dove può essere importante analizzare ciascun fotogramma nel tempo prima che venga disegnato il fotogramma successivo (ad esempio, l'inferenza deve essere più veloce di 33 ms per eseguire l'inferenza in tempo reale su un flusso video a 30 fps) . Le prestazioni dei modelli MobileNet quantizzati TensorFlow Lite vanno 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 5ms*
iPhone XS (iOS 12.4.1) 11ms**

* 4 fili utilizzati.

** 2 thread utilizzati su iPhone per il miglior risultato prestazionale.

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 in media il 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 appare l'etichetta corretta nelle 5 probabilità più alte nell'output del modello.

L'intervallo di precisione dei primi 5 modelli Quantizzati MobileNet TensorFlow Lite va dal 64,4 all'89,9%.

Dimensioni del modello

La dimensione di un modello su disco varia in base alle sue prestazioni e alla sua precisione. Le dimensioni possono essere importanti per lo sviluppo mobile (dove potrebbero influire sulle dimensioni di 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

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