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.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

API の変更

このセクションでは、各 Vision API に対応する GMV クラスと ML Kit クラス、メソッドについて説明し、API を初期化する方法を示します。

FaceDetector

この例に示すように、初期化を再コード化します。

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

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

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

この例に示すように、初期化を再コード化します。

GMV

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

この例に示すように、初期化を再コード化します。

GMV

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

困ったときは

問題が発生した場合は、コミュニティ ページで、お問い合わせいただけるチャネルをご確認ください。