Używanie niestandardowego modelu TensorFlow Lite z Flutter

Jeśli Twoja aplikacja używa niestandardowych funkcji TensorFlow Lite, możesz za pomocą Firebase ML do wdrażania modeli. Wdrażając modele za pomocą Firebase, może zmniejszyć rozmiar początkowego pobieranego pliku i zaktualizować modele ML aplikacji bez publikowania nowej wersji aplikacji. Dzięki Zdalnej konfiguracji i A/B Dzięki testowaniu 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 urządzenia. Aby pobrać model TensorFlow Lite:

Pamiętaj, że w przypadku braku biblioteki TensorFlow Lite dla Dart musisz zintegrować z natywną biblioteką TensorFlow Lite platform. Ta integracja nie jest tutaj udokumentowana.

Zanim zaczniesz

  1. Instalowanie i zainicjowanie pakietów SDK Firebase na potrzeby Flutter jeśli jeszcze nie zostało to zrobione.

  2. W katalogu głównym projektu Flutter uruchom to polecenie polecenie instalacji wtyczki do pobierania modeli ML:

    flutter pub add firebase_ml_model_downloader
    
  3. Przebuduj projekt:

    flutter run
    

1. Wdrażanie modelu

Wdróż niestandardowe modele TensorFlow za pomocą konsoli Firebase lub pakiety SDK Python dla administratorów Firebase i Node.js. Zobacz Wdrażanie modeli niestandardowych i zarządzanie nimi

Po dodaniu do projektu Firebase modelu niestandardowego możesz się odwoływać do w swoich aplikacjach o podanej przez Ciebie nazwie. W każdej chwili możesz wdrożyć nowy model TensorFlow Lite i pobrać go na użytkowników urządzenia według Dzwonię pod getModel() (patrz poniżej).

2. Pobierz model na urządzenie i zainicjuj interpreter TensorFlow Lite

Aby użyć modelu TensorFlow Lite w aplikacji, najpierw użyj narzędzia do pobierania modeli aby pobrać na urządzenie najnowszą wersję modelu. Następnie utwórz instancję Interpreter TensorFlow Lite z modelem.

Aby rozpocząć pobieranie modelu, wywołaj metodę getModel() narzędzia do pobierania modelu, określając nazwę przypisaną do modelu podczas jego przesyłania. aby zawsze pobierać najnowsze modele oraz warunki, którym 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 jest dostępny model lokalny, działa jak latestModel. Użyj tej Jeśli Cię to nie interesuje, typ pliku do pobrania sprawdzając dostępność aktualizacji modelu. Przykład: używasz Zdalnej konfiguracji do pobierania nazwy modeli i zawsze przesłane modele pod nowymi nazwami (zalecane).
localModelUpdateInBackground Pobierz model lokalny z urządzenia zacznij aktualizować model w tle. Jeśli nie jest dostępny model lokalny, działa jak latestModel.
latestModel Pobierz najnowszy model. Jeśli model lokalny to najnowsza wersja, zwraca błąd lokalny model. Jeśli nie, pobierz najnowszą wersję model. To działanie będzie blokowane do czasu pobrana najnowsza wersja (nie ). Używaj tego sposobu tylko w w których przypadku potrzebne jest najnowsze wersji.

Należy wyłączyć funkcje związane z modelem – na przykład wyszarzone lub ukryj część interfejsu użytkownika, dopóki nie potwierdzisz, że model został pobrany.

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 inicjowania, ale możesz to zrobić. więc w dowolnym momencie przed użyciem modelu.

3. Przeprowadź wnioskowanie na danych wejściowych

Po zapisaniu pliku z modelem na urządzeniu możesz go używać przy użyciu Interpreter TensorFlow Lite do wnioskowania. W przypadku braku utrzymywanego biblioteki TensorFlow Lite dla Dart, musisz zintegrować ją natywne biblioteki TensorFlow Lite na iOS i Androida.

Dodatek: zabezpieczenia modelu

Niezależnie od tego, jak udostępnisz swoje modele TensorFlow Lite Firebase ML, Firebase ML przechowuje je w standardowym zserializowanym formacie protokołu w formacie pamięci lokalnej.

Teoretycznie oznacza to, że każdy może skopiować Twój model. Pamiętaj jednak: W praktyce większość modeli jest specyficzna dla danej aplikacji i pod kątem podobnych optymalizacji, jakie stwarzają konkurencji, demontaż ponownego wykorzystania kodu. Musisz jednak wiedzieć o tym ryzyku, zanim zaczniesz niestandardowy model w swojej aplikacji.