TensorFlow Lite per Android

TensorFlow Lite consente di eseguire modelli di machine learning (ML) TensorFlow nelle app Android. Il sistema TensorFlow Lite fornisce ambienti di esecuzione predefiniti e personalizzabili per l'esecuzione rapida ed efficiente di modelli su Android, incluse le opzioni per l'accelerazione hardware.

Modelli di machine learning

TensorFlow Lite usa modelli TensorFlow convertiti in formato di modello di machine learning più piccolo, portatile ed efficiente. Puoi utilizzare modelli predefiniti con TensorFlow Lite su Android oppure creare i tuoi modelli TensorFlow e convertirli nel formato TensorFlow Lite.

Questa pagina descrive l'uso di modelli di machine learning già creati e non tratta di creazione, addestramento, test o conversione di modelli. Scopri di più su come scegliere, modificare, creare e convertire modelli di machine learning per TensorFlow Lite nella pagina Modelli.

Esegui modelli su Android

Un modello TensorFlow Lite in esecuzione in un'app Android acquisisce i dati, li elabora e genera una previsione basata sulla logica del modello. Un modello TensorFlow Lite richiede un ambiente di runtime speciale per essere eseguito e i dati trasmessi al modello devono essere in un formato specifico, chiamato tensore. Quando un modello elabora i dati, nota come esecuzione di un'inferenza, genera i risultati della previsione come nuovi tensori e li passa all'app per Android affinché possa agire, ad esempio mostrare il risultato a un utente o eseguire una logica di business aggiuntiva.

Flusso di esecuzione funzionale per i modelli
TensorFlow Lite nelle app per Android

Figura 1. Flusso di esecuzione funzionale per i modelli TensorFlow Lite nelle app per Android.

A livello di progettazione funzionale, per eseguire un modello TensorFlow Lite la tua app per Android ha bisogno dei seguenti elementi:

  • Ambiente di runtime TensorFlow Lite per l'esecuzione del modello
  • Gestore di input del modello per trasformare i dati in tensori
  • Gestore di output del modello per ricevere i tensori dei risultati di output e interpretarli come risultati di previsione

Le seguenti sezioni descrivono in che modo le librerie e gli strumenti di TensorFlow Lite forniscono questi elementi funzionali.

Crea app con TensorFlow Lite

Questa sezione descrive il percorso consigliato e più comune per implementare TensorFlow Lite nella tua app Android. Ti consigliamo di prestare particolare attenzione alle sezioni Ambiente di runtime e librerie di sviluppo. Se hai sviluppato un modello personalizzato, assicurati di rivedere la sezione Percorsi di sviluppo avanzati.

Opzioni dell'ambiente di runtime

Esistono diversi modi per abilitare un ambiente di runtime per l'esecuzione di modelli nella tua app per Android. Queste sono le opzioni preferite:

In generale, conviene utilizzare l'ambiente di runtime fornito da Google Play Services, in quanto è più efficiente in termini di spazio rispetto all'ambiente standard, poiché viene caricato in modo dinamico, il che riduce le dimensioni dell'app. Inoltre, Google Play Services utilizza automaticamente la release stabile più recente del runtime di TensorFlow Lite, offrendo funzionalità aggiuntive e prestazioni migliorate nel tempo. Se offri la tua app su dispositivi che non includono Google Play Services o devi gestire attentamente l'ambiente di runtime ML, devi utilizzare il runtime TensorFlow Lite standard. Questa opzione raggruppa codice aggiuntivo nella tua app, consentendoti di avere un maggiore controllo sul runtime ML nella tua app, al costo di aumentare le dimensioni di download dell'app.

Puoi accedere a questi ambienti di runtime nella tua app per Android aggiungendo le librerie di sviluppo TensorFlow Lite all'ambiente di sviluppo delle app. Per informazioni su come utilizzare gli ambienti di runtime standard nella tua app, consulta la sezione successiva.

Librerie

Puoi accedere all'API Interpreter utilizzando i servizi Google Play. Puoi utilizzare le librerie principali e di assistenza di TensorFlow Lite nella tua app per Android. Per dettagli sulla programmazione sull'utilizzo delle librerie e degli ambienti di runtime di TensorFlow Lite, consulta Strumenti di sviluppo per Android.

Ottieni modelli

L'esecuzione di un modello in un'app per Android richiede un modello in formato TensorFlow Lite. Puoi utilizzare modelli predefiniti o crearne uno con TensorFlow e convertirlo nel formato Lite. Per ulteriori informazioni su come ottenere i modelli per la tua app per Android, consulta la pagina Modelli di TensorFlow Lite.

Gestisci i dati di input

Tutti i dati passati a un modello ML devono essere un tensore con una struttura di dati specifica, spesso chiamata forma del tensore. Per elaborare i dati con un modello, il codice dell'app deve trasformare i dati del suo formato nativo, ad esempio dati di immagini, testo o audio, in un tensore nella forma richiesta per il tuo modello.

