Ö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:
API | Eski 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 deFIR
sınıf adı ve sıralama ön ekiniMLK
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ür | Yeni 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ür | Yeni 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 birlikteVisionImageMetadata
sınıfı kaldırıldı. Bir resmin görüntülenme yönünü belirtmek içinVisionImage
özelliğininorientation
özelliğini kullanın.Yeni bir
TextRecognizer
örneği alanonDeviceTextRecognizer
yöntemi,textRecognizer
olarak yeniden adlandırıldı.Güven özelliği
TextElement
,TextLine
veTextBlock
dahil olmak üzere metin tanıma sonuç sınıflarından kaldırıldı.Yeni bir
ImageLabeler
örneği almak içinonDeviceImageLabeler
veonDeviceImageLabeler(options:)
yöntemleri birleştirildi ve adıimageLabeler(options:)
olarak değiştirildi.Yeni bir
ObjectDetector
örneği almanınobjectDetector
yöntemi kaldırıldı. Bunun yerineobjectDetector(options:)
politikasını kullanın.type
özelliğiImageLabeler
ile veentityID
ö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çinprocess(_:, 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.