Переход с Mobile Vision на ML Kit на Android

В этом документе описываются шаги, которые необходимо предпринять для переноса проектов из Google Mobile Vision (GMV) в ML Kit на Android.

Общие изменения API

Эти изменения применяются ко всем API:

  • API GMV возвращают результат SparseArray<T> синхронно. API ML Kit используют API задач сервисов Google Play для асинхронного возврата результатов.
  • GMV использует вызов isOperational() в API-поверхности, чтобы указать, был ли модуль успешно загружен и готов ли он к использованию. В ML Kit такого метода нет. ML Kit выдает исключение MlKitException.UNAVAILABLE , если модуль не был загружен. Вы можете перехватить это исключение и обработать следующий кадр или установить тайм-аут и повторить попытку с текущим кадром.
  • Методы GMV используют Frame для ввода. ML Kit использует InputImage .
  • GMV предоставляет фреймворки MultiDetector , MultiProcessor и FocusingProcessor для выполнения множественных обнаружений и фильтрации результатов. ML Kit не предоставляет таких механизмов, но та же функциональность может быть реализована разработчиком при желании.

Обновление импорта Gradle

Обновите зависимости для библиотек Android ML Kit в файле Gradle вашего модуля (уровня приложения), который обычно называется app/build.gradle , в соответствии со следующей таблицей:

API Артефакт GMV Артефакт комплекта ML
FaceDetector com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-face-detection:17.1.0
BarcodeDetector com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
Распознавание текста com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-text-recognition:19.0.1
Источник камеры com.google.android.gms:play-services-vision:xxx com.google.mlkit:camera:16.0.0-beta3

Изменения API

В этом разделе описываются соответствующие классы и методы GMV и ML Kit для каждого API Vision, а также показано, как инициализировать API.

FaceDetector

Перекодируйте инициализацию, как показано в этом примере:

ГМВ

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

Перекодируйте инициализацию, как показано в этом примере:

ГМВ

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

Распознавание текста

Перекодируйте инициализацию, как показано в этом примере:

ГМВ

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, предоставляемую 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 Устаревший

Получение помощи

Если у вас возникнут какие-либо проблемы, посетите страницу нашего сообщества , где мы описываем доступные каналы связи с нами.