การย้ายข้อมูลจาก Mobile Vision ไปยัง ML Kit บน Android

เอกสารนี้อธิบายขั้นตอนที่คุณต้องดำเนินการเพื่อย้ายข้อมูลโปรเจ็กต์จาก Google Mobile Vision (GMV) ไปยัง ML Kit ใน Android

การเปลี่ยนแปลงโดยรวมของ API

การเปลี่ยนแปลงเหล่านี้มีผลกับ API ทั้งหมด

  • GMV API จะแสดงผลลัพธ์ SparseArray<T> แบบซิงโครนัส ML Kit API ใช้ Google Play Services Task API เพื่อแสดงผลลัพธ์แบบไม่พร้อมกัน
  • GMV ใช้การเรียก isOperational() ในแพลตฟอร์ม API เพื่อระบุว่ามีการดาวน์โหลดข้อบังคับสําเร็จและพร้อมใช้งานหรือไม่ ML Kit ไม่มีวิธีดังกล่าว ML Kit จะแสดงข้อยกเว้น MlKitException.UNAVAILABLE หากยังไม่ได้ดาวน์โหลดข้อบังคับ คุณสามารถจับข้อยกเว้นนี้และประมวลผลเฟรมถัดไป หรือตั้งค่าการหมดเวลาแล้วลองอีกครั้งกับเฟรมปัจจุบัน
  • วิธีการ GMV ใช้ Frame เป็นอินพุต ML Kit ใช้ InputImage
  • GMV มีเฟรมเวิร์ก MultiDetector, MultiProcessor และ FocusingProcessor สำหรับการดําเนินการตรวจจับหลายรายการและการกรองผลลัพธ์ ML Kit ไม่มีกลไกดังกล่าว แต่นักพัฒนาแอปสามารถติดตั้งใช้งานฟังก์ชันการทำงานเดียวกันได้หากต้องการ

อัปเดตการนําเข้า Gradle

อัปเดตทรัพยากร Dependency สำหรับคลัง ML Kit สำหรับ Android ในไฟล์ Gradle ของโมดูล (ระดับแอป) ซึ่งมักจะเป็น app/build.gradle ตามตารางต่อไปนี้

API อาร์ติแฟกต์ GMV อาร์ติแฟกต์ 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

การเปลี่ยนแปลง API

ส่วนนี้จะอธิบายคลาสและเมธอด GMV และ ML Kit ที่เกี่ยวข้องสําหรับ Vision API แต่ละรายการ และแสดงวิธีเริ่มต้นใช้งาน API

FaceDetector

เขียนโค้ดการเริ่มต้นใหม่ตามที่แสดงในตัวอย่างนี้

GMVML Kit
detector = new FaceDetector.Builder(context)
    .setMode(FaceDetector.ACCURATE_MODE)
    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
    .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
    .build();
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);

เปลี่ยนชื่อคลาสและเมธอดต่อไปนี้

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

ใช้ #setContourMode เพื่อแทนที่ 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) ฟีเจอร์นี้อยู่ในโหมดคอนทัวร์ใบหน้า
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

เขียนโค้ดการเริ่มต้นใหม่ตามที่แสดงในตัวอย่างนี้

GMVML Kit
barcodeDetector = new BarcodeDetector.Builder(context).build());
barcodeScanner = BarcodeScanning.getClient();

เปลี่ยนชื่อคลาสและเมธอดต่อไปนี้

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

TextRecognition

เขียนโค้ดการเริ่มต้นใหม่ตามที่แสดงในตัวอย่างนี้

GMVML Kit
textRecognizer = new TextRecognizer.Builder(context).build();
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

เปลี่ยนชื่อคลาสและเมธอดต่อไปนี้

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

หากใช้ไลบรารี CameraSource ที่ Google Mobile Vision มีให้ คุณสามารถย้ายข้อมูลไปยังไลบรารี CameraXSource ของ ML Kit ได้อย่างง่ายดาย ตราบใดที่แอปของคุณทำงานบน SDK เวอร์ชันขั้นต่ำที่ >= 21

เปลี่ยนชื่อคลาสและเมธอดต่อไปนี้

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled ระบบจะเปิดใช้โฟกัสอัตโนมัติโดยค่าเริ่มต้นเมื่อใช้ CameraX
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode ระบบจะเปิดใช้โฟกัสอัตโนมัติโดยค่าเริ่มต้นเมื่อใช้ CameraX
CameraSource.Builder.setRequestedFps เลิกใช้งานแล้ว
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() จัดการภายใน
CameraSource.PictureCallback เลิกใช้
CameraSource.ShutterCallback เลิกใช้

การขอความช่วยเหลือ

หากพบปัญหาใดๆ โปรดไปที่หน้าชุมชนซึ่งจะแสดงช่องทางติดต่อเรา