Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

AutoML VisionEdgeを使用してオブジェクト検出モデルをトレーニングする

オブジェクト検出モデルは画像ラベリングモデルに似ていますが、画像全体にラベルを割り当てるのではなく、画像の領域にラベルを割り当てます。オブジェクト検出モデルを使用して、画像内のオブジェクトを認識して特定したり、一連の画像全体でのオブジェクトの動きを追跡したりできます。

オブジェクト検出モデルをトレーニングするには、AutoML VisionEdgeに対応するオブジェクトラベルとオブジェクト境界を持つ一連の画像を提供します。 AutoML Vision Edgeは、このデータセットを使用して、クラウド内の新しいモデルをトレーニングします。これは、デバイス上のオブジェクト検出に使用できます。

あなたが始める前に

  • すでにFirebaseプロジェクトを持っていない場合は、1つ作成Firebaseコンソールを

  • で提示ガイドラインをよく理解してくださいAutoML -インクルーシブMLガイド

  • AutoML Vision Edgeを試してみたいだけで、独自のトレーニングデータがない場合は、次のいずれかのサンプルデータセットをダウンロードしてください。

1.トレーニングデータを収集します

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

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

  • 各画像は30MB以下である必要があります。 AutoML Vision Edgeは前処理中にほとんどの画像を縮小するため、通常、非常に高解像度の画像を提供しても精度のメリットはありません。

  • 各ラベルの例を少なくとも10個、できれば100個以上含めてください。

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

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

  • AutoML Vision Edgeによって生成されたモデルは、実世界のオブジェクトの写真用に最適化されています。 X線、手描き、スキャンしたドキュメント、領収書などではうまく機能しない可能性があります。

    また、モデルは通常、人間が割り当てることができないラベルを予測することはできません。したがって、人間が1〜2秒間画像を見てラベルを割り当てることができない場合、モデルもそれを行うようにトレーニングできない可能性があります。

トレーニング画像の準備ができたら、GoogleCloudにインポートする準備をします。 2つのオプションがあります。

オプション1:CSVインデックス付きのクラウドストレージ

あなたのトレーニング画像をアップロードしてGoogleクラウドストレージと各画像の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、プロジェクトの対応するGoogleクラウドプロジェクトの一環。

オプション2:ラベルのない画像

トレーニング画像にラベルを付け、アップロード後にGoogle CloudConsoleでオブジェクトの境界を描画します。これは、小さなデータセットにのみ推奨されます。次のステップを参照してください。

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

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

  1. 開きビジョンデータセットのGoogle Cloud Consoleのページを。プロンプトが表示されたら、プロジェクトを選択します。

  2. 新しいデータセットをクリックして、データセットの名前を提供し、あなたが訓練するモデルの種類を選択して、データセットの作成]クリックします。

  3. データセットのインポート]タブで、あなたのトレーニング画像、あなたのトレーニング画像のzipアーカイブまたはあなたがそれらをアップロードクラウドストレージの場所を含むCSVファイルをアップロードします。参照してくださいあなたのトレーニングデータを組み立てます

  4. インポートタスクが完了した後、トレーニングデータを確認するために[画像]タブを使用します。

  5. CSVをアップロードしなかった場合は、画像ごとに、認識したいオブジェクトの周囲に境界ボックスを描画し、各オブジェクトにラベルを付けます。

  6. 列車のタブで、[スタート]トレーニングをクリックしてください。

    1. モデルに名前を付け、エッジモデルのタイプを選択します。

    2. 生成されたモデルのパフォーマンスを管理する次のトレーニング設定を構成します。

      モデルの最適化...使用するモデル構成。低レイテンシまたは小さなパッケージサイズが重要な場合は、より高速でより小さなモデルをトレーニングでき、精度が最も重要な場合は、より低速でより大きなモデルをトレーニングできます。
      ノード時間の予算

      モデルのトレーニングに費やす最大時間(計算時間)。通常、トレーニング時間が長くなると、モデルがより正確になります。

      モデルが最適化されているとシステムが判断し、追加のトレーニングで精度が向上しない場合は、指定された時間よりも短い時間でトレーニングを完了することができることに注意してください。実際に使用された時間に対してのみ請求されます。

      典型的なトレーニング時間
      非常に小さなセット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ビジョンの初心者ガイドAutoML -インクルーシブMLガイドを詳細については。

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

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

モデルのパフォーマンスに満足してアプリで使用したい場合は、3つのオプションがあり、オンライン予測用にモデルをデプロイするか、Firebaseにモデルを公開するか、モデルをダウンロードしてバンドルするかのいずれかの組み合わせを選択できます。あなたのアプリで。

モデルをデプロイします

データセットのテスト&使用]タブでは、クラウドでモデルを実行し、オンライン予測のためのモデルを展開することができます。このオプションはで覆われているクラウドAutoMLドキュメント。このサイトのドキュメントは、残りの2つのオプションを扱っています。

モデルを公開する

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

モデルをFirebaseでホストすることによってのみ提供し、アプリにバンドルしないことを選択した場合は、アプリの初期ダウンロードサイズを減らすことができます。ただし、モデルがアプリにバンドルされていない場合、アプリがモデルを初めてダウンロードするまで、モデル関連の機能は利用できないことに注意してください。

モデルを公開するには、次の2つの方法のいずれかを使用できます。

  • Googleクラウドコンソールで、データセットのテスト&使用のページからTF Liteのモデルをダウンロードし、上のモデルをアップロードするカスタムモデルFirebaseコンソールのページ。これは通常、単一のモデルを公開する最も簡単な方法です。
  • Admin SDKを使用して、モデルをGoogleCloudプロジェクトからFirebaseに直接公開します。このメソッドを使用して、複数のモデルをバッチ公開したり、自動公開パイプラインの作成を支援したりできます。

管理SDKとモデル公開するモデル管理APIを

  1. SDKをインストールして初期化します

  2. モデルを公開します。

    モデルのリソース識別子を指定する必要があります。これは、次の例のような文字列です。

    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機能が機能するようにすることができます。

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

あなたのモデルをダウンロードするには、データセットのテスト&使用ページにTF Liteのをクリックしてください。

次のステップ

今、あなたは、公開またはモデルをダウンロードしたことを、自分の中でモデルを使用する方法を学ぶのiOSAndroidのアプリを。