Tài liệu này trình bày các bước bạn cần thực hiện để di chuyển các dự án của mình từ Google Mobile Vision (GMV) sang Bộ công cụ máy học trên Android.
Thay đổi API tổng thể
Những thay đổi này áp dụng cho tất cả API:
- API GMV trả về kết quả
SparseArray<T>
một cách đồng bộ. API Bộ công cụ máy học sử dụng API Tác vụ của Dịch vụ Google Play để trả về kết quả không đồng bộ. - GMV sử dụng lệnh gọi
isOperational()
trong nền tảng API để cho biết liệu một mô-đun đã được tải xuống thành công và sẵn sàng sử dụng hay chưa. Bộ công cụ máy học không có phương pháp như vậy. Bộ công cụ máy học sẽ gửi một trường hợp ngoại lệMlKitException.UNAVAILABLE
nếu một mô-đun chưa được tải xuống. Bạn có thể nắm bắt ngoại lệ này và xử lý khung tiếp theo hoặc đặt thời gian chờ và thử lại với khung hiện tại. - Các phương thức GMV sử dụng
Frame
để nhập. Bộ công cụ máy học sử dụngInputImage
. - GMV cung cấp các khung
MultiDetector
,MultiProcessor
vàFocusingProcessor
để thực hiện việc phát hiện nhiều hoạt động và lọc kết quả. Bộ công cụ máy học không cung cấp những cơ chế như vậy, nhưng nhà phát triển có thể triển khai cùng một chức năng nếu muốn.
Cập nhật tính năng nhập Gradle
Cập nhật các phần phụ thuộc cho thư viện Android của Bộ công cụ máy học trong tệp Gradle mô-đun (cấp ứng dụng) của bạn, thường là app/build.gradle
, theo bảng sau:
API | Cấu phần phần mềm GMV | Cấu phần của Bộ công cụ máy học |
---|---|---|
Trình phát hiện khuôn mặt | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
Trình phát hiện mã vạch | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-barcode-scanning:18.1.0 |
Nhận dạng văn bản | com.google.android.gms:play-services-vision:x.x.x |
com.google.android.gms:play-services-mlkit-text-recognition:18.0.2 |
CameraSource | com.google.android.gms:play-services-vision:x.x.x |
com.google.mlkit:camera:16.0.0-beta3 |
Thay đổi về API
Phần này mô tả các lớp và phương thức tương ứng của GMV và Bộ công cụ máy học cho mỗi API Vision, đồng thời chỉ ra cách khởi chạy API.
Trình phát hiện khuôn mặt
Mã hoá lại quá trình khởi động như trong ví dụ sau:
Tổng giá trị hàng hoá
detector = new FaceDetector.Builder(context) .setMode(FaceDetector.ACCURATE_MODE) .setLandmarkType(FaceDetector.ALL_LANDMARKS) .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) .build();
Bộ công cụ máy học
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);
Thay đổi các tên lớp và phương thức sau:
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
sử dụng |
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)
|
Tính năng này được áp dụng cho chế độ đường viền khuôn mặt. |
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.getBoundingBox()
|
Trình phát hiện mã vạch
Mã hoá lại quá trình khởi động như trong ví dụ sau:
Tổng giá trị hàng hoá
barcodeDetector = new BarcodeDetector.Builder(context).build());
Bộ công cụ máy học
barcodeScanner = BarcodeScanning.getClient();
Thay đổi các tên lớp và phương thức sau:
android.gms.vision.barcode |
mlkit.vision.barcode |
---|---|
BarcodeDetector |
BarcodeScanner
|
SparseArray<Barcode> detect(Frame frame) |
Task<List<Barcode>> process(@NonNull InputImage image)
|
Barcode
|
Barcode
|
Nhận dạng văn bản
Mã hoá lại quá trình khởi động như trong ví dụ sau:
Tổng giá trị hàng hoá
textRecognizer = new TextRecognizer.Builder(context).build();
Bộ công cụ máy học
textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);
Thay đổi các tên lớp và phương thức sau:
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
Nếu sử dụng thư viện CameraSource do Google Mobile Vision cung cấp, bạn có thể dễ dàng di chuyển sang thư viện CameraXSource
của Bộ công cụ máy học, miễn là ứng dụng của bạn đang chạy trên phiên bản sdk tối thiểu >= 21.
Thay đổi các tên lớp và phương thức sau:
android.gms.vision |
mlkit.vision.camera |
---|---|
CameraSource
|
CameraSourceConfig
|
CameraSource.Builder
|
CameraSourceConfig.Builder
|
CameraSource.Builder.setAutoFocusEnabled
|
Tính năng tự động lấy nét được cung cấp theo mặc định khi sử dụng CameraX. |
CameraSource.Builder.setFacing
|
CameraSourceConfig.Builder.setCameraFacing
|
CameraSource.Builder.setFocusMode
|
Tính năng tự động lấy nét được cung cấp theo mặc định khi sử dụng CameraX. |
CameraSource.Builder.setRequestedFps
|
Không dùng nữa. |
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()
|
Được xử lý nội bộ |
CameraSource.PictureCallback |
Không được dùng nữa |
CameraSource.ShutterCallback |
Không được dùng nữa |
Nhận trợ giúp
Nếu bạn gặp vấn đề, hãy tham khảo trang Cộng đồng. Tại đây, chúng tôi trình bày những kênh có thể liên hệ với chúng tôi.