Se la tua app utilizza modelli TensorFlow Lite personalizzati, puoi utilizzare Firebase ML per eseguire il deployment dei modelli. Se esegui il deployment dei modelli con Firebase, puoi ridurre le dimensioni del download iniziale della tua app e aggiornare i modelli di ML della tua app senza rilasciare una nuova versione. Inoltre, con Remote Config e A/B Testing, puoi pubblicare dinamicamente modelli diversi per 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:
- Utilizza un modello predefinito, ad esempio uno dei modelli TensorFlow Lite ufficiali
- Converti un modello TensorFlow, un modello Keras o una funzione concreta in TensorFlow Lite.
Tieni presente che, in assenza di una libreria TensorFlow Lite per Dart gestita, dovrai eseguire l'integrazione con la libreria TensorFlow Lite nativa per le tue piattaforme. Questa integrazione non è documentata qui.
Prima di iniziare
Installa e inizializza gli SDK Firebase per Flutter se non l'hai ancora fatto.
Dalla directory radice del progetto Flutter, esegui questo comando per installare il plug-in di download del modello ML:
flutter pub add firebase_ml_model_downloaderRicostruisci il progetto:
flutter run
1. Esegui il deployment del modello
Esegui il deployment dei tuoi modelli TensorFlow personalizzati utilizzando la console Firebase o gli SDK Firebase Admin Python e Node.js. Consulta Eseguire il deployment e gestire modelli personalizzati.
Dopo aver aggiunto un modello personalizzato al progetto Firebase, puoi fare riferimento al
modello nelle tue app usando il nome specificato. In qualsiasi momento, puoi eseguire il deployment di un nuovo modello TensorFlow Lite e scaricarlo sui dispositivi degli utenti chiamando getModel() (vedi sotto).
2. Scarica il modello sul dispositivo e inizializza un interprete TensorFlow Lite
Per utilizzare il modello TensorFlow Lite nella tua app, utilizza prima il downloader del modello per scaricare l'ultima versione del modello sul dispositivo. Poi, crea un'istanza di 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 l'ultimo modello e le condizioni in cui
vuoi consentire il download.
Puoi scegliere tra tre comportamenti di download:
| Tipo di download | Descrizione |
|---|---|
localModel
|
Recupera il modello locale dal dispositivo.
Se non è disponibile alcun modello locale, questo
si comporta come latestModel. Utilizza questo
tipo di download se non ti interessa
verificare la presenza di aggiornamenti del modello. Ad esempio,
utilizzi Remote Config per recuperare
i nomi dei modelli e carichi sempre i modelli
con nuovi nomi (consigliato). |
localModelUpdateInBackground
|
Recupera il modello locale dal dispositivo e
inizia ad aggiornarlo in background.
Se non è disponibile alcun modello locale, questo
si comporta come latestModel. |
latestModel
|
Acquista l'ultimo modello. Se il modello locale è l'ultima versione, restituisce il modello locale. In caso contrario, scarica l'ultimo modello. Questo comportamento verrà bloccato finché non verrà scaricata l'ultima versione (non consigliato). Utilizza questo comportamento solo nei casi in cui hai bisogno esplicitamente dell'ultima versione. |
Devi disattivare le funzionalità correlate al modello, ad esempio disattivare o nascondere parte della UI, finché 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. Esegue l'inferenza sui dati di input
Ora che hai il file del modello sul dispositivo, puoi utilizzarlo con l'interprete TensorFlow Lite per eseguire l'inferenza. In assenza di una libreria TensorFlow Lite per Dart gestita, dovrai eseguire l'integrazione con le librerie TensorFlow Lite native per iOS e Android.
Appendice: Sicurezza del modello
Indipendentemente da come rendi disponibili i tuoi modelli TensorFlow Lite per Firebase ML, Firebase ML li archivia nel formato protobuf serializzato standard nell'archivio locale.
In teoria, ciò significa che chiunque può copiare il tuo modello. Tuttavia, in pratica, la maggior parte dei modelli è così specifica per l'applicazione e offuscata dalle ottimizzazioni che il rischio è simile a quello dei concorrenti che disassemblano e riutilizzano il tuo codice. Tuttavia, devi essere consapevole di questo rischio prima di utilizzare un modello personalizzato nella tua app.