Migracja z Mobile Vision do ML Kit na Androidzie

Ten dokument opisuje czynności, które musisz wykonać, aby przenieść projekty z Z Google Mobile Vision (GMV) na ML Kit na Androidzie.

Ogólne zmiany w interfejsie API

Te zmiany dotyczą wszystkich interfejsów API:

  • Interfejsy GMV API zwracają synchronicznie wynik funkcji SparseArray<T>. Interfejsy ML Kit API wykorzystują Google Play Services Task API, aby asynchronicznie zwracać wyniki.
  • GMV używa wywołania isOperational() w interfejsie API, aby wskazać, czy moduł został pobrany i jest gotowy do użycia. ML Kit nie ma tej metody. ML Kit zgłasza wyjątek MlKitException.UNAVAILABLE, jeśli moduł nie został pobrany. Możesz wyłapać ten wyjątek i przetworzyć lub ustaw czas oczekiwania i spróbuj ponownie z bieżącą klatką.
  • Metody GMV wykorzystują Frame do wprowadzania danych. ML Kit używa InputImage.
  • GMV zapewnia MultiDetector, MultiProcessor i FocusingProcessor platform do wykrywania i filtrowania wyników. Zestaw ML nie udostępnia takich mechanizmów, ale ta sama funkcja może być wdrażane przez dewelopera w razie potrzeby.

Aktualizowanie importu Gradle

Zaktualizuj zależności bibliotek ML Kit na Androida w pliku Gradle modułu (na poziomie aplikacji), którym jest zwykle app/build.gradle, zgodnie z tą tabelą:

Interfejs API Artefakt GMV Artefakt 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

Zmiany w interfejsie API

W tej sekcji opisano odpowiednie klasy i metody GMV i ML Kit dla każdego interfejsu Vision API oraz jak zainicjować interfejs API.

FaceDetector

Przekoduj inicjalizację zgodnie z tym przykładem:

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

Zmień te nazwy klas i metod:

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

użyj elementu #setContourMode, aby zastąpić 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) Ta funkcja jest dostępna w trybie konturowania twarzy.
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

Przekoduj inicjalizację zgodnie z tym przykładem:

GMV

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

ML Kit

barcodeScanner = BarcodeScanning.getClient();

Zmień te nazwy klas i metod:

android.gms.vision.barcode mlkit.vision.barcode
BarcodeDetector BarcodeScanner
SparseArray<Barcode> detect(Frame frame) Task<List<Barcode>> process(@NonNull InputImage image)
Barcode Barcode

TextRecognition

Przekoduj inicjalizację zgodnie z tym przykładem:

GMV

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

ML Kit

textRecognizer = TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS);

Zmień te nazwy klas i metod:

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

Jeśli korzystasz z biblioteki CameraSource udostępnionej przez Google Mobile Vision, łatwo przejść na CameraXSource narzędzia ML Kit , o ile Twoja aplikacja działa w pakiecie SDK w wersji 21 lub nowszej.

Zmień te nazwy klas i metod:

android.gms.vision mlkit.vision.camera
CameraSource CameraSourceConfig
CameraSource.Builder CameraSourceConfig.Builder
CameraSource.Builder.setAutoFocusEnabled Gdy korzystasz z aparatu Aparat X, autofokus jest domyślnie włączony.
CameraSource.Builder.setFacing CameraSourceConfig.Builder.setCameraFacing
CameraSource.Builder.setFocusMode Gdy korzystasz z aparatu Aparat X, autofokus jest domyślnie włączony.
CameraSource.Builder.setRequestedFps Rola wycofana.
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() Obsługiwane wewnętrznie
CameraSource.PictureCallback Wycofano
CameraSource.ShutterCallback Wycofano

Uzyskiwanie pomocy

Jeśli napotkasz jakieś problemy, zajrzyj na naszą stronę Społeczności. w którym wymieniamy kanały, za pomocą których można się z nami skontaktować.