Android'de Mobil Vizyon'dan ML Kit'e Geçiş

Bu belgede, projelerinizi Android'de Google Mobile Vision'dan (GMV) ML Kit'e taşımak için uygulamanız gereken adımlar açıklanmaktadır.

Genel API Değişiklikleri

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

  • GMV API'leri eşzamanlı olarak 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'yi kullanır.
  • GMV, bir modülün başarıyla indirilip indirilmediğini ve kullanıma hazır olup olmadığını belirtmek için API yüzeyinde isOperational() çağrısını kullanır. ML Kit'te böyle bir yöntem yoktur. Bir modül indirilmemişse ML Kiti MlKitException.UNAVAILABLE istisnası oluşturur. Bu istisnayı yakalayıp sonraki kareyi işleyebilir veya bir zaman aşımı ayarlayıp mevcut kareyle tekrar deneyebilirsiniz.
  • GMV yöntemleri giriş için Frame kullanır. ML Kit, InputImage kullanır.
  • GMV, birden fazla algılama ve sonuç filtreleme işlemi gerçekleştirmek için MultiDetector, MultiProcessor ve FocusingProcessor çerçeveleri sağlar. ML Kiti bu tür mekanizmalar sağlamaz ancak geliştirici isterse aynı işlevi uygulayabilir.

Gradle İçe Aktarmalarını Güncelleme

Modülünüzün (uygulama düzeyinde) genellikle app/build.gradle olan Gradle dosyasındaki ML Kit Android kitaplıklarının bağımlılıklarını aşağıdaki tabloya göre güncelleyin:

API GMV çıktısı ML Kit Yapısı
FaceDetector com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-face-detection:17.1.0
BarcodeDetector com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
TextRecognition com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:19.0.2
CameraSource 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 bir Vision API için karşılık gelen GMV ve ML Kiti sınıfları ile yöntemleri açıklanmakta ve API'nin nasıl ilk kullanıma hazırlanacağı gösterilmektedir.

FaceDetector

Başlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:

Brüt genel işlem tutarı (GMV)

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

ML Kit

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_LANDMARKS 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 konturu 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()

BarcodeDetector

Başlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:

Brüt genel işlem tutarı (GMV)

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

ML Kit

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

TextRecognition

Başlatma işlemini bu örnekte gösterildiği gibi yeniden kodlayın:

Brüt genel işlem tutarı (GMV)

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

ML Kit

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()

CameraSource

Google Mobile Vision tarafından sağlanan CameraSource kitaplığını kullanıyorsanız uygulamanızın minimum SDK sürümü 21 veya daha yüksekse 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 otomatik odaklama varsayılan olarak sağlanır.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode CameraX kullanılırken otomatik odaklama varsayılan olarak 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 yönetilen
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çebileceğiniz kanalları listelediğimiz Topluluk sayfamıza göz atın.