Ön koşullar
Kodunuzu taşımaya başlamadan önce aşağıdaki koşulları karşıladığınızdan emin olun:
- ML Kit, Xcode 13.2.1 veya sonraki sürümleri destekler.
- ML Kit, 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. Framework'ları ve cocoapods'u birlikte kullanamazsınız. Bu nedenle, bu kitaplığı kullanmak için önce cocoapods'u kullanmaya geçmeniz gerekir.
Cocoapods'u güncelleme
Uygulamanızın Podfile dosyasında ML Kit iOS cocoapods 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/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ıf, enum ve tür adlarını güncelleme
Genel olarak sınıfların, enum'ların ve türlerin aşağıdaki şekilde yeniden adlandırılması gerekir:
- Swift: Sınıf adlarından ve enum'lardan
Vision
ön ekini kaldırın - Objective-C: Hem
FIRVision
hem deFIR
sınıf adını ve enum ö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ğildir. Bunlar, göreve özel sınıflarla değiştirildi. Dedektör almak için çeşitli fabrika yöntemlerine yapılan çağrıları, her dedektörün fabrika yöntemine yapılan doğrudan çağrılarla değiştirin.VisionImageMetadata
sınıfı,VisionDetectorImageOrientation
enum ile birlikte 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ş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
'ten,entityID
özelliği ise resim etiketleme sonucu sınıfıImageLabel
'tan kaldırıldı.Barkod tarama API'si
detect(in _:, completion:)
, diğer görüntüleme 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ığı şekilde) terimini kullanıyor.
TranslateLanguage
artık sabitleri için dil etiketleri (ör. .en) yerine okunabilir adlar ( ör. .english) kullanıyor.
Eski ve yeni Swift yöntemlerine dair 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ı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
içindeki VisionObjectCategory
, tam sayı yerine ObjectLabel
nesnesinde text
olarak döndürülür. Olası tüm dize kategorileri DetectedObjectLabel
enum'una dahildir.
.unknown
kategorisinin kaldırıldığını unutmayın. Bir nesnenin sınıflandırılma güveni düşük olduğunda sınıflandırıcı hiç 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ılıkları kaldırma (İsteğ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 cihaz üzerindeki API'leri kullanıyorsanız
- Model yayınlamayı kullanmıyorsanız
Bu durumda, taşıma işleminden sonra Firebase bağımlılıkları 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.
- Pod dosyanızdan
pod 'Firebase/Analytics'
gibi Firebase cocoapod'larını kaldırın. FirebaseApp.configure()
gibi FirebaseApp başlatma kodlarını kodunuzdan kaldırın.- Firebase destek sitesindeki talimatları 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ı açıkladığımız Topluluk sayfamıza göz atın.