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

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

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

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

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

อัปเดตการนำเข้า 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

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

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

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

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

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

GMV

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

ML Kit

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

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

GMV

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

ML Kit

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 เลิกใช้

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

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