การย้ายข้อมูลจาก 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 Kit ไม่มีกลไกดังกล่าว แต่นักพัฒนาซอฟต์แวร์สามารถนำฟังก์ชันการทำงานเดียวกันนี้ไปใช้ได้หากต้องการ

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

อัปเดตทรัพยากร Dependency สำหรับไลบรารี Android ของ ML Kit ในไฟล์ 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.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

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

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

FaceDetector

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

มูลค่าสินค้ารวม

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

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

มูลค่าสินค้ารวม

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

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

มูลค่าสินค้ารวม

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

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

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