این سند مراحلی را که باید برای انتقال پروژههای خود از Google Mobile Vision (GMV) به ML Kit در iOS انجام دهید، پوشش میدهد.
پیشنیازها
قبل از شروع به انتقال کد خود، مطمئن شوید که این الزامات را برآورده میکنید:
- کیت ML از Xcode نسخه ۱۳.۲.۱ یا بالاتر پشتیبانی میکند.
- ML Kit از iOS نسخه ۱۵.۵ یا بالاتر پشتیبانی میکند.
- ML Kit از معماریهای ۳۲ بیتی (i386 و armv7) پشتیبانی نمیکند. ML Kit از معماریهای ۶۴ بیتی (x86_64 و arm64) پشتیبانی میکند.
کاکائوپادها را بهروزرسانی کنید
وابستگیهای cocoapods مربوط به ML Kit iOS را در Podfile برنامه خود بهروزرسانی کنید:
| رابط برنامهنویسی کاربردی | غلاف GMV | پاد کیت ML |
|---|---|---|
| اسکن بارکد | GoogleMobileVision/BarcodeDetector | GoogleMLKit/BarcodeScanning |
| تشخیص چهره | GoogleMobileVision/FaceDetector | GoogleMLKit/FaceDetection |
| تشخیص متن | GoogleMobileVision/TextDetector | GoogleMLKit/TextRecognition |
تغییرات کلی API
این تغییرات برای همه APIها اعمال میشود:
- APIهای استنتاج GMV،
UIImageیاCMSampleBufferRefرا به عنوان ورودی دریافت میکنند. ML Kit آنها را درون یکMLKVisionImageقرار میدهد و آن را به عنوان ورودی دریافت میکند. - GMV از
NSDictionaryبرای ارسال گزینههای مختلف آشکارساز استفاده میکند. ML Kit از کلاسهای گزینههای اختصاصی برای این منظور استفاده میکند. - GMV هنگام ایجاد یک آشکارساز، نوع آشکارساز را به کلاس
GMVDetectorمنتقل میکند. ML Kit از کلاسهای اختصاصی برای ایجاد نمونههای جداگانه آشکارساز، اسکنر و تشخیصدهنده استفاده میکند. - APIهای GMV فقط از تشخیص همزمان پشتیبانی میکنند. APIهای استنتاج ML Kit را میتوان به صورت همزمان و غیرهمزمان فراخوانی کرد.
- GMV،
AVCaptureVideoDataOutputرا توسعه میدهد و یک چارچوب چند آشکارسازی برای انجام چندین تشخیص به طور همزمان ارائه میدهد. ML Kit چنین مکانیسمهایی را ارائه نمیدهد، اما در صورت تمایل، توسعهدهنده میتواند همین عملکرد را پیادهسازی کند.
تغییرات خاص API
این بخش کلاسها و متدهای مربوط به GMV و ML Kit را برای هر Vision API شرح میدهد و نحوه مقداردهی اولیه API را نشان میدهد.
آشکارساز چهره
مقداردهی اولیه را همانطور که در این مثال نشان داده شده است، بازنویسی کنید:
جی ام وی
NSDictionary *options = @{ GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode), GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll), GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll) }; GMVDetector *faceDetector = [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];
کیت ML
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:));
کلاسها، متدها و نامهای زیر را تغییر دهید:
آشکارساز بارکد
مقداردهی اولیه را همانطور که در این مثال نشان داده شده است، بازنویسی کنید:
جی ام وی
NSDictionary *options = @{ GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 | GMVDetectorBarcodeFormatQRCode) }; GMVDetector *barcodeDetector = [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];
کیت ML
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:));
کلاسها، متدها و نامهای زیر را تغییر دهید:
تشخیص متن
مقداردهی اولیه را همانطور که در این مثال نشان داده شده است، بازنویسی کنید:
جی ام وی
GMVDetector *textDetector = [GMVDetector detectorOfType:GMVDetectorTypeText options:nil];
کیت ML
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 جایگزین کنید. رابط برنامهنویسی استنتاج (inference API) را میتوان به صورت همزمان یا غیرهمزمان فراخوانی کرد.
همزمان
- (nullable MLKText *) resultsInImage:(MLKVisionImage *)image error:(NSError **)error;
ناهمزمان
- (void)processImage:(MLKVisionImage *)image Completion: (MLKTextRecognitionCallback)completion NS_SWIFT_NAME(process(_:completion:));
کلاسها، متدها و نامهای زیر را تغییر دهید:
| جی ام وی | کیت ML |
|---|---|
GMVDetectorImageOrientation | MLKVisionImage.orientation |
GMVTextBlockFeature | MLKTextBlock |
GMVTextElementFeature | MLKTextElement |
GMVTextLineFeature | MLKTextLine |
دریافت کمک
اگر با هرگونه مشکلی مواجه شدید، به صفحه انجمن ما مراجعه کنید، جایی که کانالهای موجود برای ارتباط با ما را شرح دادهایم.