Flutter ile özel bir TensorFlow Lite modeli kullanın

Uygulamanız özel TensorFlow Lite modelleri kullanıyorsa modellerinizi dağıtmak için Firebase ML'yi kullanabilirsiniz. Modelleri Firebase ile dağıtarak uygulamanızın ilk indirme boyutunu azaltabilir ve uygulamanızın yeni bir sürümünü yayınlamadan uygulamanızın makine öğrenimi modellerini güncelleyebilirsiniz. Uzaktan Yapılandırma ve A/B Testi ile farklı modelleri farklı kullanıcı gruplarına dinamik olarak sunabilirsiniz.

TensorFlow Lite modelleri

TensorFlow Lite modelleri, mobil cihazlarda çalışacak şekilde optimize edilmiş ML modelleridir. TensorFlow Lite modelini edinmek için:

Dart için bakımı yapılmış bir TensorFlow Lite kitaplığının olmaması durumunda, platformlarınız için yerel TensorFlow Lite kitaplığıyla entegrasyon yapmanız gerekeceğini unutmayın. Bu entegrasyon burada belgelenmemiştir.

Sen başlamadan önce

  1. Henüz yapmadıysanız Flutter için Firebase SDK'larını yükleyin ve başlatın .

  2. Flutter projenizin kök dizininden, ML model indirici eklentisini yüklemek için aşağıdaki komutu çalıştırın:

    flutter pub add firebase_ml_model_downloader
    
  3. Projenizi yeniden oluşturun:

    flutter run
    

1. Modelinizi dağıtın

Firebase konsolunu veya Firebase Admin Python ve Node.js SDK'larını kullanarak özel TensorFlow modellerinizi dağıtın. Bkz. Özel modelleri dağıtma ve yönetme .

Firebase projenize özel bir model ekledikten sonra, belirttiğiniz adı kullanarak uygulamalarınızda modele referans verebilirsiniz. İstediğiniz zaman yeni bir TensorFlow Lite modelini dağıtabilir ve getModel() öğesini çağırarak yeni modeli kullanıcıların cihazlarına indirebilirsiniz (aşağıya bakın).

2. Modeli cihaza indirin ve TensorFlow Lite yorumlayıcısını başlatın

TensorFlow Lite modelinizi uygulamanızda kullanmak için öncelikle model indiriciyi kullanarak modelin en son sürümünü cihaza indirin. Ardından modelle bir TensorFlow Lite yorumlayıcısını başlatın.

Model indirmeyi başlatmak için, modeli yüklediğinizde modele atadığınız adı, her zaman en son modeli indirmek isteyip istemediğinizi ve hangi koşullar altında indirmeye izin vermek istediğinizi belirterek, model indiricisinin getModel() yöntemini çağırın.

Üç indirme davranışından birini seçebilirsiniz:

İndirme türü Tanım
localModel Yerel modeli cihazdan alın. Kullanılabilir yerel model yoksa bu, latestModel gibi davranır. Model güncellemelerini kontrol etmekle ilgilenmiyorsanız bu indirme türünü kullanın. Örneğin, model adlarını almak için Remote Config'i kullanıyorsunuz ve modelleri her zaman yeni adlar altında yüklüyorsunuz (önerilen).
localModelUpdateInBackground Yerel modeli cihazdan alın ve modeli arka planda güncellemeye başlayın. Kullanılabilir yerel model yoksa bu, latestModel gibi davranır.
latestModel En son modeli alın. Yerel model en son sürümse yerel modeli döndürür. Aksi takdirde en son modeli indirin. Bu davranış, en son sürüm indirilene kadar engellenecektir (önerilmez). Bu davranışı yalnızca en son sürüme açıkça ihtiyaç duyduğunuz durumlarda kullanın.

Modelin indirildiğini onaylayana kadar modelle ilgili işlevleri (örneğin, kullanıcı arayüzünüzün grileştirilmesi veya bir kısmının gizlenmesi) devre dışı bırakmalısınız.

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;

      // ...
    });

Çoğu uygulama, indirme görevini kendi başlatma kodunda başlatır, ancak bunu, modeli kullanmanız gerekmeden önce herhangi bir noktada yapabilirsiniz.

3. Giriş verileri üzerinde çıkarım yapın

Artık model dosyanız cihazda olduğuna göre, çıkarım yapmak için onu TensorFlow Lite yorumlayıcısıyla birlikte kullanabilirsiniz. Dart için bakımı yapılmış bir TensorFlow Lite kitaplığının yokluğunda, iOS ve Android için yerel TensorFlow Lite kitaplıklarıyla entegrasyon yapmanız gerekecektir.

Ek: Model güvenliği

TensorFlow Lite modellerinizi Firebase ML'de nasıl kullanılabilir hale getirdiğinizden bağımsız olarak, Firebase ML bunları yerel depolamada standart serileştirilmiş protobuf formatında saklar.

Teorik olarak bu, herkesin modelinizi kopyalayabileceği anlamına gelir. Ancak uygulamada çoğu model, uygulamaya o kadar özeldir ve optimizasyonlar nedeniyle karartılmıştır ki, risk, rakiplerinizin kodunuzu parçalara ayırıp yeniden kullanması ile benzerdir. Ancak uygulamanızda özel bir model kullanmadan önce bu riskin farkında olmalısınız.