Bermigrasi dari Mobile Vision ke ML Kit di Android

Dokumen ini membahas langkah-langkah yang perlu Anda lakukan untuk memigrasikan project Anda dari Google Mobile Vision (GMV) ke ML Kit di Android.

Perubahan API Keseluruhan

Perubahan ini berlaku untuk semua API:

  • GMV API menampilkan hasil SparseArray<T> secara sinkron. ML Kit API menggunakan Task API layanan Google Play untuk menampilkan hasil secara asinkron.
  • GMV menggunakan panggilan isOperational() pada platform API untuk menunjukkan apakah modul berhasil didownload dan siap digunakan. ML Kit tidak memiliki metode seperti itu. ML Kit akan menampilkan pengecualian MlKitException.UNAVAILABLE jika modul belum didownload. Anda dapat menangkap pengecualian ini dan memproses frame berikutnya atau menetapkan waktu tunggu dan mencoba lagi dengan frame saat ini.
  • Metode GMV menggunakan Frame untuk input. ML Kit menggunakan InputImage.
  • GMV menyediakan framework MultiDetector, MultiProcessor, dan FocusingProcessor untuk melakukan beberapa deteksi dan pemfilteran hasil. ML Kit tidak menyediakan mekanisme seperti itu, tetapi fungsi yang sama dapat diimplementasikan oleh developer jika diinginkan.

Mengupdate Impor Gradle

Update dependensi untuk library Android ML Kit dalam file Gradle modul (level aplikasi), biasanya app/build.gradle, berdasarkan tabel berikut:

API Artefak GMV Artefak ML Kit
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.0
TextRecognition com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:19.0.0
CameraSource com.google.android.gms:play-services-vision:x.x.x com.google.mlkit:camera:16.0.0-beta3

Perubahan API

Bagian ini menjelaskan class dan metode GMV dan ML Kit yang sesuai untuk setiap Vision API, dan menunjukkan cara menginisialisasi API tersebut.

FaceDetector

Kodekan ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:

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

Ubah nama class dan metode berikut:

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

gunakan #setContourMode untuk mengganti GMV CONTOUR_GENDERS)

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) Fitur ini ditutupi oleh mode kontur wajah.
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

Kodekan ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:

GMV

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

ML Kit

barcodeScanner = BarcodeScanning.getClient();

Ubah nama class dan metode berikut:

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

TextRecognition

Kodekan ulang inisialisasi seperti yang ditunjukkan dalam contoh ini:

GMV

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

ML Kit

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Ubah nama class dan metode berikut:

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

Jika menggunakan library CameraSource yang disediakan oleh Google Mobile Vision, Anda dapat bermigrasi dengan mudah ke library CameraXSource ML Kit, asalkan aplikasi Anda berjalan pada versi SDK min >= 21.

Ubah nama class dan metode berikut:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled Fokus otomatis disediakan secara default saat menggunakan CameraX.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode Fokus otomatis disediakan secara default saat menggunakan CameraX.
CameraSource.Builder.setRequestedFps Tidak digunakan lagi.
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() Ditangani secara internal
CameraSource.PictureCallback Tidak digunakan lagi
CameraSource.ShutterCallback Tidak digunakan lagi

Mendapatkan bantuan

Jika Anda mengalami masalah, lihat halaman Komunitas kami yang berisi penjelasan mengenai channel yang dapat digunakan untuk menghubungi kami.