Tài liệu này trình bày các bước bạn cần thực hiện để di chuyển các dự án của mình từ Google Mobile Vision (GMV) sang Bộ công cụ máy học trên iOS.
Đ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ụ máy học hỗ trợ Xcode 13.2.1 trở lên.
- Bộ công cụ máy học hỗ trợ iOS phiên bản 10 trở lên.
- Bộ công cụ máy học không hỗ trợ kiến trúc 32 bit (i386 và armv7). ML Kit hỗ trợ kiến trúc 64 bit (x86_64 và arm64).
Cập nhật chim cốc
Cập nhật các phần phụ thuộc cho Bộ công cụ máy học dành cho iOS trong Podfile của ứng dụng:
API | Nhóm GMV | Nhóm công cụ máy học |
---|---|---|
Quét mã vạch | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
Phát hiện khuôn mặt | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
Nhận dạng văn bản | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
Thay đổi API tổng thể
Những thay đổi này áp dụng cho tất cả API:
- Các API dự đoán của GMV sẽ lấy
UIImage
hoặcCMSampleBufferRef
làm dữ liệu đầu vào. Bộ công cụ máy học gói các thực thể này bên trong mộtMLKVisionImage
và lấy đó làm dữ liệu đầu vào. - GMV sử dụng
NSDictionary
để truyền nhiều trình phát hiện. Bộ công cụ máy học sử dụng các lớp tùy chọn dành riêng cho mục đích đó. - GMV chuyển loại trình phát hiện đến lớp
GMVDetector
khi tạo trình phát hiện. Bộ công cụ máy học sử dụng các lớp chuyên dụng để tạo các phiên bản trình phát hiện, máy quét và trình nhận dạng riêng biệt. - Các API của GMV chỉ hỗ trợ phát hiện đồng bộ. Các API dự đoán của Bộ công cụ máy học có thể được gọi một cách đồng bộ và không đồng bộ.
- GMV mở rộng
AVCaptureVideoDataOutput
và cung cấp một khung trình phát hiện để thực hiện nhiều lượt phát hiện cùng lúc. Bộ công cụ máy học không cung cấp các cơ chế như vậy, nhưng nhà phát triển có thể triển khai chức năng tương tự nếu muốn.
Thay đổi dành riêng cho API
Phần này mô tả các lớp và phương thức tương ứng của GMV và Bộ công cụ máy học cho mỗi API Vision, đồng thời chỉ ra cách khởi chạy API.
Trình phát hiện khuôn mặt
Mã hoá lại quá trình khởi động như trong ví dụ sau:
Tổng giá trị hàng hoá
NSDictionary *options = @{ GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode), GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll), GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll) }; GMVDetector *faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];
Bộ công cụ máy học
MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init]; options.performanceMode = MLKFaceDetectorPerformanceModeAccurate; options.classificationMode = MLKFaceDetectorClassificationModeAll; options.landmarkMode = MLKFaceDetectorLandmarkModeAll; MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];
GMVDetector
có hai API phát hiện riêng biệt. Cả hai đều là hoạt động đồng bộ:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Thay thế GMVDetector
bằng MLKFaceDetector
.
API dự đoán có thể được gọi một cách đồng bộ hoặc không đồng bộ.
Đồng bộ
- (nullable NSArray<MLKFace *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Không đồng bộ
- (void)processImage:(MLKVisionImage *)image Completion: (MLKFaceDetectionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Thay đổi các lớp, phương thức và tên sau:
Trình phát hiện mã vạch
Mã hoá lại quá trình khởi động như trong ví dụ sau:
Tổng giá trị hàng hoá
NSDictionary *options = @{ GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 | GMVDetectorBarcodeFormatQRCode) }; GMVDetector *barcodeDetector = [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];
Bộ công cụ máy học
MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init]; options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode; MLKBarcodeScanner *barcodeScanner = [MLKBarcodeScanner barcodeScannerWithOptions:options];
GMVDetector
có hai API phát hiện riêng biệt. Cả hai đều là hoạt động đồng bộ:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Thay thế GMVDetector
bằng MLKBarcodeScanner
.
API dự đoán có thể được gọi một cách đồng bộ hoặc không đồng bộ.
Đồng bộ
- (nullable NSArray<MLKBarcode *> *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Không đồng bộ
- (void)processImage:(MLKVisionImage *)image Completion: (MLKBarcodeScanningCallback)completion NS_SWIFT_NAME(process(_:completion:));
Thay đổi các lớp, phương thức và tên sau:
Nhận dạng văn bản
Mã hoá lại quá trình khởi động như trong ví dụ sau:
Tổng giá trị hàng hoá
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
Bộ công cụ máy học
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector
có hai API phát hiện riêng biệt. Cả hai đều là hoạt động đồng bộ:
- (nullable NSArray<__kindof GMVFeature *> *) featuresInImage:(UIImage *)image options:(nullable NSDictionary *)options; - (nullable NSArray<__kindof GMVFeature *> *) featuresInBuffer:(CMSampleBufferRef)sampleBuffer options:(nullable NSDictionary *)options;
Thay thế GMVDetector
bằng MLKTextRecognizer
.
API dự đoán có thể được gọi một cách đồng bộ hoặc không đồng bộ.
Đồng bộ
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
Không đồng bộ
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
Thay đổi các lớp, phương thức và tên sau:
Tổng giá trị hàng hoá | Bộ công cụ máy học |
---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Nhận trợ giúp
Nếu bạn gặp vấn đề, hãy tham khảo trang Cộng đồng. Tại đây, chúng tôi trình bày những kênh có thể liên hệ với chúng tôi.