このクイックスタートでは、以下のプロセスを順を追って説明します。
- Google Cloud Storage に一連の画像をコピーする。
- 画像とそのラベルをリストした CSV を作成する。
- AutoML Vision でデータセットを作成し、カスタム AutoML Vision Edge モデルをトレーニングして予測を行う。
- AutoML Vision Edge モデルをエクスポートしてデプロイする。
始める前に
プロジェクトを設定する
- Google アカウントにログインします。
Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する。
- AutoML and Cloud Storage API を有効にします。
gcloud
コマンドライン ツールをインストールします。- 手順に沿ってサービス アカウントを作成し、キーファイルをダウンロードします。
- 環境変数
GOOGLE_APPLICATION_CREDENTIALS
を、サービス アカウントの作成時にダウンロードしたサービス アカウント キーファイルのパスに設定します。export GOOGLE_APPLICATION_CREDENTIALS=key-file
- 環境変数
PROJECT_ID
をプロジェクト ID に設定します。export PROJECT_ID=your-project-id
AutoML API 呼び出しとリソース名には、プロジェクト ID が含まれています。環境変数PROJECT_ID
は、ID の指定に便利です。 - プロジェクトのオーナーである場合は、サービス アカウントを AutoML 編集者の IAM ロールに追加し、service-account-name を新しいサービス アカウントの名前に置き換えます。例:
service-account1@myproject.iam.gserviceaccount.com
。gcloud auth login gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:service-account-name" \ --role="roles/automl.editor"
- それ以外の場合(プロジェクト オーナーでない場合)は、プロジェクト オーナーにユーザー ID とサービス アカウントの両方を AutoML 編集者の IAM ロールに追加するよう依頼します。
Cloud Storage バケットの作成
Cloud Console プロジェクトに接続されたブラウザベースの Linux コマンドラインである Cloud Shell を使用して Cloud Storage バケットを作成します。
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/
BUCKET 変数を設定します。
export BUCKET=${PROJECT_ID}-vcm
バケットへのサンプル画像のコピー
次に、この Tensorflow のブログ投稿で使用されている花のデータセットをコピーします。画像は公開 Cloud Storage バケットに保存されるため、そこから直接自分のバケットにコピーできます。
Cloud Shell セッションで、次のように入力します。
gsutil -m cp -R gs://cloud-ml-data/img/flower_photos/ gs://${BUCKET}/img/
ファイルのコピーには約 20 分かかります。
CSV ファイルの作成
サンプル データセットには、すべての画像の場所と各画像のラベルを含む CSV ファイルが含まれています。これを使用して独自の CSV ファイルを作成します。
CSV ファイルを更新して、自分のバケット内のファイルを指すようにします。
gsutil cat gs://${BUCKET}/img/flower_photos/all_data.csv | sed "s:cloud-ml-data:${BUCKET}:" > all_data.csv
バケットに CSV ファイルをコピーします。
gsutil cp all_data.csv gs://${BUCKET}/csv/
データセットの作成
データセットの作成とモデルのトレーニングを開始するには、AutoML Vision UI にアクセスします。
プロンプトが表示されたら、Cloud Storage バケットに使用したプロジェクトを必ず選択します。
AutoML Vision ページから、[新しいデータセット] をクリックします。
このデータセットの名前を指定します(省略可)。[データセットを作成] を選択して、データセットの作成プロセスを続行します。
[インポートするファイルを選択します] 画面で、[
Cloud Storage で CSV ファイルを選択] ラジオボタンをオンにします。CSV ファイルの Cloud Storage URI を指定します。このクイックスタートでは、CSV ファイルの場所は次のとおりです。gs://${PROJECT_ID}-vcm/csv/all_data.csv
PROJECT_ID
は、特定のプロジェクト ID に置き換えます。[続行] を選択して、画像のインポートを開始します。インポートには数分かかります。完了すると、次のページが表示され、データセットに対して識別されたすべての画像(ラベル付きの画像とラベルなし画像の両方)の詳細がそこに記載されます。
モデルのトレーニング
データセットが作成されて処理されたら、[トレーニング] タブを選択してモデルのトレーニングを開始します。
続行するには [トレーニングを開始] を選択してください。これにより、[新しいモデルのトレーニング] ウィンドウが開き、トレーニング オプションが表示されます。
新しいモデル トレーニング ウィンドウの [モデルを定義する] セクションで、モデル名を変更し(省略可)、
Edge モデルのラジオボタンを選択します。[続行] を選択して次のセクションに進みます。[モデル最適化のオプション] セクションで、[
最良のトレードオフ] オプションを使用し、[続行] を選択します。[ノード時間予算の設定] セクションで、推奨されるノード予算(4 ノード時間)をそのまま使用します。
モデルのトレーニングを開始するには、[トレーニングを開始] を選択します。
モデルのトレーニングが開始されます。これには約 1 時間かかります。トレーニングは、選択したノード時間より前に停止することがあります。トレーニングが完了した後、またはエラーが発生した場合は、メールが届きます。
モデルをデプロイする
モデルをエクスポートする前に、モデルをデプロイする必要があります。
モデルをデプロイするには、[テストと使用] タブを選択します。モデル名の近くにある [モデルをデプロイ] オプションをクリックします。
表示されたウィンドウで、デプロイするノードを 1 つ指定し、[デプロイ] を選択してモデルのデプロイ プロセスを開始します。
モデルのデプロイが完了すると通知が届きます。
モデルをエクスポートする
AutoML Vision Edge モデルを使用する最後のステップは、モデルをエクスポート(最適化とダウンロード)してデプロイ(使用)することです。
Edge デバイスで予測を行うために、モデルのエクスポートとデプロイを行う場合、いくつかの方法があります。
このクイックスタートでは、Tensorflow Lite(TF Lite)を例に説明します。TF Lite モデルは使いやすく、幅広いユースケースを対象にしています。
[テストと使用] タブの [モデルを使用する] セクションで、[TF Lite] オプションを選択します。
[TF Lite パッケージのエクスポート] ウィンドウで、TF Lite パッケージをエクスポートする Cloud Storage バケットの場所を指定し、[エクスポート] を選択します。通常、エクスポート処理には数分かかります。
Google Cloud Storage のインストール先には、タイムスタンプとモデル形式で名前が付けられたフォルダがあり、その中に以下のファイルがあります。
- tflite ファイル(
model.tflite
) - 辞書ファイル(
dict.txt
) - メタデータ ファイル(
tflite_metadata.json
)
次のステップ
これらのファイルを使用すると、チュートリアルに沿って Android デバイス、iOS デバイス、Raspberry Pi 3 またはウェブにデプロイできるようになります。
その他のモデル使用オプション
- CoreML(iOS / macOS)対応モデルとしてモデルをエクスポートできます。トレーニング後に、[テストと使用] タブで [CoreML] オプションモデルを選択してモデルをエクスポートし、CoreML チュートリアルの手順に従います。
- モデルは、Edge TPU で実行するためにエクスポートできます。エクスポートは、トレーニング後に [テストと使用] タブの [Coral] オプションを選択することで行えます。モデルをエクスポートした後は、Edge TPU での推論の実行に関する Coral の公式ドキュメントの手順に従います。
- モデルは、TensorFlow SavedModel としてエクスポートし、Docker コンテナで使用できます。エクスポートは、トレーニング後に、[テストと使用] タブで [コンテナ] オプションを選択することにより行い、コンテナへのエクスポート方法に関する Edge コンテナのチュートリアルに従います。
- モデルは、ブラウザまたは Node.js で使用するために Tensorflow.js モデルとしてエクスポートできます。エクスポートは、トレーニング後に [テストと使用] タブで [TensorFlow.js] オプションを選択することにより行い、Edge TensorFlow.js チュートリアルに従います。
クリーンアップ
不要になったカスタムモデルやデータセットは削除できます。
不要な Google Cloud Platform 料金が発生しないようにするには、GCP Console を使用して、不要なプロジェクトを削除します。
モデルのデプロイ解除
モデルがデプロイされている間は料金がかかります。
- タイトルバーのすぐ下にある [テストと使用] タブを選択します。
- モデル名の下にあるバナーから [デプロイメントを削除] を選択します。デプロイ解除オプションのウィンドウが開きます。
- [デプロイメントを削除] を選択して、モデルのデプロイを解除します。
- モデルのデプロイ解除が完了すると、メールが届きます。
プロジェクトを削除する(任意)
不要な Google Cloud Platform 料金が発生しないようにするには、Cloud Console を使用して、不要なプロジェクトを削除します。