Jeśli Twoja aplikacja korzysta z niestandardowych modeli TensorFlow Lite, możesz wdrożyć je za pomocą uczenia maszynowego Firebase. Wdrażając modele za pomocą Firebase, możesz zmniejszyć początkowy rozmiar pobierania aplikacji i aktualizować modele ML aplikacji bez publikowania nowej wersji. 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 uruchamiania 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 języka Dart musisz zintegrować 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 zostało to jeszcze zrobione.
W katalogu głównym projektu Flutter uruchom to polecenie, aby zainstalować wtyczkę do pobierania modelu ML:
flutter pub add firebase_ml_model_downloaderOdbuduj projekt:
flutter run
1. Wdrażanie modelu
Wdrażaj niestandardowe modele TensorFlow za pomocą konsoli Firebase lub pakietów Firebase Admin SDK w językach 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 określoną nazwę. 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 najnowszą wersję modelu 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 funkcja 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 zacznij aktualizować go w tle.
Jeśli nie ma dostępnego modelu lokalnego, ta funkcja 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ć pobieranie, 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 z nim związane, 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 pobieranie w kodzie inicjującym, ale możesz to zrobić w dowolnym momencie przed użyciem modelu.
3. Przeprowadzanie wnioskowania na podstawie danych wejściowych
Teraz, gdy masz już 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 języka Dart musisz zintegrować natywne biblioteki TensorFlow Lite dla iOS i Androida.
Dodatek: bezpieczeństwo modelu
Niezależnie od tego, w jaki sposób 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 związanego z rozłożeniem i ponownym wykorzystaniem kodu przez konkurencję. Zanim jednak użyjesz w aplikacji modelu niestandardowego, musisz mieć świadomość tego ryzyka.