コンソールへ移動

AutoML Vision Edge で画像のラベル付けモデルをトレーニングする

画像ラベル付けモデルをトレーニングするには、AutoML Vision Edge に一連の画像とそれに対応するラベルを提供します。AutoML Vision Edge はこのデータセットを使用して、クラウド内の新しいモデルをトレーニングします。これは、アプリ内でデバイス上の画像のラベル付けに使用できます。

始める前に

1. トレーニング データを集める

まず、ラベル付き画像のトレーニング データセットをまとめる必要があります。次のガイドラインに注意してください。

  • 画像は、JPEG、PNG、GIF、BMP、ICO のいずれかの形式にする必要があります。

  • 各画像は 30 MB 以下にする必要があります。AutoML Vision Edge は前処理中に画像をダウンスケールします。高解像度の画像を提供しても、より正確な結果が得られるわけではありません。

  • 少なくとも各ラベルの例を 10 個以上含めます(100 個以上を推奨)。

    Firebase プロジェクトが Spark プランの場合、プロジェクトで使用できるデータセットは 1 つだけです。また、画像の数は最大 1,000 個までです。

  • 各ラベルに複数の角度、解像度、背景を含めます。

  • トレーニング用のデータは、予測を行うデータにできる限り近いものである必要があります。たとえば、ユースケースに低解像度のぼやけた画像(セキュリティ カメラの画像など)が含まれている場合、トレーニング用のデータも低解像度でぼやけた画像から構成する必要があります。

  • AutoML Vision Edge モデルは、現実世界にある物体の写真に対して最も効果的に動作します。X 線、手描き、スキャンしたドキュメント、領収書などでは、適切な動作が見込めません。

    また、モデルは、人間が割り当てることができないラベルは予測できません。そのため、人間が画像を 1~2 秒間見てラベルを割り当てることができなければ、モデルもそのようにトレーニングすることはできません。

トレーニング画像を用意したら、画像を Firebase にインポートする準備を行います。次の 3 つのオプションがあります。

オプション 1: ディレクトリ構造を zip にアーカイブする

トレーニング画像をディレクトリに整理します。各ディレクトリにはラベルの名前を付け、そのラベルの例となる画像を格納します。このディレクトリ構造を zip アーカイブに圧縮します。次に例を示します。

my_training_data.zip
  |____accordion
  | |____001.jpg
  | |____002.jpg
  | |____003.jpg
  |____bass_guitar
  | |____hofner.gif
  | |____p-bass.png
  |____clavier
    |____well-tempered.jpg
    |____well-tempered (1).jpg
    |____well-tempered (2).jpg

オプション 2: Cloud Storage にアップロードして CSV インデックスを作成する

Blaze プランのみ: トレーニング画像を Google Cloud Storage にアップロードし、各画像の URL を含む CSV ファイルを準備します。このファイルに、各画像の正しいラベルを記述することもできます。この方法は、非常に大きなデータセットを扱う場合に役立ちます。

たとえば、画像を Cloud Storage にアップロードし、次のような CSV ファイルを準備します。

gs://your-training-data-bucket/001.jpg,accordion
gs://your-training-data-bucket/002.jpg,accordion
gs://your-training-data-bucket/003.jpg,accordion
gs://your-training-data-bucket/hofner.gif,bass_guitar
gs://your-training-data-bucket/p-bass.png,bass_guitar
gs://your-training-data-bucket/well-tempered.jpg,clavier
gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier
gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier

画像は、Firebase プロジェクトに対応する Cloud プロジェクトのバケットに保存する必要があります。

CSV ファイルの準備方法については、Cloud AutoML Vision ドキュメントでトレーニング データの準備をご覧ください。

オプション 3: ラベルの付いていない画像にラベルを付ける

画像を個別にアップロードするか、構造化されていない zip ファイルをアップロードした後、Firebase コンソールでトレーニング画像にラベルを付けます。次の手順をご覧ください。

2. モデルをトレーニングする

