Bu kılavuzda, Android için Firebase'de ML Kit'ten nasıl geçiş yapılacağı açıklanmaktadır.
Gradle içe aktarmalarını güncelleme
ML Kit SDK'sı, her ML Kit API'si için yalnızca bir bağımlılık gerektirir. firebase-ml-vision veya firebase-ml-natural-language gibi ortak 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 modeller indirilmelidir. 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.kts) 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 çıktı | 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
Özel modelleri barındırmak ve indirmek için modellerinizi Cloud Storage'a taşıyın ve LocalModel kullanarak yüklemek üzere uygulamanıza indirme mantığı ekleyin. Ayrıntılar için
Firebase ML'den Cloud Storage'a taşıma kılavuzuna bakın. |
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.kts) 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.LocalModel Manuel olarak indirilmesi gerekir. Firebase'de barındırılan uzaktan modeller kullanımdan kaldırıldı. Ayrıntılı bilgi için Firebase ML'den Cloud Storage'a taşıma kılavuzuna bakın. |
| 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 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 önekini 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 hizmetinegetInstance()yapılan çağrılar, özellik giriş noktasınagetClient()yapılan çağrılarla değiştirilir. - Çince ve Korece gibi diğer komut dosyalarını tanımak için ek kitaplıklar kullanmaya başladığımızdan
TextRecognizeriçin varsayılan örnek oluşturma kaldırıldı. Latin alfabesi metin tanıma modeliyle varsayılan seçenekleri kullanmak içincom.google.android.gms:play-services-mlkit-text-recognitionbağımlılığını beyan edin veTextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)kullanın. ImageLabelerveObjectDetectoriçin özel model desteği sunulduğundan bu iki özelliğin varsayılan olarak başlatılması kaldırıldı. Örneğin,ImageLabelingiçinde temel modelle varsayılan seçenekleri kullanmak içincom.google.mlkit:image-labelingüzerinde bir bağımlılık bildirin ve Java'daImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)kullanın.- Tüm işleyiciler (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ıFragmentveyaAppCompatActivityiçinde kullanıyorsanız bunu yapmanın bir yoluFragmentveyaAppCompatActivityüzerindeLifecycleOwner.getLifecycle()'ı çağırmak ve ardındanLifecycle.addObserver'ı çağırmaktır. - Vision API'lerindeki
processImage()vedetectInImage(), tutarlılık içinprocess()olarak yeniden adlandırıldı. - Natural Language API'ler artık "dil kodu" yerine "dil etiketi" (BCP 47 standardında tanımlandığı şekilde) terimini kullanıyor.
xxxOptionssınıflarındaki getter yöntemleri kaldırıldı.InputImagesınıfındakigetBitmap()yöntemi (FirebaseVisionImageyerine) 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 ML Kit hızlı başlangıç örneğindekiBitmapUtils.javabölümüne bakın.FirebaseVisionImageMetadatakaldırıldığındanwidth,height,rotationDegrees,formatgibi resim meta verileriniInputImage'ın oluşturma yöntemlerine iletmeniz yeterlidir.
Eski ve yeni Kotlin yöntemlerine ilişkin bazı örnekler aşağıda 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 lifecycle 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 lifecycle 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 modellerin sunulabileceği iki yöntem vardır:
- Google Play Hizmetleri aracılığıyla, diğer adıyla "thin" (ö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ı yani "paketlenmiş" olarak: Bu, uygulama boyutunu artırır ancak modelin hemen kullanılabilir olmasını sağlar.
İki uygulama arasında küçük farklılıklar vardır. "Paketlenmiş" sürüm, "basit" sürüme göre çeşitli iyileştirmeler içerir. 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, diğer adıyla "thin" (ö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ı yani "paketlenmiş" olarak: Bu, uygulama indirme boyutunu artırır ancak modelin hemen kullanılabilir olmasını sağlar.
Uygulamaların davranışı aynıdır.
Translation
TranslateLanguageartık dil etiketleri (EN) yerine sabitleri için okunabilir adlar (ör.ENGLISH) kullanıyor. Ayrıca artık@IntDefyerine@StringDefve sabitin değeri, eşleşen BCP 47 dil etiketi.
AutoML Image Labeling (kullanımdan kaldırıldı)
AutoML kullanarak görüntü etiketleme için özel modeller indirme özelliği kullanımdan kaldırıldı ve 15 Haziran 2027'de devre dışı bırakılacak. Modelleri barındırmak için Cloud Storage'ı kullanmanız ve bunun yerine modelleri indirmek için uygulamanıza indirme mantığı eklemeniz gerekir. Ayrıntılı bilgi için Firebase ML'den Cloud Storage'a taşıma kılavuzuna bakın.
Nesne Algılama ve İzleme
Uygulamanızda kaba sınıflandırma ile nesne tespit etme kullanılıyorsa yeni SDK'nın, algılanan nesneler için 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) { ... }
"Bilinmeyen" kategorisi kaldırıldı. Bir nesnenin sınıflandırmasına ilişkin güven düzeyi düşük olduğunda herhangi bir etiket döndürmeyiz.
Firebase bağımlılıklarını kaldırma
Taşıma işleminden sonra Firebase bağımlılıklarını kaldırın. Şu adımları uygulayın:
- Uygulamanızın modül (uygulama düzeyinde) dizinindeki
google-services.jsonyapı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.kts) Google Hizmetleri Gradle eklentisini Strict Version Matcher eklentisiyle değiştirin:
Önce
plugins { id("com.android.application") id("com.google.gms.google-services") } android { // … }
Sonra
plugins { id("com.android.application") id("com.google.android.gms.strict-version-matcher-plugin") } android { // … }
- Projenizdeki (kök düzeyinde) Gradle dosyasında (
build.gradle.kts) Google Hizmetleri Gradle eklentisi sınıf yolunu, StrictVersionMatcher eklentisinin sınıf yoluyla değiştirin:
Önce
buildscript { dependencies { // ... classpath("com.google.gms:google-services:4.3.3") } }
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 bizimle iletişime geçmek için kullanabileceğiniz kanalları özetlediğimiz topluluk sayfamızı ziyaret edin.