Gradle içe aktarmalarını güncelleme
Yeni SDK, her ML Kit API'si için yalnızca bir bağımlılık gerektirir. firebase-ml-vision
veya firebase-ml-natural-language
gibi yaygın kitaplıkları belirtmeniz gerekmez.
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 edilen modeller, uygulamanızın bir parçası olarak sunulur. İnce modellerin indirilmesi gerekir. Bazı API'ler hem paketlenmiş hem de ince biçimde, diğerleri ise yalnızca bir biçimde kullanılabilir:
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 (uygulama düzeyinde) Gradle dosyanızda (genellikle app/build.gradle
) ML Kit Android kitaplıklarının bağımlılıklarını aşağıdaki tablolara göre güncelleyin:
Paketlenmiş modeller
API | Eski Yapılar | 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 Yapılar | 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 |
İndirme ile 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 edilen modeller, uygulamanızın bir parçası olarak sunulur. İnce modeller indirilmelidir:
API | Gruplandırılanlar | İnce |
---|---|---|
Dil kimliği | x | x |
Akıllı yanıt | x | x (beta) |
Modülünüzdeki (uygulama düzeyinde) Gradle dosyanızda (genellikle app/build.gradle
) ML Kit Android kitaplıklarının bağımlılıklarını aşağıdaki tablolara göre güncelleyin:
Paketlenmiş modeller
API | Eski Yapılar | 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 Yapılar | 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üncelleme
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 şu kurallara uyun:
- Sınıf adından
FirebaseVision
önekini kaldırın. - Sınıf adından
Firebase
önekiyle başlayan diğer önekleri kaldırın.
Ayrıca, paket adlarında com.google.firebase.ml
ön ekini com.google.mlkit
ile değiştirin.
Yöntem adlarını güncelleme
Kodda çok az değişiklik yapılması gerekir:
- Algılayıcı/tarayıcı/etiketleyici/çevirmen... örneği değiştirildi. Artık her özelliğin kendi giriş noktası var. Örneğin: BarcodeScanning, TextRecognition, ImageLabeling, Translation…. Firebase hizmeti
getInstance()
çağrıları, özellik giriş noktasınıngetClient()
yöntemi çağrılarıyla değiştirilir. - Çince ve Korece gibi diğer alfabeleri tanımak için ek kitaplıklar kullanıma sunduğumuzdan TextRecognizer 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
bağımlılığını beyan edin veTextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
kullanın. - ImageLabeler ve ObjectDetector için özel model desteği sunulduğundan bu iki özellik için varsayılan örnek oluşturma kaldırıldı. Örneğin, ImageLabeling'de temel modelle varsayılan seçenekleri kullanmak için lütfen
com.google.mlkit:image-labeling
bağımlılığını beyan edin ve Java'daImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)
kullanın. - Tüm işleyiciler (algılayıcı/tarayıcı/etiketleyici/çevirmen vb.) kapatılabilir. Bu nesneler artık kullanılmayacaksa
close()
yönteminin çağrıldığından emin olun. Bunları bir Parça veya AppCompatActivity'de kullanıyorsanız bunu yapmanın kolay bir yolu, Parça veya AppCompatActivity'de LifecycleOwner.getLifecycle()'ı, ardından Lifecycle.addObserver'ı çağırmaktır. - Tutarlılık için Vision API'lerdeki
processImage()
vedetectInImage()
,process()
olarak yeniden adlandırıldı. - Natural Language API'leri artık "dil kodu" yerine "dil etiketi" (BCP 47 standardında tanımlandığı şekliyle) terimini kullanıyor.
- xxxOptions sınıflarındaki alıcı yöntemleri kaldırıldı.
- InputImage sınıfındaki getBitmap() yöntemi(
FirebaseVisionImage
yerine) artık herkese açık arayüzün bir parçası olarak desteklenmiyor. Çeşitli girişlerden bit eşlem dönüştürmek için lütfen ML Kit hızlı başlangıç örneğindekiBitmapUtils.java
bölümüne bakın. - FirebaseVisionImageMetadata kaldırıldı. Artık genişlik, yükseklik, rotationDegrees, biçim gibi görüntü meta verilerini InputImages'in oluşturma yöntemlerine iletebilirsiniz.
Eski ve yeni Kotlin yöntemlerine ilişkin bazı örnekleri aşağıda bulabilirsiniz:
Ö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())
Eski ve yeni Java yöntemlerine ilişkin bazı örnekleri aşağıda bulabilirsiniz:
Ö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 özgü değişiklikler
Barkod Tarama
Barkod Tarama API'sinde modeller artık iki şekilde sunulabilir:
- Google Play Hizmetleri aracılığıyla (önerilir): Bu yöntem, uygulama boyutunu küçültür ve model uygulamalar arasında paylaşılır. Ancak geliştiricilerin, modeli ilk kez kullanmadan önce indirmesi gerekir.
- Uygulamanızın APK'sı ile birlikte (diğer adıyla "paketlenmiş"): Bu, uygulama boyutunu artırır ancak modelin hemen kullanılabilir olmasını sağlar.
İki uygulama biraz farklıdır. "Paketlenmiş" sürümde, "ince" sürüme kıyasla çeşitli iyileştirmeler yapılmıştır. Bu farklılıklarla ilgili ayrıntıları Barcode Scanning API kurallarında bulabilirsiniz.
Yüz Algılama
Yüz Algılama API'sinde modeller iki şekilde sunulabilir:
- Google Play Hizmetleri aracılığıyla (önerilir): Bu yöntem, uygulama boyutunu küçültür ve model uygulamalar arasında paylaşılır. Ancak geliştiricilerin, modeli ilk kez kullanmadan önce indirmesi gerekir.
- Uygulamanızın APK'sı ile (diğer adıyla "paketlenmiş"): Bu, uygulama indirme boyutunu artırır ancak modelin hemen kullanılabilir olmasını sağlar.
Uygulamaların davranışı aynıdır.
Translation
TranslateLanguage
artık dil etiketleri (EN
) yerine sabitleri için okunabilir adlar (ör.ENGLISH
) kullanıyor. Ayrıca artık @IntDef yerine @StringDef ve sabitin değeri, eşleşen BCP 47 dil etiketi.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ı" seçeneğini kullanmaya devam edebilirsiniz. Daha karmaşık bir davranış istiyorsanız
RemoteModelManager.download
işlevini kendi mantığınızla çağırabilirsiniz.
AutoML Image Labeling
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ı" seçeneğini kullanmaya devam edebilirsiniz.
Daha karmaşık bir davranış istiyorsanız RemoteModelManager.download
işlevini kendi mantığınızla çağırabilirsiniz.
Nesne Algılama ve İzleme
Uygulamanızda kaba sınıflandırma ile nesne algılama kullanılıyorsa yeni SDK'nın, algılanan nesnelerin sınıflandırma kategorisini döndürme şeklini değiştirdiğini unutmayın.
Sınıflandırma kategorisi tam sayı yerine DetectedObject.Label
örneği olarak döndürülür. Kaba sınıflandırıcı için olası tüm kategoriler PredefinedCategory
sınıfına dahil edilir.
Eski ve yeni Kotlin kodunun bir örneğini aşağıda bulabilirsiniz:
Ö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) { ... }
Eski ve yeni Java kodunun bir örneğini aşağıda bulabilirsiniz:
Ö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) { ... }
"Bilinmiyor" kategorisi kaldırıldı. Bir nesnenin sınıflandırmasının güven düzeyi düşük olduğunda herhangi bir etiket döndürmeyiz.
Firebase bağımlılıklarını kaldırma (isteğe bağlı)
Bu adım yalnızca aşağıdaki koşullar karşılandığında geçerlidir:
- Kullandığınız tek Firebase bileşeni Firebase ML Kit'tir.
- Yalnızca cihaz üzerinde API'leri kullanıyorsanız.
- Model sunma özelliğini 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üzeyinde) 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 dosyasında (genellikle app/build.gradle) Google Hizmetleri 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üzeyinde) Gradle dosyasında (build.gradle) Google Hizmetleri Gradle eklentisi sınıf yolunu, Strict Version Matcher eklentisinin sınıf yoluyla 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 destek sitesindeki talimatlara göre Firebase konsolunda Firebase uygulamanızı silin.
Yardım Alma
Herhangi bir sorunla karşılaşırsanız lütfen topluluk sayfamızı ziyaret edin. Bu sayfada, bizimle iletişime geçebileceğiniz kanallar açıklanmaktadır.