Prasyarat
Sebelum mulai memigrasikan kode, pastikan Anda memenuhi persyaratan berikut:
- ML Kit mendukung Xcode 13.2.1 atau yang lebih baru.
- ML Kit mendukung iOS versi 15.5 atau yang lebih baru.
- ML Kit tidak mendukung arsitektur 32-bit (i386 dan armv7). ML Kit mendukung arsitektur 64-bit (x86_64 dan arm64).
- Library ML Kit hanya disediakan sebagai cocoapods. Anda tidak dapat menggabungkan framework dan cocoapods, jadi untuk menggunakan library ini, Anda harus bermigrasi terlebih dahulu untuk menggunakan cocoapods.
Mengupdate Cocoapods
Perbarui dependensi untuk cocoapods iOS ML Kit di Podfile aplikasi Anda:
API | Nama pod lama | Nama pod baru |
---|---|---|
Pemindaian kode batang | Firebase/MLVision Firebase/MLVisionBarcodeModel |
GoogleMLKit/BarcodeScanning |
Deteksi wajah | Firebase/MLVision Firebase/MLVisionFaceModel |
GoogleMLKit/FaceDetection |
Pelabelan gambar | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/ImageLabeling |
Deteksi dan pelacakan objek | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
Pengenalan teks | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/TextRecognition |
Pelabelan gambar AutoML (model yang dipaketkan) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
Pelabelan gambar AutoML (download model dari Firebase) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
ID Bahasa | Firebase/MLNaturalLanguage Firebase/MLNLLanguageID |
GoogleMLKit/LanguageID |
Smart Reply | Firebase/MLNaturalLanguage Firebase/MLNLSmartReply |
GoogleMLKit/SmartReply |
Terjemahan | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Translate |
Memperbarui nama class, enum, dan jenis
Secara umum, class , enum, dan jenis perlu diganti namanya sebagai berikut:
- Swift: Menghapus awalan
Vision
dari nama class dan enum - Objective-C: Ganti nama class dan awalan enum
FIRVision
danFIR
denganMLK
Untuk beberapa nama dan jenis class, aturan umum ini tidak berlaku:
Swift
Class atau jenis lama | Class atau jenis baru |
---|---|
AutoMLLocalModel | LocalModel |
AutoMLRemoteModel | CustomRemoteModel |
VisionBarcodeDetectionCallback | BarcodeScanningCallback |
VisionBarcodeDetector | BarcodeScanner |
VisionBarcodeDetectorOptions | BarcodeScannerOptions |
VisionImage | VisionImage (tidak ada perubahan) |
VisionPoint | VisionPoint (tidak ada perubahan) |
VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
Class atau jenis lama | Class atau jenis baru |
---|---|
FIRAutoMLLocalModel | MLKLocalModel |
FIRAutoMLRemoteModel | MLKCustomRemoteModel |
FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
FIRVisionBarcodeDetector | MLKBarcodeScanner |
FIRVisionBarcodeDetectorOptions | MLKBarcodeScannerOptions |
FIRVisionImage | MLKVisionImage |
FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
FIRVisionPoint | MLKVisionPoint |
Objective-C
Memperbarui nama metode
Perbarui nama metode sesuai dengan aturan berikut:
Class titik entri domain (
Vision
,NaturalLanguage
) tidak ada lagi. Class tersebut telah diganti dengan class khusus tugas. Ganti panggilan ke berbagai metode factory untuk mendapatkan detektor dengan panggilan langsung ke setiap metode factory detektor.Class
VisionImageMetadata
telah dihapus, beserta enumVisionDetectorImageOrientation
. Gunakan propertiorientation
dariVisionImage
untuk menentukan orientasi tampilan gambar.Metode
onDeviceTextRecognizer
yang mendapatkan instanceTextRecognizer
baru telah diganti namanya menjaditextRecognizer
.Properti keyakinan telah dihapus dari class hasil pengenalan teks, termasuk
TextElement
,TextLine
, danTextBlock
.Metode
onDeviceImageLabeler
danonDeviceImageLabeler(options:)
untuk mendapatkan instanceImageLabeler
baru telah digabungkan dan diganti namanya menjadiimageLabeler(options:)
.Metode
objectDetector
untuk mendapatkan instanceObjectDetector
baru telah dihapus. GunakanobjectDetector(options:)
sebagai gantinya.Properti
type
telah dihapus dariImageLabeler
dan propertientityID
telah dihapus dari class hasil pemberian label gambar,ImageLabel
.API pemindaian kode batang
detect(in _:, completion:)
telah diganti namanya menjadiprocess(_:, completion:)
agar konsisten dengan API visi lainnya.Natural Language API kini menggunakan istilah "tag bahasa" (sebagaimana ditentukan oleh standar BCP-47), bukan "kode bahasa".
TranslateLanguage
kini menggunakan nama yang dapat dibaca (seperti .english) untuk konstantanya, bukan tag bahasa ( seperti .en).
Berikut beberapa contoh metode Swift lama dan baru:
Lama
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()
Baru
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())
Berikut beberapa contoh metode Objective-C lama dan baru:
Lama
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];
Baru
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];
Perubahan khusus API
Deteksi dan pelacakan objek
Jika aplikasi Anda menggunakan klasifikasi objek, perhatikan bahwa SDK baru telah mengubah cara menampilkan kategori klasifikasi untuk objek yang terdeteksi.
VisionObjectCategory
di VisionObject
ditampilkan sebagai text
dalam objek ObjectLabel
, bukan bilangan bulat. Semua kemungkinan kategori string disertakan dalam
enum DetectedObjectLabel
.
Perhatikan bahwa kategori .unknown
telah dihapus. Jika keyakinan dalam mengklasifikasikan objek rendah, pengklasifikasi tidak akan menampilkan label sama sekali.
Berikut adalah contoh kode Swift lama dan baru:
Lama
if (object.classificationCategory == .food) { ... }
Baru
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) { ... } }
Berikut adalah contoh kode Objective-C lama dan baru:
Lama
if (object.classificationCategory == FIRVisionObjectCategoryFood) { ... }
Baru
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) { ... } // or if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) { ... }
Menghapus dependensi Firebase (Opsional)
Langkah ini hanya berlaku jika kondisi berikut terpenuhi:
- Firebase ML Kit adalah satu-satunya komponen Firebase yang Anda gunakan
- Anda hanya menggunakan API di perangkat
- Anda tidak menggunakan penayangan model
Jika demikian, Anda dapat menghapus dependensi Firebase setelah migrasi. Ikuti langkah-langkah berikut:
- Hapus file konfigurasi Firebase dengan menghapus file GoogleService-Info.plist dari direktori aplikasi dan project Xcode Anda.
- Hapus cocoapod Firebase, seperti
pod 'Firebase/Analytics'
, dari Podfile Anda. - Hapus inisialisasi FirebaseApp, seperti
FirebaseApp.configure()
dari kode Anda. - Hapus aplikasi Firebase Anda di Firebase console sesuai dengan petunjuk di situs dukungan Firebase.
Mendapatkan Bantuan
Jika Anda mengalami masalah, lihat halaman Komunitas kami yang menjelaskan saluran yang tersedia untuk menghubungi kami.