Điều kiện tiên quyết
Trước khi bắt đầu di chuyển mã, hãy đảm bảo bạn đáp ứng các yêu cầu sau:
- Bộ công cụ học máy hỗ trợ Xcode 13.2.1 trở lên.
- Bộ công cụ học máy hỗ trợ iOS phiên bản 10 trở lên.
- Bộ công cụ học máy không hỗ trợ kiến trúc 32 bit (i386 và armv7). Bộ công cụ học máy hỗ trợ các kiến trúc 64 bit (x86_64 và arm64).
- Thư viện Bộ công cụ học máy chỉ được cung cấp ở dạng cocoapod. Bạn không thể kết hợp các khung và cocoapod. Vì vậy, để sử dụng thư viện này, trước tiên bạn cần di chuyển để sử dụng cocoapod.
Cập nhật Cocoapods
Cập nhật các phần phụ thuộc cho cocoapods của Bộ công cụ học máy iOS trong Podfile của ứng dụng:
API | Tên nhóm cũ | (Các) tên nhóm mới |
---|---|---|
Quét mã vạch | Firebase/MLVision Firebase/MLVisionBarcodeModel |
GoogleMLKit/BarcodeScanning |
Phát hiện khuôn mặt | Firebase/MLVision Firebase/MLVisionFaceModel |
GoogleMLKit/FaceDetection |
Gắn nhãn hình ảnh | Firebase/MLVision Firebase/MLVisionLabelModel |
GoogleMLKit/Gắn nhãn hình ảnh |
Phát hiện và theo dõi đối tượng | Firebase/MLVisionObjectDetection | GoogleMLKit/ObjectDetection |
Nhận dạng văn bản | Firebase/MLVision Firebase/MLVisionTextModel |
GoogleMLKit/Nhận dạng văn bản |
Gắn nhãn hình ảnh AutoML (mô hình theo gói) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom |
Gắn nhãn hình ảnh AutoML (tải mô hình xuống từ Firebase) | Firebase/MLVisionAutoML | GoogleMLKit/ImageLabelingCustom GoogleMLKit/LinkFirebase |
Mã ngôn ngữ | Firebase/MLNaturalLanguage Firebase/MLNLLanguageID |
GoogleMLKit/LanguageID |
Trả lời thông minh | Firebase/MLNaturalLanguage Giải pháp trả lời thông minh Firebase/MLNLSmart |
GoogleMLKit/SmartReply |
Dịch | Firebase/MLNaturalLanguage Firebase/MLNLTranslate |
GoogleMLKit/Dịch |
Cập nhật tên lớp, enum và loại
Nói chung, các lớp, enum và kiểu cần được đổi tên như sau:
- Swift: Xoá tiền tố
Vision
khỏi tên lớp và enum - Mục tiêu-C: Thay thế cả tên lớp
FIRVision
vàFIR
và tiền tố enum củaMLK
Đối với một số tên và loại lớp, quy tắc chung này không áp dụng:
Swift
Lớp hoặc kiểu cũ | Lớp hoặc loại mới |
---|---|
AutoMLLocalModel | LocalModel |
AutoMLRemoteModel | CustomRemoteModel |
VisionBarcodeDetectionCallback | BarcodeScanningCallback |
VisionBarcodeDetector | BarcodeScanner |
VisionBarcodeDetectorOptions | BarcodeScannerOptions |
VisionImage | Hình ảnh tầm nhìn (không thay đổi) |
VisionPoint | VisionPoint (không thay đổi) |
VisionOnDeviceAutoMLImageLabelerOptions | CustomImageLabelerOptions |
VisionOnDeviceImageLabelerOptions | ImageLabelerOptions |
Objective-C
Lớp hoặc kiểu cũ | Lớp hoặc loại mới |
---|---|
FIRAutoMLLocalModel | MLKLocalModel |
FIRAutoMLRemoteModel | MLKCustomRemoteModel |
FIRVisionBarcodeDetectionCallback | MLKBarcodeScanningCallback |
FIRVisionBarcodeDetector | MLKBarcodeScanner |
FIRVisionBarcodeDetectorOptions | MLKBarcodeScannerOptions |
FIRVisionImage | MLKVisionImage |
FIRVisionOnDeviceAutoMLImageLabelerOptions | MLKCustomImageLabelerOptions |
FIRVisionOnDeviceImageLabelerOptions | MLKImageLabelerOptions |
FIRVisionPoint | MLKVisionPoint |
Objective-C
Cập nhật tên phương thức
Cập nhật tên phương thức theo các quy tắc sau:
Các lớp điểm truy cập miền (
Vision
,NaturalLanguage
) không còn tồn tại. Chúng đã được thay thế bằng các lớp tác vụ cụ thể. Thay thế các lệnh gọi đến các phương thức ban đầu khác nhau để lấy trình phát hiện bằng các lệnh gọi trực tiếp đến phương thức ban đầu của từng trình phát hiện.Lớp
VisionImageMetadata
đã bị xoá, cùng với EnumVisionDetectorImageOrientation
. Sử dụng thuộc tínhorientation
củaVisionImage
để chỉ định hướng hiển thị của một hình ảnh.Phương thức
onDeviceTextRecognizer
nhận thực thểTextRecognizer
mới có đã được đổi tên thànhtextRecognizer
.Thuộc tính độ tin cậy đã bị xoá khỏi văn bản các lớp kết quả nhận dạng, bao gồm
TextElement
,TextLine
vàTextBlock
.Các phương thức
onDeviceImageLabeler
vàonDeviceImageLabeler(options:)
để lấy thực thểImageLabeler
mới đã được hợp nhất và đổi tên thànhimageLabeler(options:)
.Phương thức
objectDetector
để lấy thực thểObjectDetector
mới đã bị xoá. Thay vào đó, hãy sử dụngobjectDetector(options:)
.Thuộc tính
type
đã bị xoá khỏiImageLabeler
và Thuộc tínhentityID
đã bị xoá khỏi lớp kết quả gắn nhãn hình ảnhImageLabel
.API quét mã vạch
detect(in _:, completion:)
đã được đổi tên thànhprocess(_:, completion:)
để nhất quán với các API tầm nhìn khác.API ngôn ngữ tự nhiên hiện sử dụng thuật ngữ "thẻ ngôn ngữ" (như được xác định bởi tiêu chuẩn BCP-47) thay vì "mã ngôn ngữ".
TranslateLanguage
hiện sử dụng tên dễ đọc (như .english) cho các hằng số của mình thay vì thẻ ngôn ngữ ( như .en).
Dưới đây là một số ví dụ về các phương thức Swift cũ và mới:
Cũ
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()
Mới
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())
Dưới đây là một số ví dụ về các phương thức Target-C cũ và mới:
Cũ
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];
Mới
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];
Các thay đổi theo API cụ thể
Phát hiện và theo dõi đối tượng
Nếu ứng dụng của bạn sử dụng tính năng phân loại đối tượng, hãy lưu ý rằng SDK mới đã thay đổi thì phương thức sẽ trả về danh mục phân loại cho các đối tượng đã phát hiện.
VisionObjectCategory
trong VisionObject
được trả về dưới dạng text
trong một ObjectLabel
thay vì một số nguyên. Tất cả các danh mục chuỗi có thể có đều được bao gồm trong
Enum DetectedObjectLabel
.
Xin lưu ý rằng danh mục .unknown
đã bị xoá. Khi độ tin cậy của việc phân loại
một đối tượng thấp thì thuật toán phân loại sẽ không trả về nhãn nào.
Dưới đây là ví dụ về mã Swift cũ và mới:
Cũ
if (object.classificationCategory == .food) { ... }
Mới
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) { ... } }
Dưới đây là ví dụ về mã Mục tiêu-C cũ và mới:
Cũ
if (object.classificationCategory == FIRVisionObjectCategoryFood) { ... }
Mới
if ([object.labels[0].text isEqualToString:MLKDetectedObjectLabelFood]) { ... } // or if ([object.labels[0].index == MLKDetectedObjectLabelIndexFood]) { ... }
Xoá các phần phụ thuộc Firebase (Không bắt buộc)
Bước này chỉ áp dụng khi các điều kiện sau được đáp ứng:
- Bộ công cụ học máy của Firebase là thành phần Firebase duy nhất mà bạn sử dụng
- Bạn chỉ sử dụng API trên thiết bị
- Bạn không sử dụng tính năng phân phát mô hình
Trong trường hợp này, bạn có thể xoá các phần phụ thuộc Firebase sau khi di chuyển. Hãy làm theo các bước sau:
- Xoá tệp cấu hình Firebase bằng cách xoá GoogleService-Info.plist từ thư mục ứng dụng và dự án Xcode của bạn.
- Xoá mọi cocoapod trong Firebase, chẳng hạn như
pod 'Firebase/Analytics'
, khỏi Podfile của bạn. - Xoá mọi hoạt động khởi chạy FirebaseApp, chẳng hạn như
FirebaseApp.configure()
khỏi mã của bạn. - Xoá ứng dụng Firebase tại bảng điều khiển của Firebase dựa trên hướng dẫn trên trang web hỗ trợ của Firebase.
Nhận Trợ giúp
Nếu bạn gặp phải bất kỳ sự cố nào, vui lòng xem trang Cộng đồng của chúng tôi, nơi chúng tôi trình bày để liên hệ với chúng tôi.