本文档介绍了从 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 将
UIImage
或CMSampleBufferRef
作为输入。机器学习套件将其封装在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:));
更改以下类、方法和名称:
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
|
获取帮助
如果您遇到任何问题,请查看我们的社区页面 ,其中介绍了与我们联系的渠道。