Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Utilizzare un modello TensorFlow Lite personalizzato con Flutter

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Se la tua app utilizza modelli TensorFlow Lite personalizzati, puoi utilizzare Firebase ML per distribuire i tuoi modelli. Distribuendo i modelli con Firebase, puoi ridurre le dimensioni del download iniziale della tua app e aggiornare i modelli ML della tua app senza rilasciare una nuova versione della tua app. Inoltre, con Remote Config e A/B Testing, puoi servire in modo dinamico diversi modelli a diversi gruppi di utenti.

Modelli TensorFlow Lite

I modelli TensorFlow Lite sono modelli ML ottimizzati per l'esecuzione su dispositivi mobili. Per ottenere un modello TensorFlow Lite:

Prima di iniziare

  1. Installa e inizializza gli SDK Firebase per Flutter se non l'hai già fatto.

  2. Dalla directory principale del tuo progetto Flutter, esegui il comando seguente per installare il plug-in per il download del modello ML:

    flutter pub add firebase_ml_model_downloader
    
  3. Ricostruisci il tuo progetto:

    flutter run
    

1. Distribuisci il tuo modello

Distribuisci i tuoi modelli TensorFlow personalizzati utilizzando la console Firebase o gli SDK Firebase Admin Python e Node.js. Vedere Distribuire e gestire modelli personalizzati .

Dopo aver aggiunto un modello personalizzato al tuo progetto Firebase, puoi fare riferimento al modello nelle tue app usando il nome che hai specificato. In qualsiasi momento, puoi distribuire un nuovo modello TensorFlow Lite e scaricare il nuovo modello sui dispositivi degli utenti chiamando getModel() (vedi sotto).

2. Scaricare il modello sul dispositivo e inizializzare un interprete TensorFlow Lite

Per utilizzare il tuo modello TensorFlow Lite nella tua app, usa prima il downloader del modello per scaricare l'ultima versione del modello sul dispositivo. Quindi, istanziare un interprete TensorFlow Lite con il modello.

Per avviare il download del modello, chiama il metodo getModel() del downloader del modello, specificando il nome che hai assegnato al modello quando lo hai caricato, se vuoi scaricare sempre il modello più recente e le condizioni in cui vuoi consentire il download.

Puoi scegliere tra tre comportamenti di download:

Tipo di download Descrizione
localModel Ottieni il modello locale dal dispositivo. Se non è disponibile un modello locale, si comporta come latestModel . Usa questo tipo di download se non sei interessato a controllare gli aggiornamenti del modello. Ad esempio, stai utilizzando Remote Config per recuperare i nomi dei modelli e carichi sempre i modelli con nuovi nomi (opzione consigliata).
localModelUpdateInBackground Ottieni il modello locale dal dispositivo e inizia ad aggiornare il modello in background. Se non è disponibile un modello locale, si comporta come latestModel .
latestModel Prendi l'ultimo modello. Se il modello locale è la versione più recente, restituisce il modello locale. Altrimenti, scarica l'ultimo modello. Questo comportamento si bloccherà fino al download dell'ultima versione (non consigliato). Utilizzare questo comportamento solo nei casi in cui è necessaria esplicitamente l'ultima versione.

Dovresti disabilitare la funzionalità relativa al modello, ad esempio disattivare o nascondere parte dell'interfaccia utente, fino a quando non confermi che il modello è stato scaricato.

FirebaseModelDownloader.instance
    .getModel(
        "yourModelName",
        FirebaseModelDownloadType.localModel,
        FirebaseModelDownloadConditions(
          iosAllowsCellularAccess: true,
          iosAllowsBackgroundDownloading: false,
          androidChargingRequired: false,
          androidWifiRequired: false,
          androidDeviceIdleRequired: false,
        )
    )
    .then((customModel) {
      // Download complete. Depending on your app, you could enable the ML
      // feature, or switch from the local model to the remote model, etc.

      // The CustomModel object contains the local path of the model file,
      // which you can use to instantiate a TensorFlow Lite interpreter.
      final localModelPath = customModel.file;

      // ...
    });

Molte app avviano l'attività di download nel codice di inizializzazione, ma puoi farlo in qualsiasi momento prima di dover utilizzare il modello.

3. Eseguire l'inferenza sui dati di input

Ora che hai il tuo file modello sul dispositivo, puoi usarlo con l'interprete TensorFlow Lite per eseguire l'inferenza. Per questo, hai diverse opzioni:

Appendice: Sicurezza del modello

Indipendentemente da come rendi disponibili i tuoi modelli TensorFlow Lite a Firebase ML, Firebase ML li archivia nel formato protobuf serializzato standard nell'archiviazione locale.

In teoria, questo significa che chiunque può copiare il tuo modello. Tuttavia, in pratica, la maggior parte dei modelli sono così specifici dell'applicazione e offuscati dalle ottimizzazioni che il rischio è simile a quello dei concorrenti che smontano e riutilizzano il codice. Tuttavia, dovresti essere consapevole di questo rischio prima di utilizzare un modello personalizzato nella tua app.