Ö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.
- ML Kit kitaplığı yalnızca cocoapod olarak sağlanır. Çerçevelerle cocoapod'ları birlikte kullanamazsınız. Bu nedenle, bu kitaplığı kullanabilmek için öncelikle cocoapod'ları kullanmaya başlamanı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:
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 |
Resim etiketleme | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/Resim Etiketleme |
Nesne algılama ve izleme | Firebase/MLVisionObjectDetection | GoogleMLKit/Nesne Algılama |
Metin tanıma | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/TextRecognition |
AutoML görüntüleri etiketleme (paketlenmiş model) | Firebase/MLVisionAutoML | GoogleMLKit/Resim EtiketlemeÖzel |
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 |
Ç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 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ı şu kurallara göre güncelleyin:
Alan giriş noktası sınıfları (
Vision
,NaturalLanguage
) artık mevcut değil. Bunların yerine göreve özel sınıflar geldi. Dedektörlerin her bir algılayıcının fabrika yöntemine doğrudan çağrılması için çeşitli fabrika yöntemlerine yapılan çağrıların yerine kullanılır.VisionImageMetadata
sınıfı veVisionDetectorImageOrientation
sıralaması kaldırıldı. Bir 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 sonuç 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 veentityID
özelliği deImageLabel
resim etiketleme sonuç sınıfından kaldırıldı.Barkod tarama API'si
detect(in _:, completion:)
, diğer görüntü API'leriyle tutarlı olacak şekildeprocess(_:, completion:)
olarak yeniden adlandırıldı.Natural Language API'lerinde artık "dil kodu" yerine "dil etiketi" (BCP-47 standardı tarafından tanımlandığı şekilde) kullanılıyor.
TranslateLanguage
, dil etiketleri (.en gibi) yerine sabit değerleri için artık okunabilir adlar (.english gibi) 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 algılanan nesneler için sınıflandırma kategorisini döndürme şeklini değiştirdiğini unutmayın.
VisionObject
içindeki VisionObjectCategory
, ObjectLabel
nesnesinde tam sayı yerine text
olarak döndürülür. Olası tüm dize kategorileri DetectedObjectLabel
sıralamasına dahildir.
.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.
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ı 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'ınızdan kaldırın.- Kodunuzdan
FirebaseApp.configure()
gibi FirebaseApp başlatma işlemlerini kaldırın. - Firebase destek sitesindeki instructions uygun şekilde Firebase uygulamanızı Firebase konsolundan silin.
Yardım Alma
Herhangi bir sorunla karşılaşırsanız bizimle iletişime geçmek için uygun kanalları özetlediğimiz Topluluk sayfamıza göz atın.