iOS için taşıma

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Ön koşullar

Kodunuzu taşımaya başlamadan önce aşağıdaki şartları karşıladığınızdan emin olun:

  • ML Kit Xcode 13.2.1 veya sonraki sürümleri destekler.
  • ML Kit, iOS 10 veya sonraki sürümleri destekler.
  • ML Kit, 32 bit mimarileri (i386 ve Armv7) desteklemez. ML Kit, 64 bit mimarileri (x86_64 ve Arm64) destekler.
  • ML Kit kitaplığı yalnızca cocoapod olarak sağlanır. Çerçeveleri ve cocoapod'ları birlikte kullanamazsınız. Bu nedenle, bu kitaplığı kullanmak için önce cocoapod'ları kullanmak üzere geçiş yapmanız gerekir.

CocoaPods'u güncelle

Uygulamanızın Podfile dosyasında ML Kit iOS cocoaPods'un bağımlılıklarını güncelleyin:

APIEski kapsül adlarıYeni kapsül adları
Barkod tarama Firebase/MLVision
Firebase/MLVisionBarcodeModel
GoogleMLKit/Barkod Taraması
Yüz algılama Firebase/MLVision
Firebase/MLVisionFaceModel
GoogleMLKit/FaceDetection
Resim etiketleme Firebase/MLVision
Firebase/MLVisionLabelModel
GoogleMLKit/Görüntü Etiketleme
Nesne algılama ve izleme Firebase/MLVisionObjectDetection GoogleMLKit/Nesne Algılama
Metin tanıma Firebase/MLVision
Firebase/MLVisionTextModel
GoogleMLKit/Metin Tanıma
AutoML resim etiketleme (paket modeli) Firebase/MLVisionAutoML GoogleMLKit/ResimEtiketlemeÖzel
AutoML resim etiketleme (Firebase'den model indirme) Firebase/MLVisionAutoML GoogleMLKit/ImageLabelingCustom
GoogleMLKit/BağlantıFirebase
Dil Kimliği Firebase/MLNaturalLanguage
Firebase/MLNLLanguageID
GoogleMLKit/Dil Kimliği
Akıllı yanıt Firebase/MLNaturalLanguage
Firebase/MLNLSmartAnswer
GoogleMLKit/Akıllı Yanıt
Çevir Firebase/MLNaturalLanguage
Firebase/MLNLÇeviri
GoogleMLKit/Çevir

Sınıfların, sıralamaların ve türlerin adlarını güncelleme

Genel olarak, sınıflar, sıralamalar ve türler aşağıdaki gibi yeniden adlandırılmalıdır:

  • Swift: Vision ön ekini sınıf adlarından ve sıralamalardan kaldırın
  • Hedef C: Hem FIRVision hem de FIR sınıf adı ve sıralama ön ekini MLK tarihine kadar değiştirin

Bazı sınıf adları ve türleri için bu genel kural geçerli değildir:

Swift

Eski sınıf veya türYeni sınıf veya tür
AutoMLLocalModel YerelModel
AutoMLUzakModel ÖzelUzakModel
VisionBarcodeDetectionGeri çağırma işlevi Barkod Tarama Çağrısı
VisionBarcode Algılayıcı Barkod Tarama
VisionBarcodeDetectorSeçenekler Barkod Tarama Seçenekleri
GörselGörüntü VisionImage (değişiklik yok)
Görüş Noktası VisionPoint (değişiklik yok)
VisionOnDeviceAutoMLImageLabelerSeçenekleri ÖzelResimEtiketleyiciSeçenekleri
VisionOnDeviceImageLabelerSeçenekleri ResimEtiketleyiciSeçenekleri

Objective-C

Eski sınıf veya türYeni sınıf veya tür
FIRAutoMLYerelModel MLKLocalModel
FIRAutoMLRemoteModel MLKCustomRemoteModel
FIRVisionBarcodeDetectionGeri çağırma MLKBarcodeScanningCallback
FIRVisionBarkod Dedektörü MLKBarcodeScanner
FIRVisionBarcodeDetectorSeçenekler MLKBarcodeScannerOptions
FIRVIsion Görüntüsü MLKVisionGörüntü
FIRVisionOnDeviceAutoMLImageLabelerSeçenekleri MLKCustomImageLabelerSeçenekleri
FIRVisionOnDeviceImageLabelerOptions MLKImageLabelerSeçenekleri
FIRVisionPoint MLKVisionNokta

Objective-C

Yöntem adlarını güncelleyin

Yöntem adlarını şu kurallara göre güncelleyin:

  • Alan giriş noktası sınıfları (Vision, NaturalLanguage) artık mevcut değil. Bu görevler, göreve özel sınıflarla değiştirildi. Algılayıcıları almak için çeşitli fabrika yöntemlerine yönelik çağrıları, her algılayıcının fabrika yöntemine doğrudan aramalarla değiştirin.

  • VisionDetectorImageOrientation sınıfıyla birlikte VisionImageMetadata sınıfı kaldırıldı. Bir resmin görüntülenme yönünü belirtmek için VisionImage özelliğinin orientation özelliğini kullanın.

  • Yeni bir TextRecognizer örneği alan onDeviceTextRecognizer yöntemi, textRecognizer olarak yeniden adlandırıldı.

  • Güven özelliği TextElement, TextLine ve TextBlock dahil olmak üzere metin tanıma sonuç sınıflarından kaldırıldı.

  • Yeni bir ImageLabeler örneği almak için onDeviceImageLabeler ve onDeviceImageLabeler(options:) yöntemleri birleştirildi ve adı imageLabeler(options:) olarak değiştirildi.

  • Yeni bir ObjectDetector örneği almanın objectDetector yöntemi kaldırıldı. Bunun yerine objectDetector(options:) politikasını kullanın.

  • type özelliği ImageLabeler ile ve entityID özelliği resim etiketleme sonucu sınıfından (ImageLabel) kaldırıldı.

  • Barkod tarama API'sı detect(in _:, completion:), diğer görme API'leriyle tutarlı olması için process(_:, completion:) olarak yeniden adlandırıldı.

  • Natural Language API'leri artık "dil kodu" yerine "dil etiketi" (BCP-47 standardı tarafından tanımlandığı şekilde) kullanmaktadır.

  • TranslateLanguage artık dil etiketleri (.en) yerine sabit değerleri için okunabilir adlar (.english gibi) kullanıyor.

Aşağıda, eski ve yeni Swift yöntemlerinden bazıları verilmiştir:

Önceki

let options = VisionOnDeviceImageLabelerOptions()
options.confidenceThreshold = 0.75
let labeler = Vision.vision().onDeviceImageLabeler(options: options)

let detector = Vision.vision().faceDetector(options: options)

let localModel = AutoMLLocalModel(manifestPath: "automl/manifest.json")
let options = VisionOnDeviceAutoMLImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = 0.75
let labeler = vision.onDeviceAutoMLImageLabeler(options: options)

let detector = Vision.vision().objectDetector()
    

Yeni

let options = ImageLabelerOptions()
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)

