在 iOS 上从 Mobile Vision 迁移到机器学习套件

本文档介绍了从 Google Cloud 迁移项目所需执行的步骤 在 iOS 上将 Google 移动视觉 (GMV) 迁移到机器学习套件。

前提条件

在开始迁移代码之前,请确保您满足以下要求:

  • 机器学习套件支持 Xcode 13.2.1 或更高版本。
  • 机器学习套件支持 iOS 10 或更高版本。
  • 机器学习套件不支持 32 位架构(i386 和 armv7)。机器学习套件支持 64 位架构(x86_64 和 arm64)。

更新 cocoaPods

在应用的 Podfile 中更新机器学习套件 iOS cocoapods 的依赖项:

API总交易额 (GMV) 小组机器学习套件 Pod
条形码扫描 GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
人脸检测 GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
文本识别 GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

整体 API 变更

这些变更适用于所有 API:

  • GMV 的推理 API 将 UIImageCMSampleBufferRef 作为输入。机器学习套件将其封装在 MLKVisionImage 中,并将其作为输入。
  • GMV 使用 NSDictionary 来传递各种检测器选项。为此,机器学习套件会使用专用的选项类。
  • GMV 会在创建检测器时将检测器类型传递给单个 GMVDetector 类。机器学习套件使用专用类来创建单独的检测器、扫描器和识别器实例。
  • GMV 的 API 仅支持同步检测。可以同步和异步调用机器学习套件的推理 API。
  • GMV 扩展了 AVCaptureVideoDataOutput,并提供多检测器框架,以便同时执行多项检测。机器学习套件不提供此类机制,但开发者可以根据需要实现相同的功能。

特定于 API 的更改

本部分介绍了每个 Vision API 对应的 GMV 和机器学习套件类和方法,并介绍了如何初始化该 API。

FaceDetector

对初始化进行重新编码,如以下示例所示:

GMV

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

机器学习套件

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

GMVDetector 有两个 不同的检测 API。两者都是同步操作:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector 替换为 MLKFaceDetector。 推理 API 可以同步或异步调用。

同步

- (nullable NSArray<MLKFace *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

异步

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKFaceDetectionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

更改以下类、方法和名称:

GMV 机器学习套件
GMVFaceFeature MLKFace
GMVFaceContour MLKFaceContour
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary 的人脸检测选项 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

对初始化进行重新编码,如以下示例所示:

GMV

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

机器学习套件

MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init];
options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode;
MLKBarcodeScanner *barcodeScanner =
    [MLKBarcodeScanner barcodeScannerWithOptions:options];

GMVDetector 具有两个不同的检测 API。两者都是同步操作:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector替换为 MLKBarcodeScanner。 推理 API 可以同步或异步调用。

同步

- (nullable NSArray<MLKBarcode *> *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

异步

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKBarcodeScanningCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

更改以下类、方法和名称:

GMV 机器学习套件
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary 个条形码检测器选项 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

对初始化进行重新编码,如以下示例所示:

GMV

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

机器学习套件

MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector 有两个 不同的检测 API。两者都是同步操作:

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInImage:(UIImage *)image
            options:(nullable NSDictionary *)options;

- (nullable NSArray<__kindof GMVFeature *> *)
    featuresInBuffer:(CMSampleBufferRef)sampleBuffer
             options:(nullable NSDictionary *)options;

GMVDetector替换为 MLKTextRecognizer。 推理 API 可以同步或异步调用。

同步

- (nullable MLKText *)
    resultsInImage:(MLKVisionImage *)image
             error:(NSError **)error;

异步

- (void)processImage:(MLKVisionImage *)image
    Completion:
        (MLKTextRecognitionCallback)completion
    NS_SWIFT_NAME(process(_:completion:));

更改以下类、方法和名称:

GMV 机器学习套件
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

获取帮助

如果您遇到任何问题,请查看我们的社区页面 ,其中介绍了与我们联系的渠道。