Chuyển từ Tầm nhìn di động sang Bộ công cụ học máy trên iOS

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 của mình từ Tầm nhìn của Google Mobile (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 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).

Cập nhật cocoapod

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:

APINhóm GMV (tổng giá trị hàng hoá)Gói 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 tổng thể về API

Những thay đổi này áp dụng cho tất cả API:

  • API dự đoán của GMV (tổng giá trị hàng hoá) lấy UIImage hoặc CMSampleBufferRef làm dữ liệu đầu vào. Bộ công cụ học máy bao bọc chúng bên trong MLKVisionImage và lấy đó 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 biệt cho mục đích đó.
  • GMV sẽ chuyển loại trình phát hiện sang lớp GMVDetector duy 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 biệt để 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.
  • Các API của GMV chỉ hỗ trợ phát hiện đồng bộ. Các API suy luận của Bộ công cụ học máy 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 nhiều trình phát hiện để tiến hành phát hiện nhiều lầ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 theo API cụ thể

Phần này mô tả các lớp và phương thức GMV và Bộ công cụ học máy tương ứng cho từng API Vision, đồng thời trình bày cách khởi chạy API.

FaceDetector

Mã hoá lại quá trình khởi chạy như trong ví dụ sau:

GMV

NSDictionary *options = @{
    GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode),
    GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll),
    GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll)
};
GMVDetector *faceDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];

ML Kit

MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init];
options.performanceMode = MLKFaceDetectorPerformanceModeAccurate;
options.classificationMode = MLKFaceDetectorClassificationModeAll;
options.landmarkMode = MLKFaceDetectorLandmarkModeAll;
MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];

GMVDetector có 2 các API phát hiện khác nhau. Cả hai đều là phép toán đồ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 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:

GMV ML Kit
GMVFaceFeature MLKFace
GMVFaceContour MLKFaceContour
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary lựa chọn phát hiện khuôn mặt MLKFaceDetectorOptions
GMVDetectorFaceFastMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeFast
GMVDetectorFaceAccurateMode Set MLKFaceDetectorOptions.performanceMode to MLKFaceDetectorPerformanceModeAccurate
GMVDetectorFaceSelfieMode Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceLandmarkType MLKFaceDetectorOptions.landmarkMode
GMVDetectorFaceLandmarkNone Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeNone
GMVDetectorFaceLandmarkAll Set MLKFaceDetectorOptions.landmarkMode to MLKFaceDetectorLandmarkModeAll
GMVDetectorFaceLandmarkContour Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceClassificationType MLKFaceDetectorOptions.classificationMode
GMVDetectorFaceClassificationNone Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeNone
GMVDetectorFaceClassificationAll Set MLKFaceDetectorOptions.classificationMode to MLKFaceDetectorClassificationModeAll
GMVDetectorFaceTrackingEnabled MLKFaceDetectorOptions.trackingEnabled
GMVDetectorProminentFaceOnly Set MLKFaceDetectorOptions.contourMode to MLKFaceDetectorContourModeAll
GMVDetectorFaceMinSize MLKFaceDetectorOptions.minFaceSize

BarcodeDetector

Mã hoá lại quá trình khởi chạy như trong ví dụ sau:

GMV

NSDictionary *options = @{
    GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 |
                                  GMVDetectorBarcodeFormatQRCode)
};
GMVDetector *barcodeDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];

ML Kit

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à phép toán đồ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 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:

GMV ML Kit
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary lựa chọn trình phát hiện mã vạch MLKBarcodeScannerOptions
GMVDetectorBarcodeFormats MLKBarcodeScannerOptions.formats
GMVBarcodeFeature MLKBarcode
GMVBarcodeFeatureAddress MLKBarcodeAddress
GMVBarcodeFeatureCalendarEvent MLKBarcodeCalendarEvent
GMVBarcodeFeatureContactInfo MLKBarcodeContactInfo
GMVBarcodeFeatureDriverLicense MLKBarcodeDriverLicense
GMVBarcodeFeatureEmail MLKBarcodeEmail
GMVBarcodeFeatureGeoPoint MLKBarcodeGeoPoint
GMVBarcodeFeaturePersonName MLKBarcodePersonName
GMVBarcodeFeaturePhone MLKBarcodePhone
GMVBarcodeFeatureSMS MLKBarcodeSMS
GMVBarcodeFeatureURLBookmark MLKBarcodeURLBookmark
GMVBarcodeFeatureWiFi MLKBarcodeWiFi

TextRecognition

Mã hoá lại quá trình khởi chạy như trong ví dụ sau:

GMV

GMVDetector *textDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];

ML Kit

MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector có 2 các API phát hiện khác nhau. Cả hai đều là phép toán đồ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 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:

GMV ML Kit
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 truy cập vào trang Cộng đồng của chúng tôi. trong đó chúng tôi trình bày các kênh mà chúng tôi có thể liên hệ.