let detector = FaceDetector.faceDetector(options: options)

let localModel = LocalModel(manifestPath: "automl/manifest.json")
let options = CustomImageLabelerOptions(localModel: localModel)
options.confidenceThreshold = NSNumber(value:0.75)
let labeler = ImageLabeler.imageLabeler(options: options)

let detector = ObjectDetector.objectDetector(options: ObjectDetectorOptions())
    

Aşağıda, eski ve yeni Objective-C yöntemlerine ilişkin bazı örnekler verilmiştir:

Önceki

FIRVisionOnDeviceImageLabelerOptions *options = 
    [[FIRVisionOnDeviceImageLabelerOptions alloc] init];
options.confidenceThreshold = 0.75;
FIRVisionImageLabeler *labeler = 
    [[FIRVision vision] onDeviceImageLabelerWithOptions:options];

FIRVisionFaceDetector *detector =
    [[FIRVision vision] faceDetectorWithOptions: options];

FIRAutoMLLocalModel *localModel =
    [[FIRAutoMLLocalModel alloc] initWithManifestPath:@"automl/manifest.json"];
FIRVisionOnDeviceAutoMLImageLabelerOptions *options =
    [[FIRVisionOnDeviceAutoMLImageLabelerOptions alloc]
        initWithLocalModel: localModel];
