Se la tua app utilizza modelli TensorFlow Lite personalizzati, puoi utilizzare Firebase ML per eseguire il deployment dei modelli. Eseguendo il deployment dei modelli con Firebase, puoi ridurre le dimensioni del download iniziale dell'app e aggiornare i modelli ML dell'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 gestita per Dart, 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 già fatto.
Dalla directory principale del progetto Flutter, esegui il comando seguente per installare il plug-in per il download dei modelli ML:
flutter pub add firebase_ml_model_downloaderRicompila il progetto:
flutter run
1. Esegui il deployment del modello
Esegui il deployment dei modelli TensorFlow personalizzati utilizzando la Console Firebase o gli SDK Firebase Admin Python e Node.js. Consulta Eseguire il deployment e gestire i modelli personalizzati.
Dopo aver aggiunto un modello personalizzato al progetto Firebase, puoi farvi riferimento nelle tue app utilizzando 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 di seguito).
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 di modelli per scaricare l'ultima versione del modello sul dispositivo. Quindi, crea un'istanza di un interprete TensorFlow Lite con il modello.
Per avviare il download del modello, chiama il metodo getModel() del downloader di modelli, specificando il nome assegnato al modello quando l'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
|
Ottieni 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 (opzione consigliata). |
localModelUpdateInBackground
|
Ottieni il modello locale dal dispositivo e inizia ad aggiornarlo in background.
Se non è disponibile alcun modello locale, questo si comporta come latestModel. |
latestModel
|
Ottieni l'ultimo modello. Se il modello locale è l'ultima versione, restituisce il modello locale. In caso contrario, scarica l'ultimo modello. Questo comportamento si bloccherà finché non verrà scaricata l'ultima versione (non consigliato). Utilizza questo comportamento solo nei casi in cui hai bisogno esplicitamente dell'ultima versione. |
Dovresti disattivare le funzionalità correlate al modello, ad esempio disattivare o nascondere una parte dell'interfaccia utente, 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. Esegui 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 gestita per Dart, dovrai eseguire l'integrazione con le librerie TensorFlow Lite native per iOS e Android.
Appendice: sicurezza dei modelli
Indipendentemente da come rendi disponibili i modelli TensorFlow Lite per Firebase ML, Firebase ML li archivia nel formato protobuf serializzato standard nello spazio di archiviazione 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.