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

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

総取引額ML Kit
detector = new FaceDetector.Builder(context)
    .setMode(FaceDetector.ACCURATE_MODE)
    .setLandmarkType(FaceDetector.ALL_LANDMARKS)
    .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
    .build();
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

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

総取引額ML Kit
barcodeDetector = new BarcodeDetector.Builder(context).build());
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

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

総取引額ML Kit
textRecognizer = new TextRecognizer.Builder(context).build();
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 非推奨

困ったときは

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