Android'de 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) Android'deki ML Kit'e taşımak için uygulamanız gereken adımlar ele alınmaktadır.

Genel API Değişiklikleri

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

  • GMV API'ler eşzamanlı olarak bir SparseArray<T> sonucu döndürür. ML Kit API'leri, sonuçları eşzamansız olarak döndürmek için Google Play Hizmetleri Task API'sini kullanır.
  • GMV, bir modülün başarıyla indirilip kullanılmaya hazır olup olmadığını belirtmek için API yüzeyindeki isOperational() çağrısını kullanır. ML Kit'in böyle bir yöntemi yoktur. Bir modül indirilmemişse makine öğrenimi MlKitException.UNAVAILABLE istisnası atar. Bu istisnayı yakalayıp sonraki kareyi işleyebilir veya bir zaman aşımı belirleyip geçerli kareyle yeniden deneyebilirsiniz.
  • GMV yöntemleri, giriş için Frame kullanır. ML Kit InputImage kullanır.
  • GMV, MultiDetector, MultiProcessor ve FocusingProcessor sistemlerini birden fazla algılama ve sonuç filtrelemesi için kullanır. ML Kit bu tür mekanizmalar sağlamaz, ancak isterseniz aynı işlev geliştirici tarafından da uygulanabilir.

Gradle İçe Aktarmalarını Güncelleme

Modül (uygulama düzeyi) Gradle dosyanızdaki ML Kit Android kitaplıklarına yönelik bağımlılıkları güncelleyin. Bu dosya, genellikle app/build.gradle şeklindedir:

API GMV Yapısı ML Kit Yapısı
Yüz Algılayıcı com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-face-detection:17.1.0
Barkod Algılayıcı com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-barcode-scanning:18.1.0
Metin Tanıma com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:18.0.2
KameraKaynağı com.google.android.gms:play-services-vision:x.x.x com.google.mlkit:camera:16.0.0-beta3

API Değişiklikleri

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

detector = new FaceDetector.Builder(context)
    .setMode(FaceDetector.ACCURATE_MODE)
    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
    .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
    .build();

ML Kiti

FaceDetectorOptions options = new FaceDetectorOptions.Builder()
    .setPerformanceMode(FaceDetectorOptions.PERFORMANCE_MODE_ACCURATE)
    .setLandmarkMode(FaceDetectorOptions.LANDMARK_MODE_ALL)
    .setClassificationMode(FaceDetectorOptions.CLASSIFICATION_MODE_ALL)
    .build();

detector = FaceDetection.getClient(options);

Aşağıdaki sınıf ve yöntem adlarını değiştirin:

android.gms.vision.face mlkit.vision.face
FaceDetector FaceDetector
SparseArray<Face> detect(Frame frame) Task<List<Face>> process(@NonNull InputImage image)
FaceDetector.Builder.setClassificationType(int classificationType) FaceDetectorOptions.Builder.setClassificationMode(int classificationMode)
NO_CLASSIFICATIONS, ALL_CLASSIFICATIONS CLASSIFICATION_MODE_NONE, CLASSIFICATION_MODE_ALL
FaceDetector.Builder.setLandmarkType(int landmarkType) FaceDetectorOptions.Builder.setLandmarkMode(int landmarkMode)
NO_LANDMARKS, ALL_LANDMARKS, CONTOUR_LANDMARKS LANDMARK_MODE_NONE, LANDMARK_MODE_ALL

GMV CONTour_FEMALES) yerine #setContourMode kullanın

FaceDetector.Builder.setTrackingEnabled(boolean trackingEnabled) FaceDetectorOptions.Builder.enableTracking()
FaceDetector.Builder.setMinFaceSize(float proportionalMinFaceSize) FaceDetectorOptions.Builder.setMinFaceSize(float minFaceSize)
FaceDetector.Builder.setMode(int mode) FaceDetectorOptions.Builder.setPerformanceMode(int performanceMode)
FAST_MODE, ACCURATE_MODE PERFORMANCE_MODE_FAST, PERFORMANCE_MODE_ACCURATE
FaceDetector.Builder.setProminentFaceOnly(boolean prominentFaceOnly) Bu özellik, yüz kontur modu kapsamındadır.
Face Face
Contour FaceContour
Landmark FaceLandmark
Face.getContours() Face.getAllContours()
Face.getEulerY() Face.getHeadEulerAngleY()
Face.getEulerZ() Face.getHeadEulerAngleZ()
Face.getId() Face.getTrackingId()
Face.getIsLeftEyeOpenProbability() Face.getLeftEyeOpenProbability()
Face.getIsRightEyeOpenProbability() Face.getRightEyeOpenProbability()
Face.getIsSmilingProbability() Face.getSmilingProbability()
Face.getLandmarks() Face.getLandmark(int landmarkType)
Face.getPosition()
Face.getHeight()
Face.getWidth()
Face.getBoundingBox()

Barkod Algılayıcı

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

GMV'ler

barcodeDetector = new BarcodeDetector.Builder(context).build());

ML Kiti

barcodeScanner = BarcodeScanning.getClient();

Aşağıdaki sınıf ve yöntem adlarını değiştirin:

android.gms.vision.barcode mlkit.vision.barcode
BarcodeDetector BarcodeScanner
SparseArray<Barcode> detect(Frame frame) Task<List<Barcode>> process(@NonNull InputImage image)
Barcode Barcode

Metin Tanıma

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

GMV'ler

textRecognizer = new TextRecognizer.Builder(context).build();

ML Kiti

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Aşağıdaki sınıf ve yöntem adlarını değiştirin:

android.gms.vision.text mlkit.vision.text
TextRecognizer TextRecognizer
SparseArray<TextBlock> detect(Frame frame) Task<Text> process(@NonNull InputImage image)
SparseArray<TextBlock> Text
Line Line
TextBlock TextBlock
Element Element
getLanguage() getRecognizedLanguage()
getBoundingBox() getBoundingBox()
getCornerPoints() getCornerPoints()
TextBlock.getComponents() TextBlock.getLines()
TextBlock.getValue() TextBlock.getText()
Element.getValue() Element.getText()

KameraKaynağı

Google Mobile Vision tarafından sağlanan CameraSource kitaplığını kullanıyorsanız uygulamanızın min. SDK sürümünde ve >= 21 adresinde çalışıyor olması şartıyla ML Kit'in CameraXSource kitaplığına kolayca geçiş yapabilirsiniz.

Aşağıdaki sınıf ve yöntem adlarını değiştirin:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled CameraX kullanılırken varsayılan olarak otomatik odaklama sağlanır.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode CameraX kullanılırken varsayılan olarak otomatik odaklama sağlanır.
CameraSource.Builder.setRequestedFps Kullanımdan kaldırıldı.
CameraSource.Builder.setRequestedPreviewSize CameraSourceConfig.Builder.setRequestedPreviewSize
CameraSource CameraXSource
new CameraSource.Builder(mContext, detector)....build(); CameraXSource(CameraSourceConfig, PreviewView)
getCameraFacing() getCameraFacing()
getPreviewSize() getPreviewSize()
release() close()
start(SurfaceHolder surfaceHolder) start() // The previewview is set in the CameraSourceConfig
start() start()
stop() stop()
Detector.Processor DetectionTaskCallback
receiveDetections(Detections<T> detections) void onDetectionTaskReceived(@NonNull Task<ResultT> detectionTask);
release() Dahili olarak işlendi
CameraSource.PictureCallback Kullanımdan kaldırıldı
CameraSource.ShutterCallback Kullanımdan kaldırıldı

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.