ML Kit によるカスタムモデル

ML Kit の API は、デフォルトで Google のトレーニング済み機械学習モデルを使用します。これらのモデルは、幅広いアプリケーションに対応するように設計されています。ただし、ユースケースによっては、よりターゲットを絞ったモデルが必要になります。そのため、一部の ML Kit API では、デフォルトのモデルをカスタム TensorFlow Lite モデルに置き換えることができます。

画像ラベル付け API と オブジェクト検出とトラッキング API は、いずれもカスタム画像分類モデルをサポートしています。TensorFlow Hub の厳選された高品質の事前トレーニング モデルや、TensorFlow、AutoML Vision Edge、TensorFlow Lite Model Maker でトレーニングされた独自のカスタムモデルに対応しています。

他のドメインやユースケース向けのカスタム ソリューションが必要な場合は、デバイス上の機械学習のページで、デバイス上の機械学習に関するすべてのソリューションとツールに関するガイダンスをご覧ください。

カスタムモデルで ML Kit を使用するメリット

ML Kit でカスタム画像分類モデルを使用するメリットは次のとおりです。

  • 使いやすい高レベル API - 低レベルのモデル入出力の処理、画像の前処理 / 後処理の処理、処理パイプラインの構築は必要ありません。
  • 自分でラベルのマッピングを心配する必要はありません。ML Kit は、TFLite モデルのメタデータからラベルを抽出し、マッピングを行います。
  • TensorFlow Hub で公開されている事前トレーニング済みモデルから、TensorFlow、AutoML Vision Edge、TensorFlow Lite Model Maker でトレーニングされた新しいモデルまで、幅広いソースのカスタムモデルをサポート
  • Firebase でホストされているモデルのサポート。モデルをオンデマンドでダウンロードすることにより、APK のサイズを縮小します。アプリを再公開することなくモデルの更新を push し、Firebase Remote Config を使用して A/B テストを簡単に実行できます。
  • Android の Camera API とのインテグレーション向けに最適化されている。

特にオブジェクトの検出とトラッキングでは、次のことを行います。

  • まずオブジェクトを配置して分類精度を改善する。関連する画像領域でのみ分類器を実行する。
  • リアルタイムのインタラクティブな体験を提供する。オブジェクトの検出と分類の際、ユーザーにすぐにフィードバックを提供できます。

事前トレーニング済みの画像分類モデルを使用する

事前トレーニング済みの TensorFlow Lite モデルで、一連の基準を満たしているものを使用できます。TensorFlow Hub を通じて、Google や他のモデル クリエイターから精査された一連のモデルを提供しています。

TensorFlow Hub で公開されているモデルを使用する

TensorFlow Hub は、画像ラベル付け API とオブジェクト検出 API およびトラッキング API で使用できるさまざまなモデル作成者の事前トレーニング済みの画像分類モデルを提供します。(下記の手順に従う)

  1. ML Kit 互換モデルのコレクションからモデルを選択します。
  2. モデルの詳細ページから .tflite モデルファイルをダウンロードします。利用可能な場合は、メタデータを含むモデル形式を選択します。
  3. モデルファイルをプロジェクトにバンドルして Android または iOS アプリケーションで使用する方法については、Image Labeling API または Object Detection and Tracking API のガイドをご覧ください。

独自の画像分類モデルをトレーニングする

事前トレーニング済みの画像分類モデルがニーズに合わない場合は、独自の TensorFlow Lite モデルをトレーニングするさまざまな方法があります。その一部については、以下で詳しく説明して説明します。

独自の画像分類モデルをトレーニングするためのオプション
AutoML Vision Edge
  • Google Cloud AI から提供
  • 最先端の画像分類モデルを作成する
  • パフォーマンスとサイズを簡単に評価
TensorFlow Lite モデルメーカー
  • モデルの再トレーニング(転移学習)により、モデルをゼロからトレーニングする場合よりも時間がかかり、必要なデータも少なくて済みます
TensorFlow モデルを TensorFlow Lite に変換する
  • TensorFlow を使用してモデルをトレーニングしてから、TensorFlow Lite に変換する

AutoML Vision Edge

AutoML Vision Edge を使用してトレーニングされた画像分類モデルは、Image Labeling API と Object Detection and Tracking API API のカスタムモデルでサポートされています。これらの API は、Firebase モデルのデプロイでホストされているモデルのダウンロードもサポートしています。

AutoML Vision Edge でトレーニングしたモデルを Android アプリと iOS アプリで使用する方法について詳しくは、ユースケースに応じて API ごとのカスタムモデル ガイドをご覧ください。

TensorFlow Lite モデルメーカー

TFLite Model Maker ライブラリは、TensorFlow ニューラル ネットワーク モデルをデバイス上の ML アプリケーションにデプロイする際に、このモデルを特定の入力データに適応させて変換するプロセスを簡素化します。TensorFlow Lite Model Maker による画像分類の Colab をご覧ください。

Android および iOS アプリで Model Maker でトレーニングされたモデルの使用方法については、ユースケースに応じて Image Labeling API または Object Detection and Tracking API のガイドをご覧ください。

TensorFlow Lite コンバータを使用して作成されたモデル

既存の TensorFlow 画像分類モデルがある場合は、TensorFlow Lite コンバータを使用して変換できます。作成したモデルが下記の互換性要件を満たしていることをご確認ください。

Android および iOS アプリで TensorFlow Lite モデルを使用する方法については、Image Labeling API または Object Detection and Tracking API に関するガイド(ユースケースによって異なります)をご覧ください。

TensorFlow Lite モデルの互換性

事前トレーニング済みの TensorFlow Lite 画像分類モデルを使用するには、次の要件を満たしている必要があります。

テンソル

  • モデルには、次の制約がある入力テンソルが 1 つのみ必要です。
    • データは RGB ピクセル形式です。
    • データは UINT8 または FLOAT32 型です。入力テンソルの型が FLOAT32 の場合は、Metadata をアタッチして NormalizationOptions を指定する必要があります。
    • テンソルには、BxHxWxC の 4 つの次元があります。ここで、
      • B はバッチサイズです。1 にする必要があります(大きなバッチの推論はサポートされません)。
      • W と H は入力の幅と高さです。
      • C は予想されるチャネルの数です。3 である必要があります。
  • モデルには、少なくとも 1 つの出力テンソルと N 個のクラス、および 2 つまたは 4 つのディメンションが必要です。
    • (1xN)
    • (1x1x1xN)

メタデータ

TensorFlow Lite モデルにメタデータを追加するで説明しているように、TensorFlow Lite ファイルにメタデータを追加できます。

FLOAT32 入力テンソルでモデルを使用するには、メタデータに RegularizationOptions を指定する必要があります。

また、このメタデータを出力テンソルの TensorMetadata にアタッチすることをおすすめします。

  • 各出力クラスの名前を AssociatedFile タイプとして TENSOR_AXIS_LABELS として指定するラベルマップ(そうでない場合は、数値出力クラス インデックスのみが返されます)
  • デフォルトのスコアしきい値。このしきい値を下回ると、信頼度が低すぎると判断されます。ProcessUnit には ScoreThresholdingOptions を指定します。