الانتقال من Mobile Vision إلى ML Kit على نظام التشغيل iOS

يتناول هذا المستند الخطوات التي يجب اتّخاذها لنقل مشاريعك من Google Mobile Vision (GMV) إلى حزمة تعلّم الآلة على نظام التشغيل iOS.

المتطلبات الأساسية

قبل البدء في نقل الرمز، تأكَّد من استيفاء المتطلّبات التالية:

  • تتوافق أدوات تعلّم الآلة مع Xcode 13.2.1 أو الإصدارات الأحدث.
  • تتوافق أدوات تعلّم الآلة مع الإصدار 10 أو الإصدارات الأحدث من نظام التشغيل iOS.
  • لا تتوافق أدوات تعلّم الآلة مع بُنى 32 بت (i386 وrmv7). تتوافق أدوات تعلّم الآلة مع بُنى 64 بت (x86_64 وrm64).

تعديل ملفات cocoapods

عدِّل التبعيات لملفات Cocoapoapod الخاصة بنظام التشغيل ML Kit في نظام التشغيل iOS في ملف Podfile الخاص بتطبيقك:

APIمجموعة قيمة المتاجرة الإجمالية (GMV)مجموعة أدوات تعلُّم الآلة
مسح الرمز الشريطي GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
التعرّف على الوجوه GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
التعرّف على النص GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

التغييرات العامة في واجهة برمجة التطبيقات

وتنطبق هذه التغييرات على جميع واجهات برمجة التطبيقات:

  • تستخدم واجهات برمجة التطبيقات للاستنتاج في قيمة السلع الإجمالية UIImage أو CMSampleBufferRef كإدخال. تعمل أدوات تعلّم الآلة على لفّها داخل MLKVisionImage وتأخذها كإدخال.
  • تستخدم قيمة المتاجرة الإجمالية (GMV) NSDictionary لتمرير خيارات أدوات الرصد المختلفة. تستخدم أدوات تعلّم الآلة فئات خيارات مخصّصة لهذا الغرض.
  • توجِّه قيمة المتاجرة الإجمالية (GMV) نوع أداة الرصد إلى فئة GMVDetector الفردية عندما تنشئ أداة رصد. تستخدم أدوات تعلّم الآلة فئات مخصَّصة لإنشاء مثيلات منفصلة لأدوات الرصد والماسح الضوئي وأدوات التعرّف.
  • تتوافق واجهات برمجة التطبيقات في GMV مع الاكتشاف المتزامن فقط. يمكن استدعاء واجهات برمجة التطبيقات للاستنتاج في أدوات تعلّم الآلة بشكل متزامن وغير متزامن.
  • تعمل قيمة المتاجرة الإجمالية (GMV) على توسيع نطاق AVCaptureVideoDataOutput وتوفّر إطار عمل أدوات الرصد المتعدّدة لإجراء عمليات رصد متعدّدة في الوقت نفسه. لا توفّر أدوات تعلُّم الآلة هذه الآليات، ولكن يمكن للمطوّر تنفيذ الوظيفة نفسها إذا أراد ذلك.

التغييرات الخاصة بواجهة برمجة التطبيقات

يصف هذا القسم فئات قيمة المتاجرة الإجمالية (GMV) وحزمة تعلُّم الآلة (ML Kit) والطرق المقابلة لها لكل من Vision API، ويوضّح كيفية إعداد واجهة برمجة التطبيقات.

FaceDetector

أعِد ترميز عملية الإعداد كما هو موضّح في المثال التالي:

قيمة المتاجرة الإجمالية

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 واجهتَي برمجة تطبيقات مختلفتَين للرصد كلتا العمليتين متزامنتين:

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

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

استبدِل GMVDetector بـ MLKFaceDetector. يمكن استدعاء واجهة برمجة تطبيقات الاستنتاج بشكل متزامن أو غير متزامن.

متزامن

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

غير متزامن

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

يمكنك تغيير الفئات والطرق والأسماء التالية:

قيمة المتاجرة الإجمالية حزمة تعلّم الآلة
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

أعِد ترميز عملية الإعداد كما هو موضّح في المثال التالي:

قيمة المتاجرة الإجمالية

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 واجهتَي برمجة تطبيقات مختلفتَين للرصد. كلتا العمليتين متزامنتين:

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

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

استبدِل GMVDetector بـ MLKBarcodeScanner. يمكن استدعاء واجهة برمجة تطبيقات الاستنتاج بشكل متزامن أو غير متزامن.

متزامن

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

غير متزامن

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

يمكنك تغيير الفئات والطرق والأسماء التالية:

قيمة المتاجرة الإجمالية حزمة تعلّم الآلة
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

أعِد ترميز عملية الإعداد كما هو موضّح في المثال التالي:

قيمة المتاجرة الإجمالية

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

حزمة تعلّم الآلة

MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

تتضمن GMVDetector واجهتَي برمجة تطبيقات مختلفتَين للرصد كلتا العمليتين متزامنتين:

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

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

استبدِل GMVDetector بـ MLKTextRecognizer. يمكن استدعاء واجهة برمجة تطبيقات الاستنتاج بشكل متزامن أو غير متزامن.

متزامن

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

غير متزامن

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

يمكنك تغيير الفئات والطرق والأسماء التالية:

قيمة المتاجرة الإجمالية حزمة تعلّم الآلة
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

الحصول على المساعدة

إذا واجهت أي مشاكل، يُرجى زيارة صفحة المنتدى التي توضّح القنوات المتاحة للتواصل معنا.