Jeśli Twoja aplikacja używa niestandardowych modeli TensorFlow Lite, możesz wdrożyć je za pomocą Firebase ML. Dzięki wdrażaniu modeli za pomocą Firebase możesz zmniejszyć początkowy rozmiar pobierania aplikacji i aktualizować modele ML aplikacji bez publikowania nowej wersji aplikacji. Ponadto dzięki Zdalnej konfiguracji i testom A/B możesz dynamicznie udostępniać różne modele różnym grupom użytkowników.
Modele TensorFlow Lite
Modele TensorFlow Lite to modele ML zoptymalizowane pod kątem działania na urządzeniach mobilnych. Aby uzyskać model TensorFlow Lite:
- Użyj gotowego modelu, np. jednego z oficjalnych modeli TensorFlow Lite.
- Przekonwertuj model TensorFlow, model Keras lub konkretną funkcję na TensorFlow Lite.
Pamiętaj, że w przypadku braku obsługiwanej biblioteki TensorFlow Lite dla Darta musisz zintegrować się z natywną biblioteką TensorFlow Lite dla swoich platform. Ta integracja nie jest tu opisana.
Zanim zaczniesz
Zainstaluj i zainicjuj pakiety SDK Firebase dla Flutera jeśli nie masz ich jeszcze zainstalowanych.
W katalogu głównym projektu Flutera uruchom to polecenie, aby zainstalować wtyczkę do pobierania modeli ML:
flutter pub add firebase_ml_model_downloaderPonownie skompiluj projekt:
flutter run
1. Wdróż model
Wdróż niestandardowe modele TensorFlow za pomocą konsoli Firebase lub pakietów SDK Firebase Admin Python i Node.js. Zobacz Wdrażanie modeli niestandardowych i zarządzanie nimi.
Po dodaniu modelu niestandardowego do projektu w Firebase możesz odwoływać się do niego w swoich aplikacjach, podając nazwę określoną podczas dodawania. W dowolnym momencie możesz wdrożyć nowy model TensorFlow Lite i pobrać go na urządzenia użytkowników, wywołując funkcję getModel() (patrz poniżej).
2. Pobierz model na urządzenie i zainicjuj interpreter TensorFlow Lite
Aby używać modelu TensorFlow Lite w aplikacji, najpierw pobierz jego najnowszą wersję na urządzenie za pomocą narzędzia do pobierania modeli. Następnie utwórz instancję interpretera TensorFlow Lite z modelem.
Aby rozpocząć pobieranie modelu, wywołaj metodę getModel() narzędzia do pobierania modeli, podając nazwę przypisaną do modelu podczas przesyłania, informację, czy chcesz zawsze pobierać najnowszy model, oraz warunki, w których chcesz zezwolić na pobieranie.
Możesz wybrać jeden z 3 sposobów pobierania:
| Typ pobierania | Opis |
|---|---|
localModel
|
Pobierz model lokalny z urządzenia.
Jeśli nie ma dostępnego modelu lokalnego, ta opcja działa jak latestModel. Użyj tego typu pobierania, jeśli nie chcesz sprawdzać, czy są dostępne aktualizacje modelu. Na przykład używasz Zdalnej konfiguracji do pobierania nazw modeli i zawsze przesyłasz modele pod nowymi nazwami (zalecane). |
localModelUpdateInBackground
|
Pobierz model lokalny z urządzenia i rozpocznij aktualizowanie modelu w tle.
Jeśli nie ma dostępnego modelu lokalnego, ta opcja działa jak latestModel. |
latestModel
|
Pobierz najnowszy model. Jeśli model lokalny jest najnowszą wersją, zwraca model lokalny. W przeciwnym razie pobierz najnowszy model. To działanie będzie blokować do momentu pobrania najnowszej wersji (niezalecane). Używaj tego działania tylko w przypadkach, gdy wyraźnie potrzebujesz najnowszej wersji. |
Do czasu potwierdzenia pobrania modelu wyłącz funkcje związane z modelem, np. wyszarz lub ukryj część interfejsu.
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;
// ...
});
Wiele aplikacji rozpoczyna zadanie pobierania w kodzie inicjującym, ale możesz to zrobić w dowolnym momencie, zanim zaczniesz używać modelu.
3. Przeprowadź wnioskowanie na podstawie danych wejściowych
Teraz, gdy masz plik modelu na urządzeniu, możesz użyć go z interpreterem TensorFlow Lite do przeprowadzenia wnioskowania. W przypadku braku obsługiwanej biblioteki TensorFlow Lite dla Darta musisz zintegrować się z natywnymi bibliotekami TensorFlow Lite dla iOS i Androida.
Dodatek: bezpieczeństwo modelu
Niezależnie od tego, jak udostępniasz modele TensorFlow Lite w Firebase ML, Firebase ML przechowuje je w standardowym serializowanym formacie protobuf w pamięci lokalnej.
Teoretycznie oznacza to, że każdy może skopiować Twój model. W praktyce jednak większość modeli jest tak ściśle powiązana z aplikacją i zaciemniona przez optymalizacje, że ryzyko jest podobne do ryzyka, że konkurenci rozmontują i ponownie wykorzystają Twój kod. Mimo to przed użyciem modelu niestandardowego w aplikacji musisz mieć świadomość tego ryzyka.