Mobile Vision から ML Kit(Android)への移行

このドキュメントでは、プロジェクトを Google Mobile Vision(GMV)から Android の ML Kit に移行するために必要な手順について説明します。

API の全体的な変更

この変更は、すべての API に適用されます。

  • GMV API は、同期的に SparseArray<T> の結果を返します。ML Kit API は、Google Play 開発者サービスの Task API を使用して、結果を非同期で返します。
  • GMV は、API サーフェスの isOperational() 呼び出しを使用して、モジュールが正常にダウンロードされて使用できる状態であることを確認します。ML Kit にはそのようなメソッドはありませんモジュールがダウンロードされていない場合、ML Kit は MlKitException.UNAVAILABLE 例外をスローします。この例外をキャッチして次のフレームを処理することも、タイムアウトを設定して現在のフレームで再試行することもできます。
  • GMV のメソッドでは、入力に Frame を使用します。ML Kit では InputImage を使用します。
  • GMV は、複数の検出と結果のフィルタリングを行うために、MultiDetectorMultiProcessorFocusingProcessor のフレームワークを提供します。ML Kit にはこのようなメカニズムはありませんが、必要に応じて同じ機能を実装できます。

Gradle インポートを更新する

次の表に従って、モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)内の ML Kit Android ライブラリの依存関係を更新します。

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 の変更

このセクションでは、各 Vision API の GMV と ML Kit のクラスとメソッドについて説明し、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

GMV CONTOUR_premS の代わりに #setContourMode を使用)

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

Google Mobile Vision で提供される CameraSource ライブラリを使用する場合は、アプリが最小 SDK バージョン 21 以上で実行されている限り、ML Kit の CameraXSource ライブラリに簡単に移行できます。

次のクラス名とメソッド名を変更します。

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 非推奨

困ったときは

問題が発生した場合は、コミュニティ ページをご覧ください。このページには、お問い合わせに使用できるチャンネルの概要が記載されています。