Bermigrasi dari Mobile Vision ke ML Kit di Android

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

Perubahan API Secara Keseluruhan

Perubahan ini berlaku untuk semua API:

  • GMV API menampilkan hasil SparseArray<T> secara sinkron. ML Kit API menggunakan Google Play services Task API untuk menampilkan hasil secara asinkron.
  • GMV menggunakan panggilan isOperational() di platform API untuk menunjukkan apakah modul telah berhasil didownload dan siap digunakan. ML Kit tidak memiliki metode tersebut. ML Kit akan menampilkan pengecualian MlKitException.UNAVAILABLE jika modul belum didownload. Anda dapat menangkap pengecualian ini dan memproses frame berikutnya atau menyetel 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 tersebut, tetapi fungsi yang sama dapat diimplementasikan oleh developer jika diinginkan.

Memperbarui Impor Gradle

Perbarui dependensi untuk library Android ML Kit di file Gradle modul (level aplikasi), yang biasanya app/build.gradle, sesuai dengan 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.1
TextRecognition com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:19.0.1
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, serta menunjukkan cara menginisialisasi API.

FaceDetector

Koding 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_LANDMARKS)

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 tercakup dalam 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

Koding 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

Koding 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 Anda menggunakan library CameraSource yang disediakan oleh Google Mobile Vision, Anda dapat dengan mudah bermigrasi ke library CameraXSource ML Kit, asalkan aplikasi Anda berjalan di 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 Autofokus disediakan secara default saat menggunakan CameraX.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode Autofokus 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 untuk mengetahui saluran yang tersedia untuk menghubungi kami.