iOS'te Mobile Vision'dan ML Kit'e Geçiş

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Bu dokümanda, projelerinizi Google Mobile Vision'dan (GMV) iOS'teki ML Kit'e taşımak için uygulamanız gereken adımlar ele alınmaktadır.

Ön koşullar

Kodunuzu taşımaya başlamadan önce aşağıdaki şartları karşıladığınızdan emin olun:

  • ML Kit, Xcode 13.2.1 veya sonraki sürümleri destekler.
  • ML Kit, iOS 10 veya sonraki sürümleri destekler.
  • ML Kit, 32 bit mimarileri (i386 ve armv7) desteklemez. ML Kit, 64 bit mimarileri (x86_64 ve arm64) destekler.

Kakao kapsüllerini güncelle

Uygulamanızın Podfile dosyasındaki ML Kit iOS cocoapod'ların bağımlılıklarını güncelleyin:

APIGMV KapsülüML Kit Kapsülü
Barkod tarama GoogleMobileVision/BarcodeDetector GoogleMLKit/BarcodeScanning
Yüz algılama GoogleMobileVision/FaceDetector GoogleMLKit/FaceDetection
Metin tanıma GoogleMobileVision/TextDetector GoogleMLKit/TextRecognition

Genel API değişiklikleri

Bu değişiklikler tüm API'ler için geçerlidir:

  • GMV'nin çıkarım API'ları, giriş olarak UIImage veya CMSampleBufferRef değerini alır. ML Kit bunları bir MLKVisionImage içine sarmalar ve bunu giriş olarak alır.
  • GMV, çeşitli algılayıcı seçeneklerini geçirmek için NSDictionary kullanır. ML Kit, bu amaçla özel seçenekler sınıflarını kullanır.
  • GMV, algılayıcıyı oluşturduğunda algılayıcıyı tek bir GMVDetector sınıfına iletir. ML Kit, ayrı algılayıcı, tarayıcı ve tanıyıcı örnekleri oluşturmak için özel sınıflar kullanır.
  • GMV' API'leri yalnızca eşzamanlı algılamayı destekler. ML Kit'in çıkarım API'ları eşzamanlı ve eşzamansız olarak çağrılabilir.
  • GMV, AVCaptureVideoDataOutput kapsamını genişletir ve aynı anda birden fazla algılama işlemi gerçekleştirmek için bir çok algılayıcılı çerçeve sağlar. ML Kit bu tür mekanizmalar sağlamaz, ancak isterseniz aynı işlev geliştirici tarafından da uygulanabilir.

API'ye özgü değişiklikler

Bu bölümde, her Vision API için ilgili GMV ve ML Kit sınıfları ile yöntemleri ve API'nin nasıl başlatılacağı açıklanmaktadır.

Yüz Algılayıcı

İlk kullanıma hazırlamayı, aşağıdaki örnekte gösterildiği gibi yeniden kodla:

GMV'ler

NSDictionary *options = @{
    GMVDetectorFaceMode : @(GMVDetectorFaceAccurateMode),
    GMVDetectorFaceClassificationType : @(GMVDetectorFaceClassificationAll),
    GMVDetectorFaceLandmarkType : @(GMVDetectorFaceLandmarkAll)
};
GMVDetector *faceDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeFace options:options];

ML Kiti

MLKFaceDetectorOptions *options = [[MLKFaceDetectorOptions alloc] init];
options.performanceMode = MLKFaceDetectorPerformanceModeAccurate;
options.classificationMode = MLKFaceDetectorClassificationModeAll;
options.landmarkMode = MLKFaceDetectorLandmarkModeAll;
MLKFaceDetector *faceDetector = [MLKFaceDetector faceDetectorWithOptions:options];

GMVDetector iki farklı algılama API'sine sahiptir. Her ikisi de eşzamanlı işlemlerdir:

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

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

GMVDetector alanını MLKFaceDetector ile değiştirin. Çıkarım API'si eşzamanlı veya eşzamansız olarak çağrılabilir.

Senkronize

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

Eşzamansız

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

Aşağıdaki sınıfları, yöntemleri ve adları değiştirin:

GMV'ler ML Kiti
GMVFaceFeature MLKFace
GMVFaceContour MLKFaceContour
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary yüz algılama seçeneği 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

Barkod Algılayıcı

İlk kullanıma hazırlamayı, aşağıdaki örnekte gösterildiği gibi yeniden kodla:

GMV'ler

NSDictionary *options = @{
    GMVDetectorBarcodeFormats : @(GMVDetectorBarcodeFormatCode128 |
                                  GMVDetectorBarcodeFormatQRCode)
};
GMVDetector *barcodeDetector =
    [GMVDetector detectorOfType:GMVDetectorTypeBarcode options:options];

ML Kiti

MLKBarcodeScannerOptions *options = [[MLKBarcodeScannerOptions alloc] init];
options.formats = MLKBarcodeFormatCode128 | MLKBarcodeFormatQRCode;
MLKBarcodeScanner *barcodeScanner =
    [MLKBarcodeScanner barcodeScannerWithOptions:options];

GMVDetector'in iki farklı algılama API'sı vardır. Her ikisi de eşzamanlı işlemlerdir:

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

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

GMVDetector öğesini MLKBarcodeScanner ile değiştirin. Çıkarım API'si eşzamanlı veya eşzamansız olarak çağrılabilir.

Senkronize

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

Eşzamansız

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

Aşağıdaki sınıfları, yöntemleri ve adları değiştirin:

GMV'ler ML Kiti
GMVDetectorImageOrientation MLKVisionImage.orientation
NSDictionary barkod algılayıcı seçeneği 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

Metin Tanıma

İlk kullanıma hazırlamayı, aşağıdaki örnekte gösterildiği gibi yeniden kodla:

GMV'ler

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

ML Kiti

MLKTextRecognizer *textRecognizer = [MLKTextRecognizer textRecognizer];

GMVDetector iki farklı algılama API'sine sahiptir. Her ikisi de eşzamanlı işlemlerdir:

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

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

GMVDetector öğesini MLKTextRecognizer ile değiştirin. Çıkarım API'si eşzamanlı veya eşzamansız olarak çağrılabilir.

Senkronize

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

Eşzamansız

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

Aşağıdaki sınıfları, yöntemleri ve adları değiştirin:

GMV'ler ML Kiti
GMVDetectorImageOrientation MLKVisionImage.orientation
GMVTextBlockFeature MLKTextBlock
GMVTextElementFeature MLKTextElement
GMVTextLineFeature MLKTextLine

Yardım alma

Herhangi bir sorunla karşılaşırsanız bizimle iletişime geçmek için kullanabileceğiniz kanalları ana hatlarıyla belirten Topluluk sayfamıza göz atın.