次に、画像を使ってモデルをトレーニングします。

  1. Firebase コンソールの ML Kit セクションを開きます。指示に従ってプロジェクトを選択します。

  2. [AutoML] タブをクリックし、[最初の AutoML データセットを作成] または [別のデータセットを追加] をクリックします。名前を指定するか、新しいデータセットの名前を入力したら、コンソールで次の操作を行います。

    1. トレーニング画像をアップロードします。あるいは、画像が保存されている Cloud Storage のロケーションを含む CSV ファイルをアップロードします。トレーニング データを集めるをご覧ください。
    2. アップロードが完了したら、トレーニング データを確認し、ラベルの付いていない画像にラベルを付けます。
    3. トレーニング データを使用してモデルのトレーニングを開始します。生成されたモデルのパフォーマンスを左右する以下の設定を構成できます。
      レイテンシとパッケージ サイズ 使用するモデル構成。低レイテンシまたは小型パッケージ サイズが重要な場合は高速で小型のモデルを、精度が最も重要な場合は低速で大型のモデルをトレーニングできます。
      トレーニング時間

      モデルのトレーニングに費やす最大時間(計算時間)。一般に、トレーニング時間が長いほど、モデルはより正確になります。

      モデルが最適化されているとシステムが判断し、追加のトレーニングによって精度が改善しない場合、指定された時間より短い時間でトレーニングを完了できます。実際にかかった時間に対してのみ課金されます。

      一般的なトレーニング時間
      非常に小さいセット1 時間
      500 個の画像2 時間
      1,000 個の画像3 時間
      5,000 個の画像6 時間
      10,000 個の画像7 時間
      50,000 個の画像11 時間
      10 万個の画像13 時間
      100 万個の画像18 時間

3. モデルを評価する

トレーニングが完了したら、データセットの詳細ページでモデルをクリックして、モデルのパフォーマンス指標を確認できます。

このページで行う重要な作業の 1 つは、モデルに最適なスコアしきい値の判定です。スコアしきい値は、モデルが画像にラベルを割り当てるため必要な信頼度を表します。スコアしきい値のスライダーを動かすと、しきい値がモデルのパフォーマンスにどのように影響するかを確認できます。モデルのパフォーマンスは精度と再現率という 2 つの指標で評価されます。

画像分類では、精度とは、特定のしきい値でモデルがラベル付けした画像の中で、正しくラベル付けされた画像の割合を表します。モデルの精度が高いと、誤ったラベルが割り当てられる頻度が少なくなります(偽陽性率が低くなります)。

再現性とは、モデルが正しくラベル付けできるはずのコンテンツを含む画像の中で、実際に正しくラベル付けされた画像の割合を表します。モデルの再現率が高い場合、ラベルの割り当てに失敗する頻度が低くなります(偽陰性率が低くなります)。

精度を最適化するのか、再現性を最適化するのかはケースによって異なります。詳しくは、AutoML Vision 初心者向けガイドインクルーシブ ML ガイド - AutoML をご覧ください。

適切な指標を生成するスコアしきい値を見つけたら、それをメモしておきます。このスコアしきい値を使用して、アプリのモデルを構成します(このツールは、適切なしきい値を得るためにいつでも使用できます)。

4. モデルを公開またはダウンロードする

モデルのパフォーマンスに問題がなく、アプリで使用する場合は、モデルを公開またはダウンロードします(あるいはその両方を行います)。

Firebase にモデルを公開することで、新しいアプリ バージョンをリリースすることなくモデルを更新できます。また、Remote Config と A/B テストを使用して、さまざまなモデルをさまざまなユーザーセットに動的に提供できます。

モデルを提供する方法として Firebase でホストする方法だけを使用し、モデルをアプリにバンドルしない場合は、アプリの初期ダウンロード サイズを小さくできます。ただし、モデルがアプリにバンドルされていない場合、モデルに関連する機能は、アプリがモデルを初めてダウンロードするまで使用できません。

モデルをアプリにバンドルすると、Firebase でホストされているモデルを取得できないときにもアプリの ML 機能を引き続き使用できます。

モデルを公開してアプリにバンドルすると、アプリは利用可能な最新バージョンを使用します。

モデルをダウンロードまたは公開するには、モデルの [評価] ページで [モデルを使用] をクリックします。

  • モデルをダウンロードすると、モデルファイル、ラベルファイル、マニフェスト ファイルを含む zip アーカイブが得られます。ML Kit では、ローカル ストレージからモデルを読み込むために 3 つのファイルすべてを必要とします。

  • モデルを Firebase に公開する場合は、モデルの名前を指定します。SDK を使用してモデルをロードするときには、この名前を使用してモデルを参照します。

次のステップ

AutoML でトレーニングされたモデルを iOS アプリまたは Android アプリで使用する方法を学習します。

付録: ファイルの保存場所

Blaze プランの場合、ML Kit は AutoML Vision Edge データに新しい Storage バケットを作成します。

gs://AUTOGENERATED_BUCKET/DATASET_NAME/

Firebase コンソールでデータセットを参照すると、このバケットに保存された画像が表示されます。このため、無料の使用量割り当てを超えると、関連するネットワーク使用料金が発生する可能性があります。

Spark または Flame プランの場合、AutoML Vision Edge データはプロジェクトの Cloud Storage ではなく、Firebase の内部に保存されます。