デフォルトでは、ML Kit の API は Google がトレーニングした ML モデルを使用します。これらのモデルは、幅広いアプリケーションを対象として設計されています。ただし、一部のユースケースでは、よりターゲットを絞ったモデルが必要です。そのため、一部の ML Kit API では、デフォルトのモデルをカスタム LiteRT モデルに置き換えることができるようになっています。
画像ラベル付け API とオブジェクトの検出とトラッキング API の両方で、カスタム画像分類モデルがサポートされています。TensorFlow Hub の高品質な事前トレーニング済みモデルや、TensorFlow または AutoML でトレーニングされた独自のカスタムモデルと互換性があります。
他のドメインやユースケース向けのカスタム ソリューションが必要な場合は、オンデバイスの機械学習ページで、オンデバイスの機械学習に関する Google のすべてのソリューションとツールに関するガイダンスをご覧ください。
カスタムモデルで ML Kit を使用するメリット
ML Kit でカスタム画像分類モデルを使用するメリットは次のとおりです。
- 使いやすい上位レベルの API - 低レベルのモデルの入出力、画像の前処理 / 後処理、処理パイプラインの構築を行う必要はありません。
- ラベルのマッピングを自分で行う必要はありません。ML Kit は LiteRT モデルのメタデータからラベルを抽出し、マッピングを行います。
- TensorFlow Hub で公開されている事前トレーニング済みモデルから、TensorFlow または AutoML でトレーニングされた新しいモデルまで、さまざまなソースのカスタムモデルをサポートしています。
- Android のカメラ API との統合に最適化されています。
また、特にオブジェクトの検出とトラッキングについては、
- まずオブジェクトを特定し、関連する画像領域でのみ分類子を実行することで、分類の精度を高めます。
- リアルタイムのインタラクティブなエクスペリエンスを提供する: オブジェクトが検出および分類されると、ユーザーに即座にフィードバックを提供します。
事前トレーニング済みの画像分類モデルを使用する
一連の条件を満たしている場合は、事前トレーニング済みの LiteRT モデルを使用できます。TensorFlow Hub では、これらの条件を満たす、Google や他のモデル作成者による一連の審査済みモデルを提供しています。
TensorFlow Hub で公開されているモデルを使用する
TensorFlow Hub では、さまざまなモデル作成者による幅広い事前トレーニング済み画像分類モデルが提供されており、Image Labeling API、Object Detection API、Object Tracking API で使用できます。(下記の手順に従う)
- ML Kit と互換性のあるモデルのコレクションからモデルを選択します。
- モデルの詳細ページから .tflite モデルファイルをダウンロードします。メタデータを含むモデル形式を選択します(利用可能な場合)。
- 画像ラベリング API または オブジェクト検出とトラッキング API のガイドに沿って、モデルファイルをプロジェクトにバンドルし、Android または iOS アプリケーションで使用する方法をご確認ください。
独自の画像分類モデルをトレーニングする
事前トレーニング済みの画像分類モデルがニーズに合わない場合は、独自の LiteRT モデルをトレーニングする方法がいくつかあります。そのうちのいくつかは、次のセクションで概要を説明し、詳細を解説します。
| 独自の画像分類モデルをトレーニングするオプション | |
|---|---|
| AutoML |
|
| TensorFlow モデルを LiteRT に変換する |
|
AutoML
AutoML を使用してトレーニングされた画像分類モデルは、画像ラベル付け API とオブジェクトの検出とトラッキング API のカスタムモデルでサポートされています。これらの API は、Cloud Storage でホストされているモデルのダウンロードもサポートしています。
AutoML でトレーニングされたモデルを Android アプリと iOS アプリで使用する方法の詳細については、ユースケースに応じて、各 API のカスタムモデル ガイドをご覧ください。
LiteRT コンバータを使用して作成されたモデル
既存の TensorFlow 画像分類モデルがある場合は、LiteRT コンバータを使用して変換できます。作成したモデルが次の互換性要件を満たしていることを確認します。
Android アプリと iOS アプリで LiteRT モデルを使用する方法について詳しくは、ユースケースに応じて、画像ラベリング API または Object Detection and Tracking API のガイドをご覧ください。
LiteRT モデルの互換性
次の要件を満たしていれば、事前トレーニング済みの LiteRT 画像分類モデルを使用できます。
テンソル
- モデルには、次の制約を満たす入力テンソルが 1 つだけ必要です。
- データは RGB ピクセル形式です。
- データは UINT8 型または FLOAT32 型です。入力テンソルの型が FLOAT32 の場合は、メタデータを付加して NormalizationOptions を指定する必要があります。
- テンソルには BxHxWxC の 4 つのディメンションがあります。ここで、
- B はバッチサイズです。1 にする必要があります(大きなバッチでの推論はサポートされていません)。
- W と H は入力の幅と高さです。
- C は想定されるチャンネル数です。3 にする必要があります。
- モデルには、N 個のクラスと 2 次元または 4 次元の出力テンソルが少なくとも 1 つ必要です。
- (1xN)
- (1x1x1xN)
- シングルヘッド モデルのみが完全にサポートされています。マルチヘッド モデルでは、予期しない結果が出力されることがあります。
メタデータ
LiteRT モデルにメタデータを追加するで説明されているように、LiteRT ファイルにメタデータを追加できます。
FLOAT32 入力テンソルを含むモデルを使用するには、メタデータで NormalizationOptions を指定する必要があります。
また、このメタデータを出力テンソル TensorMetadata に関連付けることもおすすめします。
- 各出力クラスの名前を指定するラベルマップ。タイプ TENSOR_AXIS_LABELS の AssociatedFile として指定します(指定しない場合は、数値の出力クラス インデックスのみが返されます)。
- 結果の信頼度が低すぎて返せないと見なされるデフォルトのスコアしきい値。ScoreThresholdingOptions を含む ProcessUnit として