Bermigrasi dari Mobile Vision ke ML Kit di Android

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

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

Perubahan Keseluruhan API

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() di platform API untuk menunjukkan apakah modul telah berhasil didownload dan siap digunakan. ML Kit tidak memiliki metode tersebut. ML Kit melemparkan 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 semacam itu, tetapi fungsi yang sama dapat diterapkan oleh developer jika diinginkan.

Memperbarui Impor Gradle

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

API Artefak GMV Artefak ML Kit
Detektor Wajah com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-face-detection:17.1.0
Detektor Kode Batang com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-barcode-scanning:18.1.0
Pengenalan Teks com.google.android.gms:play-services-vision:x.x.x com.google.android.gms:play-services-mlkit-text-recognition:18.0.2
Sumber Kamera 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.

Detektor Wajah

Kode ulang inisialisasi seperti yang ditunjukkan pada 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 menggantikan GMV CONTOUR_imbaS)

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

Detektor Kode Batang

Kode ulang inisialisasi seperti yang ditunjukkan pada 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

Pengenalan Teks

Kode ulang inisialisasi seperti yang ditunjukkan pada 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()

Sumber Kamera

Jika menggunakan library CameraSource yang disediakan oleh Google Mobile Vision, Anda dapat dengan mudah bermigrasi ke library CameraXSource ML Kit, asalkan aplikasi Anda berjalan pada versi SDK minimal >= 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 berlaku lagi
CameraSource.ShutterCallback Tidak berlaku lagi

Mendapatkan bantuan

Jika Anda mengalami masalah, lihat halaman Komunitas kami untuk menguraikan channel yang tersedia untuk menghubungi kami.