Eseguire inferenze

L'elaborazione dei dati attraverso un modello per generare un risultato di previsione è nota come esecuzione di inferenza. L'esecuzione di un'inferenza in un'app per Android richiede un ambiente di runtime di TensorFlow Lite, un model e dei dati di input.

La velocità con cui un modello può generare un'inferenza su un determinato dispositivo dipende dalla dimensione dei dati elaborati, dalla complessità del modello e dalle risorse di calcolo disponibili come memoria e CPU o processori specializzati chiamati acceleratori. I modelli di machine learning possono essere eseguiti più velocemente su questi processori specializzati, come le GPU (Graphics Processing Unit) e le TPU (Tensor Processing Unit), utilizzando i driver hardware TensorFlow Lite denominati delegati. Per ulteriori informazioni sui delegati e sull'accelerazione hardware dell'elaborazione dei modelli, consulta la panoramica sull'accelerazione hardware.

Gestire i risultati di output

I modelli generano risultati di previsione come tensori, che devono essere gestiti dalla tua app per Android tramite l'intervento dell'utente o la visualizzazione di un risultato all'utente. I risultati dell'output del modello possono essere semplici, ad esempio un numero corrispondente a un singolo risultato (0 = cane, 1 = gatto, 2 = uccello) per una classificazione di immagini, fino a risultati molto più complessi, ad esempio più riquadri di delimitazione per diversi oggetti classificati in un'immagine, con valutazioni di confidenza della previsione comprese tra 0 e 1.

Percorsi di sviluppo avanzati

Quando utilizzi modelli TensorFlow Lite più sofisticati e personalizzati, potresti dover utilizzare approcci di sviluppo più avanzati rispetto a quanto descritto sopra. Le seguenti sezioni descrivono le tecniche avanzate per eseguire i modelli e svilupparli per TensorFlow Lite nelle app per Android.

Ambienti di runtime avanzati

Oltre agli ambienti di runtime standard e di Google Play Services per TensorFlow Lite, esistono altri ambienti di runtime che puoi utilizzare con la tua app per Android. L'utilizzo più probabile in questi ambienti è se disponi di un modello di machine learning che utilizza operazioni ML non supportate dall'ambiente di runtime standard per TensorFlow Lite.

  • runtime Flex per TensorFlow Lite
  • Runtime TensorFlow Lite personalizzato

Il runtime Flex di TensorFlow Lite consente di includere operatori specifici richiesti per il modello. Come opzione avanzata per l'esecuzione del modello, puoi creare TensorFlow Lite per Android in modo da includere gli operatori e le altre funzionalità necessarie per eseguire il modello di machine learning TensorFlow. Per ulteriori informazioni, consulta la pagina relativa alla creazione di TensorFlow Lite per Android.

API C e C++

TensorFlow Lite fornisce anche un'API per l'esecuzione di modelli che utilizzano C e C++. Se la tua app utilizza l'NDK di Android, ti consigliamo di utilizzare questa API. Puoi utilizzare questa API anche se vuoi poter condividere codice tra più piattaforme. Per ulteriori informazioni su questa opzione di sviluppo, consulta la pagina Strumenti di sviluppo.

Esecuzione del modello basato su server

In generale, dovresti eseguire modelli nella tua app su un dispositivo Android per beneficiare di una minore latenza e di una migliore privacy dei dati per i tuoi utenti. Tuttavia, in alcuni casi l'esecuzione di un modello su un cloud server, fuori dal dispositivo, è una soluzione migliore. Ad esempio, se hai un modello di grandi dimensioni che non si comprime facilmente a una dimensione adatta ai dispositivi Android dei tuoi utenti o che può essere eseguito con prestazioni ragionevoli su questi dispositivi. Questo approccio potrebbe essere la soluzione preferita anche se la priorità è una prestazione coerente del modello su un'ampia gamma di dispositivi.

Google Cloud offre una suite di servizi per l'esecuzione dei modelli di machine learning TensorFlow. Per ulteriori informazioni, consulta la pagina dei prodotti di IA e machine learning di Google Cloud.

Sviluppo e ottimizzazione di modelli personalizzati

I percorsi di sviluppo più avanzati probabilmente includeranno lo sviluppo di modelli di machine personalizzati e l'ottimizzazione di questi modelli per l'uso sui dispositivi Android. Se prevedi di creare modelli personalizzati, assicurati di considerare l'applicazione di tecniche di quantizzazione ai modelli per ridurre i costi di memoria e di elaborazione. Per ulteriori informazioni su come creare modelli ad alte prestazioni da utilizzare con TensorFlow Lite, consulta Best practice per le prestazioni nella sezione Modelli.