オブジェクト検出モデルは画像ラベリングモデルに似ていますが、画像全体にラベルを割り当てるのではなく、画像の領域にラベルを割り当てます。オブジェクト検出モデルを使用して、画像内のオブジェクトを認識して特定したり、一連の画像全体でのオブジェクトの動きを追跡したりできます。
オブジェクト検出モデルをトレーニングするには、AutoML VisionEdgeに対応するオブジェクトラベルとオブジェクト境界を持つ一連の画像を提供します。 AutoML Vision Edgeは、このデータセットを使用して、クラウド内の新しいモデルをトレーニングします。これは、デバイス上のオブジェクト検出に使用できます。
あなたが始める前に
Firebaseプロジェクトをまだお持ちでない場合は、 Firebaseコンソールで作成してください。
インクルーシブMLガイド-AutoMLに示されているガイドラインをよく理解してください。
AutoML Vision Edgeを試してみたいだけで、独自のトレーニングデータがない場合は、次のいずれかのサンプルデータセットをダウンロードしてください。
- TensorFlowが推奨するデータセットの1つ。
- Kaggleでホストされているデータセット。
1.トレーニングデータを収集します
まず、ラベル付けされた画像のトレーニングデータセットをまとめる必要があります。次のガイドラインに留意してください。
画像は、JPEG、PNG、GIF、BMP、ICOのいずれかの形式である必要があります。
各画像は30MB以下である必要があります。 AutoML Vision Edgeは前処理中にほとんどの画像をダウンスケールするため、通常、非常に高解像度の画像を提供しても精度のメリットはありません。
各ラベルの例を少なくとも10個、できれば100個以上含めてください。
各ラベルに複数の角度、解像度、背景を含めます。
トレーニングデータは、予測が行われるデータに可能な限り近づける必要があります。たとえば、ユースケースにぼやけた低解像度の画像(セキュリティカメラなど)が含まれる場合、トレーニングデータはぼやけた低解像度の画像で構成する必要があります。
AutoML Vision Edgeによって生成されたモデルは、実世界のオブジェクトの写真用に最適化されています。 X線、手描き、スキャンしたドキュメント、領収書などではうまく機能しない可能性があります。
また、モデルは通常、人間が割り当てることができないラベルを予測することはできません。したがって、人間が1〜2秒間画像を見てラベルを割り当てることができない場合、モデルもそれを行うようにトレーニングできない可能性があります。
トレーニング画像の準備ができたら、GoogleCloudにインポートする準備をします。 2つのオプションがあります。
オプション1:CSVインデックスを使用したクラウドストレージ
トレーニング画像をGoogleCloud Storageにアップロードし、各画像のURLと、オプションで各画像の正しいオブジェクトラベルと境界領域をリストしたCSVファイルを準備します。このオプションは、大規模なデータセットを使用する場合に役立ちます。
たとえば、画像をCloud Storageにアップロードし、次のようなCSVファイルを準備します。
gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,, gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,, gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,
オブジェクトの境界ボックスは、画像内の相対座標として指定されます。トレーニングデータCSVのフォーマットを参照してください。
画像は、 us-central1
リージョンにあり、Firebaseプロジェクトの対応するGoogleCloudプロジェクトの一部であるバケットに保存する必要があります。
オプション2:ラベルのない画像
トレーニング画像にラベルを付け、アップロード後にGoogle CloudConsoleでオブジェクトの境界を描画します。これは、小さなデータセットにのみ推奨されます。次のステップを参照してください。
2.モデルをトレーニングします
次に、画像を使用してモデルをトレーニングします。
Google CloudConsoleでVisionDatasetsページを開きます。プロンプトが表示されたら、プロジェクトを選択します。
[新しいデータセット]をクリックし、データセットの名前を指定し、トレーニングするモデルのタイプを選択して、[データセットの作成]をクリックします。
データセットの[インポート]タブで、トレーニングイメージ、トレーニングイメージのzipアーカイブ、またはアップロード先のクラウドストレージの場所を含むCSVファイルをアップロードします。トレーニングデータのアセンブルを参照してください。
インポートタスクが完了したら、[画像]タブを使用してトレーニングデータを確認します。
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つの指標を使用して測定されます。
画像分類のコンテキストでは、精度は、選択されたしきい値が与えられた場合にモデルがラベル付けした画像の数に対する、正しくラベル付けされた画像の数の比率です。モデルの精度が高い場合、ラベルが誤って割り当てられる頻度は低くなります(誤検知が少なくなります)。
リコールは、正しくラベル付けされた画像の数と、モデルがラベル付けできるはずのコンテンツを含む画像の数の比率です。モデルの再現率が高い場合、ラベルの割り当てに失敗する頻度は低くなります(誤検出が少なくなります)。
精度を最適化するかリコールを最適化するかは、ユースケースによって異なります。詳細については、 AutoMLVision初心者向けガイドおよび包括的MLガイド-AutoMLを参照してください。
快適なメトリックを生成する信頼しきい値を見つけたら、それをメモします。信頼度のしきい値を使用して、アプリでモデルを構成します。 (このツールはいつでも使用して、適切なしきい値を取得できます。)
4.モデルを公開またはダウンロードします
モデルのパフォーマンスに満足してアプリで使用したい場合は、3つのオプションがあり、オンライン予測用にモデルをデプロイするか、モデルをFirebaseに公開するか、モデルをダウンロードしてバンドルするかの3つの組み合わせを選択できます。あなたのアプリで。
モデルをデプロイします
データセットの[テストと使用]タブで、モデルをクラウドで実行するオンライン予測用にモデルをデプロイできます。このオプションについては、 CloudAutoMLドキュメントで説明されています。このサイトのドキュメントは、残りの2つのオプションを扱っています。
モデルを公開する
モデルをFirebaseに公開することで、新しいアプリバージョンをリリースせずにモデルを更新できます。また、リモート構成とA / Bテストを使用して、さまざまなモデルをさまざまなユーザーセットに動的に提供できます。
モデルをFirebaseでホストすることによってのみ提供し、アプリにバンドルしないことを選択した場合は、アプリの初期ダウンロードサイズを減らすことができます。ただし、モデルがアプリにバンドルされていない場合、アプリがモデルを初めてダウンロードするまで、モデル関連の機能は利用できないことに注意してください。
モデルを公開するには、次の2つの方法のいずれかを使用できます。
- Google CloudConsoleのデータセットの[テストと使用]ページからTFLiteモデルをダウンロードしてから、Firebaseコンソールの[カスタムモデル]ページにモデルをアップロードします。これは通常、単一のモデルを公開する最も簡単な方法です。
- Admin SDKを使用して、モデルをGoogleCloudプロジェクトからFirebaseに直接公開します。このメソッドを使用して、複数のモデルをバッチ公開したり、自動公開パイプラインの作成を支援したりできます。
Admin SDKモデル管理APIを使用してモデルを公開するには:
モデルを公開します。
モデルのリソース識別子を指定する必要があります。これは、次の例のような文字列です。
projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
PROJECT_NUMBER
モデルを含むCloudStorageバケットのプロジェクト番号。これは、Firebaseプロジェクトまたは別のGoogleCloudプロジェクトである可能性があります。この値は、Firebaseコンソールの[設定]ページまたはGoogle CloudConsoleダッシュボードで確認できます。 MODEL_ID
AutoML CloudAPIから取得したモデルのID。 Python
# 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機能が引き続き機能するようにすることができます。
モデルを公開してアプリにバンドルする場合、アプリは利用可能な最新バージョンを使用します。
モデルをダウンロードするには、データセットの[テストと使用]ページで[ TFLite ]をクリックします。
次のステップ
モデルを公開またはダウンロードしたので、 iOS +およびAndroidアプリでモデルを使用する方法を学びます。