Modelli personalizzati con ML Kit

Per impostazione predefinita, le API di ML Kit utilizzano modelli di machine learning addestrati da Google. Questi modelli sono progettati per coprire un'ampia gamma di applicazioni. Tuttavia, alcuni casi d'uso richiedono modelli più mirati. Per questo motivo, alcune API ML Kit ora ti consentono di sostituire i modelli predefiniti con modelli LiteRT personalizzati.

Sia l'API Image Labeling sia l'API Object Detection & Tracking offrono il supporto per modelli personalizzati di classificazione delle immagini. Sono compatibili con una selezione di modelli pre-addestrati di alta qualità su TensorFlow Hub o con il tuo modello personalizzato addestrato con TensorFlow o AutoML.

Se hai bisogno di una soluzione personalizzata per altri domini o casi d'uso, visita la pagina Machine learning on-device per indicazioni su tutte le soluzioni e gli strumenti di Google per il machine learning on-device.

Vantaggi dell'utilizzo di ML Kit con modelli personalizzati

I vantaggi dell'utilizzo di un modello di classificazione delle immagini personalizzato con ML Kit sono:

  • API di alto livello facili da usare: non è necessario gestire l'input/output del modello di basso livello, gestire la pre-elaborazione/post-elaborazione delle immagini o creare una pipeline di elaborazione.
  • Non devi preoccuparti di mappare le etichette, ML Kit estrae le etichette dai metadati del modello LiteRT ed esegue la mappatura per te.
  • Supporta modelli personalizzati di un'ampia gamma di origini, dai modelli preaddestrati pubblicati su TensorFlow Hub ai nuovi modelli addestrati con TensorFlow o AutoML.
  • Ottimizzato per l'integrazione con le API Camera di Android.

Inoltre, in particolare per il rilevamento e il monitoraggio degli oggetti:

  • Migliora l'accuratezza della classificazione individuando prima gli oggetti ed eseguendo il classificatore solo sull'area dell'immagine correlata.
  • Offri un'esperienza interattiva in tempo reale fornendo ai tuoi utenti un feedback immediato sugli oggetti man mano che vengono rilevati e classificati.

Utilizzare un modello di classificazione delle immagini preaddestrato

Puoi utilizzare modelli LiteRT preaddestrati, a condizione che soddisfino un insieme di criteri. Tramite TensorFlow Hub offriamo un insieme di modelli verificati, di Google o di altri creatori di modelli, che soddisfano questi criteri.

Utilizzare un modello pubblicato su TensorFlow Hub

TensorFlow Hub offre un'ampia gamma di modelli di classificazione delle immagini preaddestrati, creati da vari autori, che possono essere utilizzati con le API Image Labeling e Object Detection and Tracking. Segui questi passaggi:

  1. Scegli un modello dalla raccolta di modelli compatibili con ML Kit.
  2. Scarica il file del modello .tflite dalla pagina dei dettagli del modello. Se disponibile, scegli un formato del modello con metadati.
  3. Segui le nostre guide per l'API Image Labeling o l'API Object Detection and Tracking su come raggruppare il file del modello con il tuo progetto e utilizzarlo nella tua applicazione Android o iOS.

Addestra il tuo modello di classificazione delle immagini

Se nessun modello di classificazione delle immagini pre-addestrato soddisfa le tue esigenze, esistono vari modi per addestrare il tuo modello LiteRT, alcuni dei quali sono descritti e discussi in modo più dettagliato nella sezione seguente.

Opzioni per addestrare il tuo modello di classificazione delle immagini
AutoML
  • Offerto tramite Google Cloud AI
  • Crea modelli di classificazione delle immagini all'avanguardia
  • Valutare il compromesso tra prestazioni e dimensioni
Converti un modello TensorFlow in LiteRT
  • Addestra un modello con TensorFlow e poi convertilo in LiteRT

AutoML

I modelli di classificazione delle immagini addestrati utilizzando AutoML sono supportati dai modelli personalizzati nelle API Image Labeling e Object Detection and Tracking. Queste API supportano anche il download dei modelli ospitati con Cloud Storage.

Per scoprire di più su come utilizzare un modello addestrato con AutoML nelle tue app per Android e iOS, segui le guide ai modelli personalizzati per ogni API, a seconda del tuo caso d'uso.

Modelli creati utilizzando il convertitore LiteRT

Se hai un modello di classificazione delle immagini TensorFlow esistente, puoi convertirlo utilizzando il convertitore LiteRT. Assicurati che il modello creato soddisfi i seguenti requisiti di compatibilità.

Per scoprire di più su come utilizzare un modello LiteRT nelle tue app per Android e iOS, segui le nostre guide per l'API Image Labeling o per l'API Object Detection and Tracking, a seconda del tuo caso d'uso.

Compatibilità del modello LiteRT

Puoi utilizzare qualsiasi modello di classificazione delle immagini LiteRT preaddestrato, a condizione che soddisfi i seguenti requisiti:

Tensori

  • Il modello deve avere un solo tensore di input con i seguenti vincoli:
    • I dati sono in formato pixel RGB.
    • I dati sono di tipo UINT8 o FLOAT32. Se il tipo di tensore di input è FLOAT32, è necessario specificare NormalizationOptions allegando Metadata.
    • Il tensore ha 4 dimensioni : BxHxWxC, dove:
      • B è la dimensione del batch. Deve essere 1 (l'inferenza su batch più grandi non è supportata).
      • W e H sono la larghezza e l'altezza dell'input.
      • C è il numero di canali previsti. Deve essere 3.
  • Il modello deve avere almeno un tensore di output con N classi e 2 o 4 dimensioni:
    • (1xN)
    • (1x1x1xN)
  • Sono supportati completamente solo i modelli a una testa. I modelli multi-testa potrebbero restituire risultati imprevisti.

Metadati

Puoi aggiungere metadati al file LiteRT come spiegato in Aggiungere metadati ai modelli LiteRT.

Per utilizzare un modello con un tensore di input FLOAT32, devi specificare NormalizationOptions nei metadati.

Ti consigliamo inoltre di allegare questi metadati al tensore di output TensorMetadata:

  • Una mappa delle etichette che specifica il nome di ogni classe di output, come AssociatedFile con tipo TENSOR_AXIS_LABELS (altrimenti possono essere restituiti solo gli indici numerici delle classi di output)
  • Una soglia di punteggio predefinita al di sotto della quale i risultati sono considerati troppo poco affidabili per essere restituiti, come ProcessUnit con ScoreThresholdingOptions