Gradle içe aktarmalarını güncelleme
Yeni SDK, her ML Kit API için yalnızca bir bağımlılık gerektirir. Herhangi bir
firebase-ml-vision
veya firebase-ml-natural-language
gibi ortak kitaplıklar.
ML Kit, Google Play Hizmetleri'ne bağlı kitaplıklar için com.google.android.gms
ad alanını kullanır.
Vision API'leri
Pakete dahil modeller, uygulamanızın bir parçası olarak teslim edilir. İnce modeller indirilmelidir. Bazı API'ler hem paket halinde hem de ince olarak, bazıları ise yalnızca tek bir biçimde kullanılabilir veya diğeri:
API | Gruplandırılanlar | İnce |
---|---|---|
Metin tanıma | x (beta) | x |
Yüz algılama | x | x |
Barkod tarama | x | x |
Resim etiketleme | x | x |
Nesne algılama ve izleme | x | - |
Modülünüzdeki ML Kit Android kitaplıkları için bağımlılıkları güncelleyin (uygulama-
level) Gradle dosyası (genellikle app/build.gradle
): Aşağıdaki tablolara göre:
Paket olarak sunulan modeller
API | Eski Eserler | Yeni Yapı |
---|---|---|
Barkod tarama | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-barcode-model:16.0.1 |
com.google.mlkit:barcode-scanning:17.3.0 |
Yüz konturu | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-face-model:19.0.0 |
com.google.mlkit:face-detection:16.1.7 |
Resim etiketleme | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-image-label-model:19.0.0 |
com.google.mlkit:image-labeling:17.0.9 |
Nesne algılama | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3 |
com.google.mlkit:object-detection:17.0.2 |
İnce modeller
API | Eski Eserler | Yeni Yapı |
---|---|---|
Barkod tarama | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 |
Yüz algılama | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
Metin tanıma | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-text-recognition:19.0.1 |
AutoMLVision Edge
API | Eski Yapı | Yeni Yapı |
---|---|---|
İndirmeden AutoML | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-automl:18.0.3 |
com.google.mlkit:image-labeling-custom:17.0.3 |
İndirilebilen AutoML | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-automl:18.0.3 |
com.google.mlkit:image-labeling-custom:17.0.3
. com.google.mlkit:linkfirebase:17.0.0 |
Natural Language API'leri
Pakete dahil modeller, uygulamanızın bir parçası olarak teslim edilir. İnce modeller indirilmelidir:
API | Gruplandırılanlar | İnce |
---|---|---|
Dil kimliği | x | x |
Akıllı yanıt | x | x (beta) |
Modülünüzdeki ML Kit Android kitaplıkları için bağımlılıkları güncelleyin (uygulama-
level) Gradle dosyası (genellikle app/build.gradle
): Aşağıdaki tablolara göre:
Paket olarak sunulan modeller
API | Eski Eserler | Yeni Yapı |
---|---|---|
Dil kimliği | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7 |
com.google.mlkit:language-id:17.0.6 |
Akıllı yanıt | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7 |
com.google.mlkit:smart-reply:17.0.4 |
İnce modeller
API | Eski Eserler | Yeni Yapı |
---|---|---|
Dil kimliği | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7 |
com.google.android.gms:play-services-mlkit-language-id:17.0.0 |
Akıllı yanıt | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7 |
com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1 |
Sınıf adlarını güncelleyin
Sınıfınız bu tabloda görünüyorsa belirtilen değişikliği yapın:
Eski sınıf | Yeni sınıf |
---|---|
com.google.firebase.ml.common.FirebaseMLException | com.google.mlkit.common.MlKitException |
com.google.firebase.ml.vision.common.FirebaseVisionImage | com.google.mlkit.vision.common.InputImage |
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector | com.google.mlkit.vision.barcode.BarcodeScanner |
com.google.firebase.ml.vision.labeler.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabeler |
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector | com.google.mlkit.vision.barcode.BarcodeScanner |
com.google.firebase.ml.vision.automl.FirebaseAutoMLLocalModel | com.google.mlkit.common.model.LocalModel |
com.google.firebase.ml.vision.automl.FirebaseAutoMLRemoteModel | com.google.mlkit.common.model.CustomRemoteModel |
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerOptions | com.google.mlkit.vision.label.defaults.ImageLabelerOptions |
com.google.firebase.ml.vision.label.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabel |
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceAutoMLImageLabelerOptions | com.google.mlkit.vision.label.custom.CustomImageLabelerOptions |
com.google.firebase.ml.vision.objects.FirebaseVisionObjectDetectorOptions | com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions |
Diğer sınıflar için aşağıdaki kuralları uygulayın:
- Sınıf adından
FirebaseVision
önekini kaldırın. Firebase
önekiyle başlayan diğer ön ekleri sınıf adından kaldırın.
Ayrıca, paket adlarında com.google.firebase.ml
önekinin yerini alır
com.google.mlkit
ile.
Yöntem adlarını güncelleme
Minimum kod değişikliği yapılır:
- Algılayıcı/tarayıcı/etiketleyici/çevirmen... örneklendirme değiştirildi. Artık her özelliğin kendi giriş noktası vardır. Örneğin: BarcodeScanning, TextRecognition, ImageLabeling, Çeviri....
getInstance()
Firebase hizmetine yapılan çağrıların yerini, özellik giriş noktasınıngetClient()
yöntemine yapılan çağrılar alır. - Çince ve Korece gibi diğer alfabeleri tanımak için ek kitaplıklar sunduğumuzdan, TextValidater için varsayılan örnek oluşturma kaldırıldı. Latin alfabesi metin tanıma modeliyle varsayılan seçenekleri kullanmak için lütfen
com.google.android.gms:play-services-mlkit-text-recognition
öğesine bir bağımlılık bildirin veTextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
kullanın. - Bu iki özellik için özel model desteği sunduğumuzdan, ImageLabeler ve ObjectDetector için varsayılan örneklendirme kaldırıldı. Örneğin, ImageLabeling'de temel model ile varsayılan seçenekleri kullanmak için lütfen
com.google.mlkit:image-labeling
öğesine bir bağımlılık bildirin, Java'daImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)
kullanın. - Tüm herkese açık kullanıcı adları (algılayıcı/tarayıcı/etiketleyici/çevirmen...) kapatılabilir. Bu nesneler artık kullanılmayacaksa
close()
yönteminin çağrıldığından emin olun. Bunları bir Fragment veya AppCompatActivity içinde kullanıyorsanız bunu yapmanın kolay bir yolu, Fragment veya AppCompatActivity'de LifecycleOwner.getLifecycle() yöntemini ve ardından Lifecycle.addObserver'ı çağırmaktır. - Vision API'lerdeki
processImage()
vedetectInImage()
, tutarlılık içinprocess()
olarak yeniden adlandırıldı . - Natural Language API'lerinde artık "dil kodu" yerine "dil etiketi" (BCP 47 standardı tarafından tanımlandığı şekilde) kullanılıyor.
- xxxOptions sınıflarındaki Getter yöntemleri kaldırıldı.
- GirişImage sınıfındaki (
FirebaseVisionImage
yerine) getBitmap() yöntemi artık herkese açık arayüzün bir parçası olarak desteklenmemektedir. Bit eşlemin çeşitli girişlerden dönüştürülmesi için lütfen ML Kit hızlı başlangıç örneğindekiBitmapUtils.java
bölümüne bakın. - FirebaseVisionImageMetadata kaldırıldı. Yalnızca genişlik, yükseklik, rotasyonDegrees ve biçim gibi resim meta verilerini GirişImages'ın oluşturma yöntemlerine aktarabilirsiniz.
Aşağıda, eski ve yeni Kotlin yöntemlerine ilişkin bazı örnekler verilmiştir:
Önceki
// Construct image labeler with base model and default options. val imageLabeler = FirebaseVision.getInstance().onDeviceImageLabeler // Construct object detector with base model and default options. val objectDetector = FirebaseVision.getInstance().onDeviceObjectDetector // Construct face detector with given options val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options) // Construct image labeler with local AutoML model val localModel = FirebaseAutoMLLocalModel.Builder() .setAssetFilePath("automl/manifest.json") .build() val autoMLImageLabeler = FirebaseVision.getInstance() .getOnDeviceAutoMLImageLabeler( FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F) .build() )
Yeni
// Construct image labeler with base model and default options. val imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS) // Optional: add life cycle observer lifecycle.addObserver(imageLabeler) // Construct object detector with base model and default options. val objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS) // Construct face detector with given options val faceDetector = FaceDetection.getClient(options) // Construct image labeler with local AutoML model val localModel = LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") .build() val autoMLImageLabeler = ImageLabeling.getClient( CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F).build())
Aşağıda, eski ve yeni Java yöntemlerine ilişkin bazı örnekler verilmiştir:
Önceki
// Construct image labeler with base model and default options. FirebaseVisionImageLabeler imagelLabeler = FirebaseVision.getInstance().getOnDeviceImageLabeler(); // Construct object detector with base model and default options. FirebaseVisionObjectDetector objectDetector = FirebaseVision.getInstance().getOnDeviceObjectDetector(); // Construct face detector with given options FirebaseVisionFaceDetector faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options); // Construct image labeler with local AutoML model FirebaseAutoMLLocalModel localModel = new FirebaseAutoMLLocalModel.Builder() .setAssetFilePath("automl/manifest.json") .build(); FirebaseVisionImageLabeler autoMLImageLabeler = FirebaseVision.getInstance() .getOnDeviceAutoMLImageLabeler( FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F) .build());
Yeni
// Construct image labeler with base model and default options. ImageLabeler imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS); // Optional: add life cycle observer getLifecycle().addObserver(imageLabeler); // Construct object detector with base model and default options. ObjectDetector objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS); // Construct face detector with given options FaceDetector faceDetector = FaceDetection.getClient(options); // Construct image labeler with local AutoML model LocalModel localModel = new LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") .build(); ImageLabeler autoMLImageLabeler = ImageLabeling.getClient( new CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F).build());
API'ye özel değişiklikler
Barkod Tarama
Barcode Scanning API için modeller artık iki şekilde teslim edilebilir:
- "İnce" olarak da bilinen Google Play Hizmetleri (önerilir) aracılığıyla: Bu şekilde uygulama boyutu küçültülür ve model uygulamalar arasında paylaşılır. Ancak geliştiricilerin, modeli ilk kez kullanmadan önce indirdiğinden emin olmaları gerekir.
- Uygulamanızın APK'sı ("paketlenmiş" olarak da bilinir) ile: Bu, uygulama boyutunu artırır ancak modelin hemen kullanılabilir olduğu anlamına gelir.
Bu iki uygulama biraz farklıdır. "Gruplandırılmış" sürümde "ince" sürüme kıyasla bazı iyileştirmeler vardır. Bu farklarla ilgili ayrıntıları Barkod Tarama API'si yönergelerinde bulabilirsiniz.
Yüz Algılama
Yüz Algılama API'si için modeller iki şekilde sunulabilir:
- "İnce" olarak da bilinen Google Play Hizmetleri (önerilir) aracılığıyla: Bu şekilde uygulama boyutu küçültülür ve model uygulamalar arasında paylaşılır. Ancak geliştiricilerin, modeli ilk kez kullanmadan önce indirdiğinden emin olmaları gerekir.
- Uygulamanızın APK'sı ("gruplandırılmış" olarak da bilinir) ile - Bu, uygulama indirme boyutunu artırır ancak modelin hemen kullanılabilir olduğu anlamına gelir.
Uygulama davranışları aynıdır.
Translation
TranslateLanguage
, artık dil etiketleri (EN
) yerine sabit değerleri (ör.ENGLISH
) için okunabilir adlar kullanıyor. Ayrıca, @IntDef yerine @StringDef olarak adlandırılmıştır. Sabit değerin değeri, eşleşen BCP 47 dil etiketi olacaktır.Uygulamanızda "cihaz boşta" indirme koşulu seçeneği kullanılıyorsa bu seçeneğin kaldırıldığını ve artık kullanılamayacağını unutmayın. "Cihaz şarj etme" seçeneğini kullanmaya devam edebilirsiniz. Daha karmaşık bir davranış istiyorsanız
RemoteModelManager.download
yöntemini kendi mantığınıza göre erteleyebilirsiniz.
AutoML Resim Etiketleme
Uygulamanız "cihaz boşta" indirme koşulu seçeneğini kullanıyorsa şuna dikkat edin: seçeneği kaldırıldı ve artık kullanılamıyor. Yine de "cihaz şarjı" seçeneği var.
Daha karmaşık bir davranış için çağrıyı erteleyebilirsiniz
Kendi mantığınızda RemoteModelManager.download
.
Nesne Algılama ve İzleme
Uygulamanız genel sınıflandırmayla nesne algılamayı kullanıyorsa şunu unutmayın: yeni SDK, algılanan öğe için sınıflandırma kategorisini döndürme şeklini değiştirdi nesneler'i tıklayın.
Sınıflandırma kategorisi
DetectedObject.Label
değerini girmeniz gerekir. için olası tüm kategoriler
genel sınıflandırıcı, PredefinedCategory
sınıfında yer alır.
Aşağıda, eski ve yeni Kotlin koduna bir örnek verilmiştir:
Önceki
if (object.classificationCategory == FirebaseVisionObject.CATEGORY_FOOD) { ... }
Yeni
if (!object.labels.isEmpty() && object.labels[0].text == PredefinedCategory.FOOD) { ... } // or if (!object.labels.isEmpty() && object.labels[0].index == PredefinedCategory.FOOD_INDEX) { ... }
Aşağıda, eski ve yeni Java koduna bir örnek verilmiştir:
Önceki
if (object.getClassificationCategory() == FirebaseVisionObject.CATEGORY_FOOD) { ... }
Yeni
if (!object.getLabels().isEmpty() && object.getLabels().get(0).getText().equals(PredefinedCategory.FOOD)) { ... } // or if (!object.getLabels().isEmpty() && object.getLabels().get(0).getIndex() == PredefinedCategory.FOOD_INDEX) { ... }
"Bilinmeyen" kategorisi kaldırılmıştır. Bir nesnenin sınıflandırmasının güveni düşük olduğunda hiç etiket döndürmeyiz.
Firebase bağımlılıklarını kaldırın (İsteğe bağlı)
Bu adım yalnızca aşağıdaki koşullar karşılandığında geçerlidir:
- Firebase ML Kit, kullandığınız tek Firebase bileşenidir.
- Yalnızca cihaz üzerindeki API'leri kullanırsınız.
- Model sunmayı kullanmıyorsunuz.
Bu durumda, taşıma işleminden sonra Firebase bağımlılıklarını kaldırabilirsiniz. Şu adımları uygulayın:
- Uygulamanızın modül (uygulama düzeyi) dizinindeki google-services.json yapılandırma dosyasını silerek Firebase yapılandırma dosyasını kaldırın.
- Modülünüzdeki (uygulama düzeyinde) Gradle dosyanızdaki (genellikle app/build.gradle) Google Services Gradle eklentisini Strict Version Matcher eklentisiyle değiştirin:
Önce
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // … }
Sonra
apply plugin: 'com.android.application' apply plugin: 'com.google.android.gms.strict-version-matcher-plugin' android { // … }
- Projenizdeki (kök düzeyi) Gradle dosyasındaki (build.gradle) Google Hizmetleri Gradle eklentisi sınıf yolunu, Strict Version Matcher eklentisine ait olanla değiştirin:
Önce
buildscript { dependencies { // ... classpath 'com.google.gms:google-services:4.3.3' // Google Services plugin } }
Sonra
buildscript { dependencies { // ... classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.1' } }
Firebase uygulamanızı Firebase konsolundan silin: Firebase destek sitesindeki talimatları uygulayın.
Yardım Alma
Herhangi bir sorunla karşılaşırsanız lütfen şurada açıklanan Topluluk sayfamıza göz atın: bağlantı kurabileceğimiz kanalları görürsünüz.