本文档介绍了将项目从 Google 移动视觉 (GMV) 迁移到 iOS 上的 ML Kit 所需执行的步骤。
前提条件
在开始迁移代码之前,请确保您满足以下要求:
- 机器学习套件支持 Xcode 13.2.1 或更高版本。
- 机器学习套件支持 iOS 15.5 或更高版本。
- 机器学习套件不支持 32 位架构 (i386 和 armv7)。机器学习套件支持 64 位架构(x86_64 和 arm64)。
更新 cocoapods
在应用的 Podfile 中更新 ML Kit iOS cocoapods 的依赖项:
API | GMV Pod | ML Kit Pod |
---|---|---|
条形码扫描 | GoogleMobileVision/BarcodeDetector |
GoogleMLKit/BarcodeScanning |
人脸检测 | GoogleMobileVision/FaceDetector |
GoogleMLKit/FaceDetection |
文本识别 | GoogleMobileVision/TextDetector |
GoogleMLKit/TextRecognition |
整体 API 变更
以下更改适用于所有 API:
- GMV 的推理 API 接受
UIImage
或CMSampleBufferRef
作为输入。机器学习套件会将它们封装在MLKVisionImage
中,并将其作为输入。 - GMV 使用
NSDictionary
传递各种检测器选项。机器学习套件会使用专用选项类来实现此目的。 - GMV 在创建检测器时会将检测器类型传递给单个
GMVDetector
类。ML Kit 使用专用类来创建单独的检测器、扫描器和识别器实例。 - GMV 的 API 仅支持同步检测。您可以同步和异步调用机器学习套件的推理 API。
- GMV 扩展了
AVCaptureVideoDataOutput
,并提供了一个多检测器框架,用于同时执行多项检测。机器学习套件不提供此类机制,但开发者可以根据需要实现相同的功能。
特定于 API 的更改
本部分介绍了每个 Vision API 对应的 GMV 和 ML Kit 类和方法,并介绍了如何初始化 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
|
获取帮助
如果您遇到任何问题,请访问我们的“社区”页面,其中列出了可用于与我们联系的渠道。