AutoML Vision Edge モデルを使用して画像にラベルを付ける

このクイックスタートでは、以下のプロセスを順を追って説明します。

  • Google Cloud Storage に一連の画像をコピーする。
  • 画像とそのラベルをリストした CSV を作成する。
  • AutoML Vision でデータセットを作成し、カスタム AutoML Vision Edge モデルをトレーニングして(画像分類またはオブジェクト検出)、予測を行う。
  • スマートフォン、ARM ベースのデバイス、Coral Edge TPU など、数種類のエッジデバイスに対して AutoML Vision Edge モデルをエクスポートしてデプロイする。

始める前に

プロジェクトを設定する

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。
  3. gcloud CLI を初期化するには:

    gcloud init
  4. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. AutoML and Cloud Storage API を有効にします。

    gcloud services enable storage-component.googleapis.comautoml.googleapis.comstorage-api.googleapis.com
  7. Google Cloud CLI をインストールします。
  8. gcloud CLI を初期化するには:

    gcloud init
  9. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

  10. Google Cloud プロジェクトで課金が有効になっていることを確認します

  11. AutoML and Cloud Storage API を有効にします。

    gcloud services enable storage-component.googleapis.comautoml.googleapis.comstorage-api.googleapis.com
  12. 環境変数 PROJECT_IDプロジェクト ID に設定します。
    export PROJECT_ID=PROJECT_ID
    AutoML API 呼び出しとリソース名には、プロジェクト ID が含まれています。環境変数 PROJECT_ID は、ID の指定に便利です。

Cloud Storage バケットを作成する

Google Cloud コンソール プロジェクトに接続されたブラウザベースの Linux コマンドラインである Cloud Shell を使用して Cloud Storage バケットを作成します。

  1. Cloud Shell を開きます

  2. Google Cloud Storage バケットを作成します。バケット名の形式は、project-id-vcm にする必要があります。次のコマンドによって、project-id-vcm という名前の us-central1 リージョンにストレージ バケットが作成されます。利用可能なリージョンの一覧については、バケット ロケーション ページをご覧ください。

    gsutil mb -p ${PROJECT_ID} -c regional -l us-central1 gs://${PROJECT_ID}-vcm/

  3. BUCKET 変数を設定します。

    export BUCKET=${PROJECT_ID}-vcm

バケットへのサンプル画像のコピー

次に、この Tensorflow のブログ投稿で使用されている花のデータセットをコピーします。画像は公開 Cloud Storage バケットに保存されるため、そこから直接自分のバケットにコピーできます。

  1. Cloud Shell セッションで、次のように入力します。

    gsutil -m cp -R gs://cloud-samples-data/ai-platform/flowers/ gs://${BUCKET}/img/
    

    ファイルのコピーには約 20 分かかります。

CSV ファイルの作成

サンプル データセットには、すべての画像の場所と各画像のラベルを含む CSV ファイルが含まれています。これを使用して独自の CSV ファイルを作成します。

  1. CSV ファイルを更新して、自分のバケット内のファイルを指すようにします。

    gsutil cat gs://${BUCKET}/img/flowers/all_data.csv | sed "s:cloud-ml-data/img/flower_photos/:${BUCKET}/img/flowers/:" > all_data.csv
    
  2. バケットに CSV ファイルをコピーします。

    gsutil cp all_data.csv gs://${BUCKET}/csv/
    

データセットの作成

データセットの作成とモデルのトレーニングを開始するには、AutoML Vision UI にアクセスします。

プロンプトが表示されたら、Cloud Storage バケットに使用したプロジェクトを必ず選択します。

  1. AutoML Vision ページから、[新しいデータセット] をクリックします。

    コンソールの [新しいデータセット] ボタン

  2. このデータセットの名前を指定します(省略可)。モデルの目的を選択して [データセットを作成] をクリックし、データセットの作成プロセスを続けます。

    [New dataset name] フィールド

  3. [インポートするファイルを選択します] 画面で、[Cloud Storage で CSV ファイルを選択] ラジオボタンをオンにします。CSV ファイルの Cloud Storage URI を指定します。このクイックスタートでは、CSV ファイルの場所は次のとおりです。

    • gs://${PROJECT_ID}-vcm/csv/all_data.csv

    PROJECT_ID は、特定のプロジェクト ID に置き換えます。

    インポート ウィンドウを選択する

  4. [続行] を選択して、画像のインポートを開始します。インポートには数分かかります。完了すると、次のページが表示され、データセットに対して識別されたすべての画像(ラベル付きの画像とラベルなし画像の両方)の詳細がそこに記載されます。

    インポートの完了後に表示される画像

