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 Fluttera jeśli nie masz ich jeszcze zainstalowanych.
W katalogu głównym projektu Fluttera 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ę, którą określisz. 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żyć 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ć aktualizacji 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ć, dopóki nie zostanie pobrana najnowsza wersja (niezalecane). Używaj tego działania tylko w przypadkach, gdy wyraźnie potrzebujesz najnowszej wersji. |
Do czasu potwierdzenia pobrania modelu należy wyłączyć funkcje związane z modelem, np. wyszarzyć lub ukryć 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.