Gradle インポートを更新する
新しい SDK では、ML Kit API ごとに依存関係が 1 つだけ必要です。名前を指定する必要はありません。
firebase-ml-vision
や firebase-ml-natural-language
などの共通ライブラリ。
ML Kit では、Google Play 開発者サービスに依存するライブラリに com.google.android.gms
名前空間を使用します。
Vision API
バンドルされたモデルはアプリケーションの一部として提供されます。シンモデルはダウンロードする必要があります。 バンドル形式とシン フォームの両方で利用可能な API や 1 つの形式のみの API もある または次のいずれかになります。
API | バンドル | 細い |
---|---|---|
テキスト認識 | x(ベータ版) | x |
顔検出 | x | x |
バーコード スキャン | x | x |
画像ラベル付け | x | x |
オブジェクトの検出とトラッキング | x | - |
モジュール(アプリ、
レベル)に配置する必要があります。次の表に従って、Gradle ファイル(通常は app/build.gradle
)を指定します。
バンドルされたモデル
API | 古いアーチファクト | 新しいアーティファクト |
---|---|---|
バーコード スキャン | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-barcode-model:16.0.1 |
com.google.mlkit:barcode-scanning:17.3.0 |
顔の輪郭 | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-face-model:19.0.0 |
com.google.mlkit:face-detection:16.1.7 |
画像ラベル付け | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-image-label-model:19.0.0 |
com.google.mlkit:image-labeling:17.0.9 |
オブジェクト検出 | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-object-detection-model:19.0.3 |
com.google.mlkit:object-detection:17.0.2 |
シンモデル
API | 古いアーチファクト | 新しいアーティファクト |
---|---|---|
バーコード スキャン | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1 |
顔検出 | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-face-detection:17.1.0 |
テキスト認識 | com.google.firebase:firebase-ml-vision:24.0.1 | com.google.android.gms:play-services-mlkit-text-recognition:19.0.1 |
AutoMLVision Edge
API | 古いアーティファクト | 新しいアーティファクト |
---|---|---|
ダウンロードしない AutoML | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-automl:18.0.3 |
com.google.mlkit:image-labeling-custom:17.0.3 |
ダウンロードを伴う AutoML | com.google.firebase:firebase-ml-vision:24.0.1 com.google.firebase:firebase-ml-vision-automl:18.0.3 |
com.google.mlkit:image-labeling-custom:17.0.3
com.google.mlkit:linkfirebase:17.0.0 |
Natural Language API
バンドルされたモデルはアプリケーションの一部として提供されます。シンモデルはダウンロードする必要があります。
API | バンドル | 細い |
---|---|---|
言語 ID | x | x |
スマート リプライ | x | x(ベータ版) |
モジュール(アプリ、
レベル)に配置する必要があります。次の表に従って、Gradle ファイル(通常は app/build.gradle
)を指定します。
バンドルされたモデル
API | 古いアーチファクト | 新しいアーティファクト |
---|---|---|
言語 ID | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7 |
com.google.mlkit:language-id:17.0.6 |
スマート リプライ | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7 |
com.google.mlkit:smart-reply:17.0.4 |
シンモデル
API | 古いアーチファクト | 新しいアーティファクト |
---|---|---|
言語 ID | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-language-id-model:20.0.7 |
com.google.android.gms:play-services-mlkit-language-id:17.0.0 |
スマート リプライ | com.google.firebase:firebase-ml-natural-language:22.0.0 com.google.firebase:firebase-ml-natural-language-smart-reply-model:20.0.7 |
com.google.android.gms:play-services-mlkit-smart-reply:16.0.0-beta1 |
クラス名を更新する
クラスがこの表に含まれている場合は、示されている変更を加えます。
以前のクラス | 新しいクラス |
---|---|
com.google.firebase.ml.common.FirebaseMLException | com.google.mlkit.common.MlKitException |
com.google.firebase.ml.vision.common.FirebaseVisionImage | com.google.mlkit.vision.common.InputImage |
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector | com.google.mlkit.vision.barcode.BarcodeScanner |
com.google.firebase.ml.vision.labeler.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabeler |
com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector | com.google.mlkit.vision.barcode.BarcodeScanner |
com.google.firebase.ml.vision.automl.FirebaseAutoMLLocalModel | com.google.mlkit.common.model.LocalModel |
com.google.firebase.ml.vision.automl.FirebaseAutoMLRemoteModel | com.google.mlkit.common.model.CustomRemoteModel |
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceImageLabelerOptions | com.google.mlkit.vision.label.defaults.ImageLabelerOptions |
com.google.firebase.ml.vision.label.FirebaseVisionImageLabel | com.google.mlkit.vision.label.ImageLabel |
com.google.firebase.ml.vision.label.FirebaseVisionOnDeviceAutoMLImageLabelerOptions | com.google.mlkit.vision.label.custom.CustomImageLabelerOptions |
com.google.firebase.ml.vision.objects.FirebaseVisionObjectDetectorOptions | com.google.mlkit.vision.objects.defaults.ObjectDetectorOptions |
その他のクラスについては、次のルールに従ってください。
- クラス名から
FirebaseVision
接頭辞を削除します。 Firebase
接頭辞で始まる他の接頭辞をクラス名から削除します。
また、パッケージ名の com.google.firebase.ml
プレフィックスを
com.google.mlkit
に置き換えます。
メソッド名を更新する
コードの変更が最小限です。
- 検出機能/スキャナ/ラベル付け/翻訳ツールのインスタンス化が変更されました。各機能には独自のエントリ ポイントがあります。例: BarcodeScanning、TextRecognition、ImageLabeling、Translation...Firebase サービス
getInstance()
の呼び出しは、機能エントリ ポイントのgetClient()
メソッドの呼び出しに置き換えられます。 - 中国語や韓国語など、他の文字を認識するためのライブラリが導入されたため、TextRecognizer のデフォルトのインスタンス化は削除されました。ラテン文字のテキスト認識モデルでデフォルトのオプションを使用するには、
com.google.android.gms:play-services-mlkit-text-recognition
への依存関係を宣言し、TextRecognition.getClient(TextRecognizerOptions.DEFAULT_OPTIONS)
を使用してください。 - ImageLabeler と ObjectDetector のデフォルトのインスタンス化は、この 2 つの機能に対するカスタムモデルのサポートを導入したため削除されました。たとえば、ImageLabeling の基本モデルでデフォルトのオプションを使用するには、
com.google.mlkit:image-labeling
への依存関係を宣言し、Java ではImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS)
を使用してください。 - すべてのハンドル(検出器/スキャナ/ラベル付け/翻訳器など)を閉じることができる。これらのオブジェクトが不要になったときに
close()
メソッドが呼び出されるようにします。Fragment または AppCompatActivity で使用している場合は、Fragment または AppCompatActivity で LifecycleOwner.getLifecycle() を呼び出し、Lifecycle.addObserver を呼び出してください。 - 整合性を保つため、Vision API の
processImage()
とdetectInImage()
の名前がprocess()
に変更されました 。 - Natural Language API では、「言語コード」ではなく「言語タグ」(BCP 47 標準で定義)という用語が使用されるようになりました。
- xxxOptions クラスのゲッター メソッドを削除しました。
- InputImage クラスの getBitmap() メソッド(
FirebaseVisionImage
の後継)が、公開インターフェースの一部としてサポートされなくなりました。さまざまな入力からビットマップを変換する方法については、ML Kit クイックスタート サンプルのBitmapUtils.java
をご覧ください。 - FirebaseVisionImageMetadata は削除されました。幅、高さ、rotationDegrees、形式などの画像メタデータを InputImages の構築メソッドに渡すだけです。
以下に、古い Kotlin メソッドと新しい Kotlin メソッドの例を示します。
旧
// Construct image labeler with base model and default options. val imageLabeler = FirebaseVision.getInstance().onDeviceImageLabeler // Construct object detector with base model and default options. val objectDetector = FirebaseVision.getInstance().onDeviceObjectDetector // Construct face detector with given options val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options) // Construct image labeler with local AutoML model val localModel = FirebaseAutoMLLocalModel.Builder() .setAssetFilePath("automl/manifest.json") .build() val autoMLImageLabeler = FirebaseVision.getInstance() .getOnDeviceAutoMLImageLabeler( FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F) .build() )
新規
// Construct image labeler with base model and default options. val imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS) // Optional: add life cycle observer lifecycle.addObserver(imageLabeler) // Construct object detector with base model and default options. val objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS) // Construct face detector with given options val faceDetector = FaceDetection.getClient(options) // Construct image labeler with local AutoML model val localModel = LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") .build() val autoMLImageLabeler = ImageLabeling.getClient( CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F).build())
以下に、古い Java メソッドと新しい Java メソッドの例を示します。
旧
// Construct image labeler with base model and default options. FirebaseVisionImageLabeler imagelLabeler = FirebaseVision.getInstance().getOnDeviceImageLabeler(); // Construct object detector with base model and default options. FirebaseVisionObjectDetector objectDetector = FirebaseVision.getInstance().getOnDeviceObjectDetector(); // Construct face detector with given options FirebaseVisionFaceDetector faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(options); // Construct image labeler with local AutoML model FirebaseAutoMLLocalModel localModel = new FirebaseAutoMLLocalModel.Builder() .setAssetFilePath("automl/manifest.json") .build(); FirebaseVisionImageLabeler autoMLImageLabeler = FirebaseVision.getInstance() .getOnDeviceAutoMLImageLabeler( FirebaseVisionOnDeviceAutoMLImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F) .build());
新規
// Construct image labeler with base model and default options. ImageLabeler imageLabeler = ImageLabeling.getClient(ImageLabelerOptions.DEFAULT_OPTIONS); // Optional: add life cycle observer getLifecycle().addObserver(imageLabeler); // Construct object detector with base model and default options. ObjectDetector objectDetector = ObjectDetection.getClient(ObjectDetectorOptions.DEFAULT_OPTIONS); // Construct face detector with given options FaceDetector faceDetector = FaceDetection.getClient(options); // Construct image labeler with local AutoML model LocalModel localModel = new LocalModel.Builder() .setAssetManifestFilePath("automl/manifest.json") .build(); ImageLabeler autoMLImageLabeler = ImageLabeling.getClient( new CustomImageLabelerOptions.Builder(localModel) .setConfidenceThreshold(0.3F).build());
API 固有の変更
バーコード スキャン
Barcode Scanning API では、現在、次の 2 つの方法でモデルを提供できます。
- Google Play 開発者サービス(別名「シン」)を使用する(推奨) - アプリのサイズが小さくなり、モデルがアプリ間で共有されます。ただし、デベロッパーは、モデルを初めて使用する前に、モデルがダウンロードされていることを確認する必要があります。
- アプリの APK(別名「バンドル版」) - アプリのサイズが増大しますが、そのモデルはすぐに使用可能です。
この 2 つの実装は若干異なり、「バンドル」版には「シン」版よりも多くの点で改善されています。これらの違いについて詳しくは、Barcode Scanning API のガイドラインをご覧ください。
顔検出
Face Detection API では、次の 2 つの方法でモデルを提供できます。
- Google Play 開発者サービス(別名「シン」)を使用する(推奨) - アプリのサイズが小さくなり、モデルがアプリ間で共有されます。ただし、デベロッパーは、モデルを初めて使用する前に、モデルがダウンロードされていることを確認する必要があります。
- アプリの APK(別名「バンドル版」) - ダウンロード サイズは大きくなりますが、そのモデルをすぐに使用できます。
実装の動作は同じです。
翻訳
TranslateLanguage
が定数に、言語タグ(EN
)ではなく読み取り可能な名前(ENGLISH
など)を使用するようになりました。また、@IntDef から @StringDef に変更され、定数の値は一致する BCP 47 言語タグになります。アプリで [デバイスがアイドル状態の場合] のダウンロード条件オプションを使用している場合は、このオプションは削除され、使用できなくなりました。「デバイスの充電」オプションは引き続き使用できます。より複雑な動作が必要な場合は、独自のロジックの背後で
RemoteModelManager.download
の呼び出しを遅らせることができます。
AutoML 画像ラベル付け
アプリで「デバイスのアイドル状態」のダウンロード条件オプションを使用している場合は、 オプションが削除され、使用できなくなりました。引き続き 「デバイス充電」オプション。
より複雑な動作が必要な場合は、呼び出しを遅らせることができます。
独自のロジックの背後にある RemoteModelManager.download
。
オブジェクトの検出とトラッキング
アプリで大まかな分類を使用したオブジェクト検出を使用する場合は、 新しい SDK では、検出された分類カテゴリを返す方法が変更されました。 説明します。
分類カテゴリは、トレーニング データの
整数ではなく DetectedObject.Label
。カテゴリに該当する可能性がある
大まかな分類器は PredefinedCategory
クラスに含まれています。
新旧の Kotlin コードの例を次に示します。
旧
if (object.classificationCategory == FirebaseVisionObject.CATEGORY_FOOD) { ... }
新規
if (!object.labels.isEmpty() && object.labels[0].text == PredefinedCategory.FOOD) { ... } // or if (!object.labels.isEmpty() && object.labels[0].index == PredefinedCategory.FOOD_INDEX) { ... }
以下に、新旧の Java コードの例を示します。
旧
if (object.getClassificationCategory() == FirebaseVisionObject.CATEGORY_FOOD) { ... }
新規
if (!object.getLabels().isEmpty() && object.getLabels().get(0).getText().equals(PredefinedCategory.FOOD)) { ... } // or if (!object.getLabels().isEmpty() && object.getLabels().get(0).getIndex() == PredefinedCategory.FOOD_INDEX) { ... }
「不明」カテゴリは削除されました。オブジェクトの分類の信頼度が低い場合、ラベルは返されません。
Firebase の依存関係を削除する(省略可)
このステップは、次の条件が満たされる場合にのみ適用されます。
- 使用する Firebase コンポーネントは Firebase ML Kit のみです。
- オンデバイス API のみを使用する。
- モデルのサービングを使用しない
その場合は、移行後に Firebase の依存関係を削除できます。 手順は次のとおりです。
- アプリのモジュール(アプリレベル)ディレクトリにある google-services.json 構成ファイルを削除して、Firebase 構成ファイルを削除します。
- モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)内の Google サービス Gradle プラグインを Strict Version Matcher プラグインに置き換えます。
変更前
apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // … }
変更後
apply plugin: 'com.android.application' apply plugin: 'com.google.android.gms.strict-version-matcher-plugin' android { // … }
- プロジェクト(ルートレベル)の Gradle ファイル(build.gradle)の Google サービス Gradle プラグインのクラスパスを、Strict Version Matcher プラグインのクラスパスに置き換えます。
変更前
buildscript { dependencies { // ... classpath 'com.google.gms:google-services:4.3.3' // Google Services plugin } }
変更後
buildscript { dependencies { // ... classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.1' } }
以下の手順に沿って、Firebase コンソールで Firebase アプリを削除します。 Firebase サポートサイトの手順をご覧ください。
ヘルプ
問題が発生した場合は、コミュニティ ページで概要をご確認ください。 問い合わせ用のチャネルが表示されます