モデルのトレーニング

  1. データセットが作成されて処理されたら、[トレーニング] タブを選択してモデルのトレーニングを開始します。

    [トレーニング] タブを選択

  2. 続行するには [トレーニングを開始] を選択してください。これにより、[新しいモデルのトレーニング] ウィンドウが開き、トレーニング オプションが表示されます。

  3. 新しいモデル トレーニング ウィンドウの [モデルを定義する] セクションで、モデル名を変更し(省略可)、Edge モデルのラジオボタンを選択します。[続行] を選択して次のセクションに進みます。

    トレーニング用のモデル セクションを定義する

  4. [モデル最適化のオプション] セクションで、[最良のトレードオフ] オプションを使用し、[続行] を選択します。

  5. [ノード時間予算の設定] セクションで、推奨されるノード予算(4 ノード時間)をそのまま使用します。

    Edge モデルのトレーニング

  6. [トレーニングを開始] を選択して、モデルのトレーニングを開始します。

    モデルのトレーニングが開始されます。これには約 1 時間かかります。トレーニングは、選択したノード時間より前に停止することがあります。トレーニングが完了した後、またはエラーが発生した場合は、メールが届きます。

モデルをデプロイする

モデルをエクスポートする前に、モデルをデプロイする必要があります。

  1. モデルをデプロイするには、[テストと使用] タブを選択します。モデル名の近くにある [モデルをデプロイ] オプションをクリックします。

  2. 表示されたウィンドウで、デプロイするノードを 1 つ指定し、[デプロイ] を選択してモデルのデプロイ プロセスを開始します。

    デプロイするノード時間を選択する

モデルのデプロイが完了すると通知が届きます。

モデルをエクスポートする

AutoML Vision Edge モデルを使用する最後のステップは、モデルをエクスポート(最適化とダウンロード)してデプロイ(使用)することです。

Edge デバイスで予測を行うために、モデルのエクスポートとデプロイを行う場合、いくつかの方法があります。

このクイックスタートでは、Tensorflow Lite(TF Lite)を例に説明します。TF Lite モデルは使いやすく、幅広いユースケースを対象にしています。

  1. [テストと使用] タブの [モデルを使用する] セクションで、[TF Lite] オプションを選択します。

    TF Lite モデルのエクスポート

  2. 表示された [TF Lite パッケージのエクスポート] ウィンドウで、TF Lite パッケージをエクスポートする Cloud Storage バケットのロケーションを指定し、[エクスポート] を選択します。通常、エクスポート処理には数分かかります。

    TF Lite モデルをエクスポートするサイド ウィンドウ

Google Cloud Storage のインストール先には、タイムスタンプとモデル形式で名前が付けられたフォルダがあり、その中に以下のファイルがあります。

  • tflite ファイル(model.tflite
  • 辞書ファイル(dict.txt
  • メタデータ ファイル(tflite_metadata.json

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Google Cloud プロジェクトとそのリソースをまとめて削除してください。

次のステップ

これらのファイルを使用すると、チュートリアルに沿って Android デバイスiOS デバイスRaspberry Pi 3 またはウェブにデプロイできるようになります。

その他のモデル使用オプション

  • CoreML(iOS / macOS)対応モデルとしてモデルをエクスポートできます。トレーニング後に、[テストと使用] タブで [CoreML] オプションを選択してモデルをエクスポートし、CoreML チュートリアルの手順を行います。
  • Coral Edge TPU で実行するモデルをエクスポートできます。トレーニング後に、[テストと使用] タブで [Coral] オプションを選択してモデルをエクスポートします。ただし、現在のオブジェクト検出モデルと互換性がないため、Edge TPU の画像分類モデルのみをエクスポートすることをおすすめします(Edge TPU のオブジェクト検出モデルをトレーニングするには、こちらの Google Colab チュートリアルをご覧ください)。モデルをエクスポートした後は、Edge TPU での推論の実行に関する Coral の公式ドキュメントの手順を行います。
  • モデルは、TensorFlow SavedModel としてエクスポートし、Docker コンテナで使用できます。トレーニング後に、[テストと使用] タブで [コンテナ] オプションを選択してモデルをエクスポートします。コンテナへのエクスポート方法については、Edge コンテナのチュートリアルをご覧ください。
  • ブラウザまたは Node.js で使用するモデルは Tensorflow.js モデルとしてエクスポートできます。トレーニング後に [テストと使用] タブで [TensorFlow.js] オプションを選択してモデルをエクスポートし、Edge TensorFlow.js チュートリアルの手順を行います。

クリーンアップ

不要になったカスタムモデルやデータセットは削除できます。

Google Cloud Platform の不必要な課金を避けるため、GCP Console を使用して、不要になったプロジェクトを削除します。

モデルのデプロイ解除

モデルがデプロイされている間は料金がかかります。

  1. タイトルバーのすぐ下にある [テストと使用] タブを選択します。
  2. モデル名の下にあるバナーから [デプロイメントを削除] を選択します。デプロイ解除オプションのウィンドウが開きます。

    デプロイ解除のポップアップ メニュー

  3. [デプロイメントを削除] を選択して、モデルのデプロイを解除します。

    モデルのデプロイ

  4. モデルのデプロイ解除が完了すると、メールが届きます。

プロジェクトを削除する(任意)

Google Cloud Platform で不必要な課金を避けるため、Google Cloud コンソールを使用して、不要になったプロジェクトを削除します。