Ön koşullar
Kodunuzu taşımaya başlamadan önce şu koşulları karşıladığınızdan emin olun:
- ML Kit, Xcode 13.2.1 veya sonraki sürümleri destekler.
- ML Kiti, iOS 15.5 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 cocoapods olarak sağlanır. Çerçeveleri ve Cocoapods'leri birlikte kullanamazsınız. Bu nedenle, bu kitaplığı kullanmak için önce Cocoapods'e geçmeniz gerekir.
Cocoapods'u güncelleme
Uygulamanızın Podfile'ında ML Kit iOS cocoapods'larının bağımlılıklarını güncelleyin:
API | Eski kapsül adları | Yeni pod adı |
---|---|---|
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/ImageLabeling |
Nesne algılama ve izleme | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
Metin tanıma | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/TextRecognition |
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/LanguageID |
Akıllı yanıt | Firebase/MLNaturalLanguage Firebase/MLNLSmartReply |
GoogleMLKit/SmartReply |
Çeviri | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Translate |
Sınıfların, numaralandırılmış türlerin ve türlerin adlarını güncelleme
Genel olarak sınıfların, numaralandırılmış türlerin ve türlerin aşağıdaki şekilde 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ı ve enum önekleriniMLK
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 özgü sınıflar kullanıma sunulmuştur. Çeşitli fabrika yöntemlerinin dedektörleri alma çağrılarını, her dedektörün fabrika yöntemine yapılan doğrudan çağrılarla değiştirin.VisionImageMetadata
sınıfı veVisionDetectorImageOrientation
enum'u 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 sonucu sınıflarından kaldırıldı.Yeni bir
ImageLabeler
örneği almak için kullanılanonDeviceImageLabeler
veonDeviceImageLabeler(options:)
yöntemleri birleştirilerekimageLabeler(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
'den,entityID
özelliği ise resim etiketleme sonucu sınıfıImageLabel
'den kaldırıldı.Barkod tarama API'si
detect(in _:, completion:)
, diğer Vision API'leriyle tutarlı olması içinprocess(_:, completion:)
olarak yeniden adlandırıldı.Natural Language API'ler artık "dil kodu" yerine "dil etiketi" (BCP-47 standardında tanımlandığı şekliyle) terimini kullanıyor.
TranslateLanguage
artık dil etiketleri (ör. .en) yerine sabitleri için okunabilir adlar ( ör. .english) kullanıyor.
Eski ve yeni Swift yöntemlerine ilişkin bazı örnekleri aşağıda bulabilirsiniz:
Ö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())
Eski ve yeni Objective-C yöntemlerine dair bazı örnekleri aşağıda bulabilirsiniz:
Ö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 özgü 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
, tam sayı yerine ObjectLabel
nesnesinde text
olarak döndürülür. Olası tüm dize kategorileri DetectedObjectLabel
enum'una dahil edilir.
.unknown
kategorisinin kaldırıldığını unutmayın. Bir nesneyi sınıflandırma güvenilirliği 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) { ... } }
Eski ve yeni Objective-C kodunun bir örneğini aşağıda bulabilirsiniz:
Ö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ırma (isteğe bağlı)
Bu adım yalnızca aşağıdaki koşullar karşılandığında geçerlidir:
- Kullandığınız tek Firebase bileşeni Firebase ML Kit ise
- Yalnızca cihazdaki API'leri kullanıyorsanız
- Model sunma özelliğini kullanmıyorsanız
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.
- Podfile'ınızdan
pod 'Firebase/Analytics'
gibi Firebase cocoapod'larını kaldırın. - Kodunuzdan
FirebaseApp.configure()
gibi FirebaseApp başlatma işlemlerini kaldırın. - Firebase destek sitesindeki talimatlara göre Firebase konsolunda Firebase uygulamanızı silin.
Yardım Alma
Herhangi bir sorunla karşılaşırsanız lütfen topluluk sayfamızı ziyaret edin. Bu sayfada, bizimle iletişime geçebileceğiniz kanallar açıklanmaktadır.