本文档介绍了将项目从 Google Mobile Vision (GMV) 迁移到 iOS 版机器学习套件所需的步骤。
前提条件
在开始迁移代码之前,请确保满足以下要求:
- 机器学习套件支持 Xcode 13.2.1 或更高版本。
- 机器学习套件支持 iOS 15.5 或更高版本。
- 机器学习套件不支持 32 位架构(i386 和 armv7)。机器学习套件支持 64 位架构(x86_64 和 arm64)。
更新 cocoapods
在应用的 Podfile 中更新机器学习套件 iOS cocoapods 的依赖项:
| API | GMV Pod | 机器学习套件 Pod |
|---|---|---|
| 条形码扫描 | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
| 人脸检测 | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
| 文本识别 | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
总体 API 更改
这些更改适用于所有 API:
- GMV 的推理 API 将
UIImage或CMSampleBufferRef作为输入。机器学习套件会将它们封装在MLKVisionImage中,并将其作为输入。 - GMV uses
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:));
更改以下类、方法和名称:
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:));
更改以下类、方法和名称:
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
|
获取帮助
如果您遇到任何问题,请查看我们的社区页面 其中列出了与我们联系的可用渠道。