Ön koşullar
Kodunuzu taşımaya başlamadan önce, aşağıdaki gereksinimleri karşıladığınızdan emin olun:
- ML Kit, Xcode 13.2.1 veya sonraki sürümlerini 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 sunulur. Çerçeveleri ve cocoapod'ları karıştıramazsınız. Dolayısıyla bu kitaplığı kullanabilmek için öncelikle cocoapod'ları kullanmak üzere geçiş yapmanız gerekir.
CocoaPods güncelleme
Uygulamanızın Podfile dosyasında ML Kit iOS cocoapod'larının bağımlılıklarını güncelleyin:
API | Eski 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 |
Görüntü etiketleme | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/Görüntü Etiketleme |
Nesne algılama ve izleme | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
Metin tanıma | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/Metin Tanıma |
AutoML görüntü 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/MLNLLanguageID |
GoogleMLKit/Dil Kimliği |
Akıllı yanıt | Firebase/MLNaturalLanguage Firebase/MLNLSmartReply |
GoogleMLKit/Akıllı Yanıt |
Çevir | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Çeviri |
Sınıfların, numaralandırmaların ve türlerin adlarını güncelleme
Genel olarak sınıflar , numaralandırmalar ve türlerin aşağıdaki gibi yeniden adlandırılması gerekir:
- Swift: Sınıf adlarından ve numaralandırmalardan
Vision
önekini kaldırın - Objective-C: Hem
FIRVision
hem deFIR
sınıf adını ve numaralandırma ön ekleriniMLK
ile 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 | 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ür | Yeni 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ı aşağıdaki kurallara göre güncelleyin:
Alan giriş noktası sınıfları (
Vision
,NaturalLanguage
) artık mevcut değil. Bunların yerine göreve özgü sınıflar kullanıma sunuldu. Dedektörleri her bir algılayıcının fabrika yöntemine doğrudan çağrılarla almak için çeşitli fabrika yöntemlerine yapılan çağrıları değiştirin.VisionImageMetadata
sınıfı veVisionDetectorImageOrientation
sıralaması kaldırıldı. Resmin görüntüleme yönünü belirtmek içinVisionImage
öğesininorientation
ö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 sonucu sınıflarından kaldırıldı.Yeni bir
ImageLabeler
örneği almak için kullanılanonDeviceImageLabeler
veonDeviceImageLabeler(options:)
yöntemleri birleştirildi veimageLabeler(options:)
olarak yeniden adlandırıldı.Yeni bir
ObjectDetector
örneği almak için kullanılanobjectDetector
yöntemi kaldırıldı. Bunun yerineobjectDetector(options:)
politikasını kullanın.type
özelliğiImageLabeler
öğesinden kaldırıldı veentityID
özelliğiImageLabel
resim etiketleme sonucu sınıfından kaldırıldı.Barkod tarama API'sinin
detect(in _:, completion:)
adı, diğer Vision API'leriyle tutarlı olacak şekildeprocess(_:, completion:)
olarak değiştirildi.Natural Language API'ler artık "dil kodu" yerine "dil etiketi" terimini (BCP-47 standardı tarafından tanımlandığı gibi) kullanmaktadır.
TranslateLanguage
, sabit değerleri için artık dil etiketleri (.en gibi) yerine okunabilir adlar (.english gibi) kullanıyor.
Aşağıda eski ve yeni Swift yöntemlerine 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 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ız nesne sınıflandırması kullanıyorsa yeni SDK'nın algılanan nesnelerin sınıflandırma kategorisini döndürme şeklinin değiştiğini unutmayın.
VisionObject
öğesindeki VisionObjectCategory
, bir ObjectLabel
nesnesinde tam sayı yerine text
olarak döndürülür. Olası tüm dize kategorileri DetectedObjectLabel
sıralamasına dahil edilir.
.unknown
kategorisinin kaldırıldığını unutmayın. Bir nesneyi sınıflandırma güveni düşük olduğunda sınıflandırıcı hiç etiket döndürmez.
Eski ve yeni Swift kodu ö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ı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 sunma 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 dizininden ve Xcode projenizden GoogleService-Info.plist dosyasını silerek Firebase yapılandırma dosyasını kaldırın.
- Tüm Firebase cocoapod'larını (ör.
pod 'Firebase/Analytics'
) Podfile dosyanızdan kaldırın. - Kodunuzdan
FirebaseApp.configure()
gibi FirebaseApp başlatma işlemlerini kaldırın. - Firebase destek sitesindeki instructions uygulayarak Firebase konsolunda Firebase uygulamanızı silin.
Yardım Alma
Herhangi bir sorunla karşılaşırsanız lütfen bizimle iletişime geçebileceğiniz kanalları belirttiğimiz Topluluk sayfamıza göz atın.