Переход с 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 Артефакт ГМВ Артефакт комплекта ML
Детектор лица com.google.android.gms:play-services-vision:xxx com.google.android.gms:play-services-mlkit-face-detection:17.1.0
Детектор штрих-кода 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 для каждого Vision API, а также показано, как инициализировать API.

Детектор лица

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

ГМВ

detector = new FaceDetector.Builder(context)
    .setMode(FaceDetector.ACCURATE_MODE)
    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
    .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
    .build();

ML-комплект

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 = new BarcodeDetector.Builder(context).build());

ML-комплект

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

ML-комплект

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 Устарело

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

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