iOS için taşıma

Ön koşullar

Kodunuzu taşımaya başlamadan önce, şu gereksinimleri 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 Kiti, 32 bit mimarileri (i386 ve armv7) desteklemez. ML Kit, 64 bit mimarileri (x86_64 ve arm64) destekler.
  • Makine Öğrenimi Kiti kitaplığı yalnızca cocoapod olarak sağlanır. Çerçeveleri ve cocoapod'ları birlikte kullanamazsınız. Bu nedenle, bu kitaplığı kullanmak için öncelikle cocoapod'ları kullanmak üzere geçiş yapmanız gerekir.

Cocoapods'u güncelle

Uygulamanızın Podfile dosyasında ML Kit iOS cocoapod'ları için bağımlılıkları güncelleyin:

APIEski kapsül adlarıYeni kapsül adları
Barkod tarama Firebase/MLVision
Firebase/MLVisionBarcodeModel
GoogleMLKit/BarcodeScanning
Yüz algılama Firebase/MLVision
Firebase/MLVisionFaceModel
GoogleMLKit/FaceDetection
Resim etiketleme Firebase/MLVision
Firebase/MLVisionLabelModel
GoogleMLKit/Resim Etiketleme
Nesne algılama ve izleme Firebase/MLVisionObjectDetection GoogleMLKit/ObjectDetection
Metin tanıma Firebase/MLVision
Firebase/MLVisionTextModel
GoogleMLKit/TextRecognition
AutoML görüntüleri etiketleme (paketlenmiş model) Firebase/MLVisionAutoML GoogleMLKit/ImageLabelingCustom
AutoML görüntü etiketleme (Firebase'den model indirme) Firebase/MLVisionAutoML GoogleMLKit/ImageLabelingCustom
GoogleMLKit/LinkFirebase
Dil kimliği Firebase/MLNaturalLanguage
Firebase/MLNLDil Kimliği
GoogleMLKit/LanguageID
Akıllı yanıt Firebase/MLNaturalLanguage
Firebase/MLNLAkıllı Yanıt
GoogleMLKit/SmartReply
Çeviri Firebase/MLNaturalLanguage
Firebase/MLNLTranslate
GoogleMLKit/Çeviri

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

Genel olarak sınıflar , enum'lar ve türlerin şu şekilde yeniden adlandırılması gerekir:

  • Swift: Sınıf adlarından ve numaralandırmalardan Vision önekini kaldırın
  • Hedef-C: Hem FIRVision hem de FIR sınıf adı ve numaralandırma öneklerini değiştirin sanatçı: MLK

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 LocalModel
AutoMLRemoteModel CustomRemoteModel
VisionBarcodeDetectionCallback BarcodeScanningCallback
VisionBarcodeDetector BarcodeScanner
VisionBarcodeDetectorOptions BarcodeScannerOptions
VisionImage VisionImage (değişiklik yok)
VisionPoint VisionPoint (değişiklik yok)
VisionOnDeviceAutoMLImageLabelerOptions CustomImageLabelerOptions
VisionOnDeviceImageLabelerOptions ImageLabelerOptions

Objective-C

Eski sınıf veya türYeni sınıf veya tür
FIRAutoMLLocalModel MLKLocalModel
FIRAutoMLRemoteModel MLKCustomRemoteModel
FIRVisionBarcodeDetectionCallback MLKBarcodeScanningCallback
FIRVisionBarcodeDetector MLKBarcodeScanner
FIRVisionBarcodeDetectorOptions MLKBarcodeScannerOptions
FIRVisionImage MLKVisionImage
FIRVisionOnDeviceAutoMLImageLabelerOptions MLKCustomImageLabelerOptions
FIRVisionOnDeviceImageLabelerOptions MLKImageLabelerOptions
FIRVisionPoint MLKVisionPoint

Objective-C

Yöntem adlarını güncelleme

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

  • Alan giriş noktası sınıfları (Vision, NaturalLanguage) artık mevcut değil. Onlar yerini göreve özgü sınıflar aldı. Algılayıcıların çağrıları her bir algılayıcının fabrika yöntemine yönlendirmeye çalışır.

  • VisionImageMetadata sınıfı ve VisionDetectorImageOrientation sıralaması Şunun orientation özelliğini kullan: Bir resmin ekran yönünü belirtmek için VisionImage.

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

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

  • onDeviceImageLabeler ve onDeviceImageLabeler(options:) yöntemleri yeni ImageLabeler örneği birleştirildi ve şu şekilde yeniden adlandırıldı: imageLabeler(options:).

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

  • type özelliği ImageLabeler alan adından kaldırıldı ve entityID özelliği, ImageLabel resim etiketleme sonucu sınıfından kaldırıldı.

  • detect(in _:, completion:) barkod tarama API'si şu şekilde yeniden adlandırıldı: process(_:, completion:) kullanın.

  • Natural Language API'lerinde artık "language tag" terimi kullanılıyor ( BCP-47 standardı) kullanın.

  • TranslateLanguage artık sabit değerleri için okunabilir adlar (ör. .english) kullanıyor .

Aşağıda eski ve yeni Swift yöntemlerine ilişkin bazı örnekler 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'ye özel değişiklikler

Nesne algılama ve izleme

Uygulamanızda nesne sınıflandırması kullanılıyorsa yeni SDK'nın değiştiğini unutmayın yöntemi, algılanan nesneler için sınıflandırma kategorisini döndürür.

VisionObject öğesindeki VisionObjectCategory, ObjectLabel içinde text olarak döndürülür. nesnesini ifade eder. Olası tüm dize kategorileri DetectedObjectLabel sıralaması.

.unknown kategorisinin kaldırıldığını unutmayın. Sınıflandırmanın güvenilirliği bir nesne düşükse sınıflandırıcı hiç etiket döndürmemiştir.

Aşağıda eski ve yeni Swift koduna bir örnek verilmiştir:

Ö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 koduna bir örnek 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ı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ıyorsunuz
  • Model sunmayı kullanmıyorsunuz

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

  • GoogleService-Info.plist dosyasını silerek Firebase yapılandırma dosyasını kaldırın. dosyanızı uygulamanızın dizininden ve Xcode projenizden kaldırın.
  • pod 'Firebase/Analytics' gibi Firebase cocoapod'larını Podfile'ınızdan kaldırın.
  • Kodunuzdan FirebaseApp.configure() gibi FirebaseApp başlatma işlemlerini kaldırın.
  • Şu tarihe göre 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.