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_AKES の代わりに #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 非推奨

参考情報

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