Uygulamanız özel TensorFlow Lite modelleri kullanıyorsa modellerinizi dağıtmak için Firebase ML 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. Ayrıca, Remote Config ve A/B Testing ile farklı kullanıcı gruplarına farklı modelleri dinamik olarak sunabilirsiniz.
TensorFlow Lite modelleri
TensorFlow Lite modelleri, mobil cihazlarda çalışacak şekilde optimize edilmiş makine öğrenimi modelleridir. Bir TensorFlow Lite modeli edinmek için:
- Resmi TensorFlow Lite modellerinden biri gibi önceden oluşturulmuş bir model kullanın
- Bir TensorFlow modelini, Keras modelini veya somut işlevi TensorFlow Lite'a dönüştürün.
Dart için bakımlı 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
Henüz yapmadıysanız Flutter için Firebase SDK'larını kurun ve başlatın .
Flutter projenizin kök dizininden, makine öğrenimi modeli indirme eklentisini yüklemek için aşağıdaki komutu çalıştırın:
flutter pub add firebase_ml_model_downloader
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 devreye alın. Bkz. Özel modelleri dağıtma ve yönetme .
Firebase projenize özel bir model ekledikten sonra, belirttiğiniz adı kullanarak uygulamalarınızda modele başvurabilirsiniz. İstediğiniz zaman yeni bir TensorFlow Lite modelini dağıtabilir ve yeni modeli getModel()
çağırarak kullanıcıların cihazlarına indirebilirsiniz (aşağıya bakın).
2. Modeli cihaza indirin ve bir TensorFlow Lite yorumlayıcısı başlatın
TensorFlow Lite modelinizi uygulamanızda kullanmak için önce modelin en son sürümünü cihaza indirmek için model indiriciyi kullanın. Ardından, modelle bir TensorFlow Lite yorumlayıcısının örneğini oluşturun.
Model indirmeyi başlatmak için, modeli yüklerken atadığınız adı, her zaman en son modeli indirmek isteyip istemediğinizi ve indirmeye hangi koşullar altında izin vermek istediğinizi belirterek model indiricinin getModel()
yöntemini çağırın.
Üç indirme davranışı arasından seçim yapabilirsiniz:
İndirme türü | Açıklama |
---|---|
localModel | Cihazdan yerel modeli alın. Kullanılabilir bir 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 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 bir 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 engellenir (ö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 devre dışı bırakmalısınız (örneğin, kullanıcı arabiriminizin bir bölümünü grileştirme veya gizleme).
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;
// ...
});
Birçok uygulama, indirme görevini kendi başlatma kodunda başlatır, ancak bunu, modeli kullanmadan önce herhangi bir noktada yapabilirsiniz.
3. Girdi verileri üzerinde çıkarım gerçekleştirin
Artık model dosyanız cihazda olduğuna göre, çıkarım yapmak için onu TensorFlow Lite yorumlayıcısı ile kullanabilirsiniz. Dart için bakımlı bir TensorFlow Lite kitaplığının olmaması durumunda, 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'ye nasıl sunduğunuzdan bağımsız olarak, Firebase ML bunları yerel depolamada standart seri hale getirilmiş protobuf biçiminde saklar.
Teorik olarak bu, herkesin modelinizi kopyalayabileceği anlamına gelir. Bununla birlikte, pratikte çoğu model, uygulamaya o kadar özeldir ve optimizasyonlarla karmaşıktır ki, kodunuzu parçalarına ayırıp yeniden kullanan rakiplerin riskine benzer. Yine de, uygulamanızda özel bir model kullanmadan önce bu riskin farkında olmalısınız.