Ö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:
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/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 deFIR
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ü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. 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ı veVisionDetectorImageOrientation
sıralaması Şununorientation
özelliğini kullan: Bir resmin ekran yönünü belirtmek içinVisionImage
.Yeni bir
TextRecognizer
örneği alanonDeviceTextRecognizer
yöntemi ,textRecognizer
olarak yeniden adlandırıldı.Güven özelliği metinden kaldırıldı
TextElement
,TextLine
veTextBlock
dahil olmak üzere tanıma sonuç sınıfları.onDeviceImageLabeler
veonDeviceImageLabeler(options:)
yöntemleri yeniImageLabeler
örneği birleştirildi ve şu şekilde yeniden adlandırıldı:imageLabeler(options:)
.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
alan adından kaldırıldı veentityID
ö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.