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 dự án từ Google Mobile Vision (GMV) sang Bộ công cụ học máy 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ụ 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 15.5 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 có hỗ trợ kiến trúc 64 bit (x86_64 và arm64).
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 | Pod GMV | Pod Bộ công cụ học máy |
|---|---|---|
| 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 |
Các thay đổi chung về API
Những thay đổi này áp dụng cho tất cả API:
- API suy luận của GMV nhận
UIImagehoặcCMSampleBufferReflàm dữ liệu đầu vào. Bộ công cụ học máy gói các API này bên trongMLKVisionImagevà nhận API đó làm dữ liệu đầu vào. - GMV sử dụng
NSDictionaryđể truyền nhiều tuỳ chọn trình phát hiện. Bộ công cụ học máy sử dụng các lớp tuỳ chọn chuyên dụng cho mục đích đó. - GMV truyền loại trình phát hiện đến lớp
GMVDetectorduy nhất khi tạo trình phát hiện. Bộ công cụ học máy sử dụng các lớp chuyên dụng để tạo các thực thể trình phát hiện, trình quét và trình nhận dạng riêng biệt. - API của GMV chỉ hỗ trợ tính năng phát hiện đồng bộ. API suy luận của Bộ công cụ học máy có thể được gọi đồng bộ và không đồng bộ.
- GMV mở rộng
AVCaptureVideoDataOutputvà cung cấp một khung nhiều trình phát hiện để thực hiện nhiều lần phát hiện cùng một lúc. Bộ công cụ học máy 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.
Các 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ụ học máy cho từng API Vision, đồng thời cho biết cách khởi động API.
FaceDetector
Mã hoá lại quá trình khởi động như trong ví dụ này:
GMV
NSDictionary *options = @{ GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode), GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll), GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll) }; GMVDetector *faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];
Bộ công cụ học máy
MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init]; options.performanceMode = MLKFaceDetectorPerformanceModeAccurate; options.classificationMode = MLKFaceDetectorClassificationModeAll; options.landmarkMode = MLKFaceDetectorLandmarkModeAll; MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];
GMVDetector có 2 API phát hiện khác nhau. Cả hai đều là các thao tác đồ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 suy luận có thể được gọi đồ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:
BarcodeDetector
Mã hoá lại quá trình khởi động như trong ví dụ này:
GMV
NSDictionary *options = @{ GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 | GMVDetectorBarcodeFormatQRCode) }; GMVDetector *barcodeDetector = [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];
Bộ công cụ học máy
MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init]; options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode; MLKBarcodeScanner *barcodeScanner = [MLKBarcodeScanner barcodeScannerWithOptions:options];
GMVDetector có 2 API phát hiện khác nhau. Cả hai đều là các thao tác đồ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 suy luận có thể được gọi đồ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:
TextRecognition
Mã hoá lại quá trình khởi động như trong ví dụ này:
GMV
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
Bộ công cụ học máy
MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];
GMVDetector có 2 API phát hiện khác nhau. Cả hai đều là các thao tác đồ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 suy luận có thể được gọi đồ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:
| GMV | Bộ công cụ học máy |
|---|---|
GMVDetectorImageOrientation
|
MLKVisionImage.orientation
|
GMVTextBlockFeature
|
MLKTextBlock
|
GMVTextElementFeature
|
MLKTextElement
|
GMVTextLineFeature
|
MLKTextLine
|
Nhận trợ giúp
Nếu bạn gặp phải vấn đề, hãy xem trang Cộng đồng của chúng tôi. Trang này trình bày các kênh có sẵn để liên hệ với chúng tôi.