options.confidenceThreshold = 0.75
FIRVisionImageLabeler *labeler =
    [[FIRVision vision] onDeviceAutoMLImageLabelerWithOptions:options];

FIRVisionObjectDetector *detector =
    [[FIRVision vision] objectDetector];
    

Yeni

MLKImageLabelerOptions *options =
    [[MLKImageLabelerOptions alloc] init];
options.confidenceThreshold = @(0.75);
MLKImageLabeler *labeler =
    [MLKImageLabeler imageLabelerWithOptions:options];

MLKFaceDetector *detector =
    [MLKFaceDetector faceDetectorWithOptions:options];

MLKLocalModel *localModel =
    [[MLKLocalModel alloc]
        initWithManifestPath:@"automl/manifest.json"];
MLKCustomImageLabelerOptions *options =
    [[MLKCustomImageLabelerOptions alloc] initWithLocalModel:localModel];
options.confidenceThreshold = @(0.75)
MLKImageLabeler *labeler =
    [MLKImageLabeler imageLabelerWithOptions:options];

MLKObjectDetectorOptions *options = [[MLKObjectDetectorOptions alloc] init];
MLKObjectDetector *detector = [MLKObjectDetector objectDetectorWithOptions:options];
    

API'lere özel değişiklikler

Nesne algılama ve izleme

Uygulamanız nesne sınıflandırması kullanı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.

VisionObject öğesindeki VisionObjectCategory, bir tam sayı yerine ObjectLabel nesnesinde text olarak döndürülür. Olası tüm dize kategorileri DetectedObjectLabel sıralamaya dahil edilir.

.unknown kategorisinin kaldırıldığını unutmayın. Nesneyi sınıflandırma konusunda duyulan güven düşük olduğunda sınıflandırıcı hiçbir etiket döndürmez.

Eski ve yeni Swift kodunun bir örneğini aşağıda bulabilirsiniz:

Önceki

if (object.classificationCategory == .food) {
    ...
}

Yeni

if let label = object.labels.first {
  if (label.text == DetectedObjectLabel.food.rawValue) {
    ...
  }
}
// or
if let label = object.labels.first {
  if (label.index == DetectedObjectLabelIndex.food.rawValue) {
    ...
  }
}

Aşağıda, eski ve yeni Objective-C kodunun bir örneği verilmiştir:

Önceki

if (object.classificationCategory == FIRVisionObjectCategoryFood) {
    ...
}

Yeni

if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) {
  ...
}
// or
if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) {
  ...
}

Firebase bağımlılarını kaldırma (İsteğe bağlı)

Bu adım yalnızca şu koşullar karşılandığında geçerlidir:

  • Firebase ML Kit, kullandığınız tek Firebase bileşenidir
  • Yalnızca cihaz üzerinde API'ler kullanıyorsanız
  • Model sunma kullanmıyorsanız

Bu durumda, Firebase bağımlılıklarını taşıma işleminden sonra kaldırabilirsiniz. Şu adımları uygulayın:

  • GoogleService-Info.plist dosyasını uygulamanızın dizininden ve Xcode projenizden silerek Firebase yapılandırma dosyasını kaldırın.
  • pod 'Firebase/Analytics' gibi Firebase cocoapod'larını Podfile dosyanızdan kaldırın.
  • Kodunuzdan FirebaseApp.configure() gibi FirebaseApp ilk kullanıma hazırlama işlemlerini kaldırın.
  • Firebase destek sitesindeki talimatlara göre Firebase uygulamanızı Firebase konsolundan silin.

Yardım Alma

Herhangi bir sorunla karşılaşırsanız lütfen bizimle iletişime geçebileceğiniz kanalları özetlediğimiz Topluluk sayfamızı inceleyin.