画像のラベル付けモデルをトレーニングするには、一連の画像と対応するラベルを AutoML Vision Edge に提供します。 AutoML Vision Edge はこのデータセットを使用してクラウドで新しいモデルをトレーニングします。このモデルは、アプリでデバイス上の画像のラベル付けに使用できます。 (この機能に関する一般的な情報については、概要を参照してください。)
AutoML Vision Edgeは Google Cloud サービスです。サービスの使用には、 Google Cloud Platform ライセンス契約とサービス固有の条件が適用され、それに応じて請求されます。請求情報については、AutoML の料金ページをご覧ください。
あなたが始める前に
Firebase または Google Cloud プロジェクトをまだ持っていない場合は、 Firebase コンソールで作成します。
Inclusive ML guide - AutoMLに示されているガイドラインをよく理解してください。
AutoML Vision Edge を試してみたいだけで、独自のトレーニング データがない場合は、次のいずれかのサンプル データセットをダウンロードしてください。
- TensorFlow の公式の花画像サンプル データセット
- このアメリカ手話 (ASL) のアルファベット データセット
Kaggleでホストされているその他のデータセットを見つけることができます。
1. トレーニング データを組み立てる
まず、ラベル付けされた画像のトレーニング データセットをまとめる必要があります。次のガイドラインに留意してください。
画像は、JPEG、PNG、GIF、BMP、ICO のいずれかの形式である必要があります。
各画像は 30MB 以下である必要があります。 AutoML Vision Edge は前処理中にほとんどの画像を縮小するため、通常、非常に高解像度の画像を提供しても精度の利点はありません。
各ラベルの例を少なくとも 10 個、できれば 100 個以上含めます。
各ラベルに複数の角度、解像度、および背景を含めます。
トレーニング データは、予測が行われるデータにできるだけ近いものにする必要があります。たとえば、ユース ケースにぼやけた低解像度の画像 (セキュリティ カメラなど) が含まれる場合、トレーニング データはぼやけた低解像度の画像で構成する必要があります。
AutoML Vision Edge によって生成されたモデルは、現実世界のオブジェクトの写真用に最適化されています。 X 線、手書きの図面、スキャンした文書、領収書などにはうまく機能しない場合があります。
また、モデルは通常、人間が割り当てることができないラベルを予測できません。したがって、人間が画像を 1 ~ 2 秒間見てラベルを割り当てることができない場合、モデルもそれを行うようにトレーニングすることはできません。
トレーニング イメージの準備ができたら、Firebase にインポートする準備をします。次の 3 つのオプションがあります。
オプション 1: 構造化された zip アーカイブ
トレーニング画像をディレクトリに整理します。ディレクトリにはそれぞれラベルにちなんで名前が付けられ、そのラベルの例である画像が含まれています。次に、ディレクトリ構造を zip アーカイブに圧縮します。
この zip アーカイブのディレクトリ名は最大 32 文字の ASCII 文字で、英数字とアンダースコア文字 ( _
) のみを使用できます。
例えば:
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: CSV インデックスを使用した Cloud Storage
トレーニング画像を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 プロジェクトの対応する Google Cloud プロジェクトの一部であるバケットに保存する必要があります。
CSV ファイルの準備について詳しくは、Cloud AutoML Vision ドキュメントのトレーニング データの準備をご覧ください。
オプション 3: ラベルのない画像
トレーニング イメージを個別に、または非構造化 zip ファイルでアップロードした後、Firebase コンソールでトレーニング イメージにラベルを付けます。次のステップを参照してください。
2. モデルをトレーニングする
次に、画像を使用してモデルをトレーニングします。
Google Cloud Console でVision Datasetsページを開きます。プロンプトが表示されたら、プロジェクトを選択します。
[新しいデータセット] をクリックし、データセットの名前を指定して、トレーニングするモデルの種類を選択し、[データセットの作成] をクリックします。
データセットの [インポート] タブで、トレーニング画像の zip アーカイブ、またはアップロードした Cloud Storage の場所を含む CSV ファイルをアップロードします。トレーニング データを組み立てる を参照してください。
インポート タスクが完了したら、[画像] タブを使用してトレーニング データを検証し、ラベルのない画像にラベルを付けます。
[トレーニング] タブで、[トレーニングの開始] をクリックします。
モデルに名前を付けて、 Edgeモデル タイプを選択します。
生成されたモデルのパフォーマンスを管理する次のトレーニング設定を構成します。
モデルを最適化... 使用するモデル構成。低レイテンシまたは小さなパッケージ サイズが重要な場合は、より高速で小さいモデルをトレーニングできます。精度が最も重要な場合は、より遅く、より大きなモデルをトレーニングできます。 ノード時間の予算 モデルのトレーニングに費やす最大時間 (コンピューティング時間)。通常、トレーニング時間が長いほど、より正確なモデルが得られます。
モデルが最適化され、追加のトレーニングによって精度が向上しないとシステムが判断した場合、トレーニングは指定された時間よりも短い時間で完了する可能性があることに注意してください。実際に使用した時間に対してのみ請求されます。
通常のトレーニング時間 非常に小さなセット 1時間 500枚の画像 2時間 1,000枚の画像 3時間 5,000枚の画像 6時間 10,000枚の画像 7時間 50,000枚の画像 11時間 100,000枚の画像 13時間 1,000,000枚の画像 18時間
3. モデルを評価する
トレーニングが完了したら、[評価] タブをクリックして、モデルのパフォーマンス メトリックを表示できます。
このページの重要な用途の 1 つは、モデルに最適な信頼度のしきい値を決定することです。信頼度のしきい値は、モデルが画像にラベルを割り当てるために必要な最小の信頼度です。信頼度のしきい値スライダーを動かすと、さまざまなしきい値がモデルのパフォーマンスにどのように影響するかを確認できます。モデルのパフォーマンスは、精度と再現率の 2 つの指標を使用して測定されます。
画像分類のコンテキストでは、精度とは、選択したしきい値でモデルがラベル付けした画像の数に対する、正しくラベル付けされた画像の数の比率です。モデルの精度が高い場合、誤ってラベルを割り当てる頻度が低くなります (誤検知が少なくなります)。
再現率は、モデルがラベル付けできたはずのコンテンツを含む画像の数に対する、正しくラベル付けされた画像の数の比率です。モデルの再現率が高い場合、ラベルの割り当てに失敗する頻度が低くなります (偽陰性が少なくなります)。
精度と再現率のどちらを最適化するかは、ユース ケースによって異なります。詳細については、 AutoML Vision 初心者向けガイドと包括的 ML ガイド - AutoMLを参照してください。
満足できる指標を生成する信頼度のしきい値を見つけたら、それを書き留めます。信頼度のしきい値を使用して、アプリでモデルを構成します。 (このツールをいつでも使用して、適切なしきい値を取得できます。)
4. モデルを公開またはダウンロードする
モデルのパフォーマンスに満足し、それをアプリで使用したい場合は、次の 3 つのオプションから任意の組み合わせを選択できます: オンライン予測用にモデルをデプロイする、モデルを Firebase に公開する、またはモデルをダウンロードしてバンドルするあなたのアプリで。
モデルをデプロイする
データセットの [テストと使用] タブで、クラウドでモデルを実行するオンライン予測用にモデルをデプロイできます。このオプションについては、 Cloud AutoML ドキュメントで説明されています。このサイトのドキュメントでは、残りの 2 つのオプションを扱っています。
モデルを公開する
モデルを Firebase に公開することで、新しいアプリ バージョンをリリースせずにモデルを更新できます。また、Remote Config と A/B Testing を使用して、さまざまなモデルをさまざまなユーザー セットに動的に提供できます。
モデルを Firebase でホストすることによってのみ提供し、モデルをアプリにバンドルしないことを選択した場合は、アプリの初期ダウンロード サイズを減らすことができます。ただし、モデルがアプリにバンドルされていない場合、アプリがモデルを初めてダウンロードするまで、モデル関連の機能は使用できないことに注意してください。
モデルを公開するには、次の 2 つの方法のいずれかを使用できます。
- Google Cloud Console のデータセットの [テストと使用] ページから TF Lite モデルをダウンロードし、Firebase コンソールの [カスタム モデル] ページにモデルをアップロードします。これは通常、単一のモデルを公開する最も簡単な方法です。
- Admin SDK を使用して、モデルを Google Cloud プロジェクトから Firebase に直接公開します。この方法を使用して、複数のモデルをバッチで公開したり、自動化された公開パイプラインを作成したりできます。
Admin SDKモデル管理 APIを使用してモデルを公開するには:
モデルを公開します。
モデルのリソース識別子を指定する必要があります。これは、次の例のような文字列です。
projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
PROJECT_NUMBER
モデルを含む Cloud Storage バケットのプロジェクト番号。これは、Firebase プロジェクトまたは別の Google Cloud プロジェクトである可能性があります。この値は、Firebase コンソールまたは Google Cloud Console ダッシュボードの [設定] ページで確認できます。 MODEL_ID
AutoML Cloud API から取得したモデルの ID。 パイソン
# First, import and initialize the SDK. # Get a reference to the AutoML model source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format( # See above for information on these values. project_number, model_id )) # Create the model object tflite_format = ml.TFLiteFormat(model_source=source) model = ml.Model( display_name="example_model", # This is the name you will use from your app to load the model. tags=["examples"], # Optional tags for easier management. model_format=tflite_format) # Add the model to your Firebase project and publish it new_model = ml.create_model(model) new_model.wait_for_unlocked() ml.publish_model(new_model.model_id)
Node.js
// First, import and initialize the SDK. (async () => { // Get a reference to the AutoML model. See above for information on these // values. const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`; // Create the model object and add the model to your Firebase project. const model = await ml.createModel({ displayName: 'example_model', // This is the name you use from your app to load the model. tags: ['examples'], // Optional tags for easier management. tfliteModel: { automlModel: automlModel }, }); // Wait for the model to be ready. await model.waitForUnlocked(); // Publish the model. await ml.publishModel(model.modelId); process.exit(); })().catch(console.error);
モデルをダウンロードしてアプリにバンドルする
モデルをアプリにバンドルすることで、Firebase でホストされたモデルが利用できない場合でも、アプリの ML 機能が確実に機能するようにすることができます。
モデルの公開とアプリへのバンドルの両方を行った場合、アプリは利用可能な最新バージョンを使用します。
モデルをダウンロードするには、データセットの [テストと使用] ページで [ TF Lite ] をクリックします。
次のステップ
モデルを公開またはダウンロードしたので、 iOS+およびAndroidアプリでモデルを使用する方法を学びます。