概要
Vertex AI AutoML を使用すると、ML の専門知識が限られている開発者でも、高品質な画像認識モデルをトレーニングできます。AutoML UI に画像をアップロードすると、Google Cloud ですぐに利用できるモデルをトレーニングして、使いやすい REST API を介して予測を生成することが可能です。
このラボでは、Cloud Storage に画像をアップロードして、さまざまな種類の雲(積雲、積乱雲など)を見分けられるようにカスタムモデルをトレーニングします。
ラボの内容
このラボでは、次のことを行います。
- ラベル付きデータセットを Cloud Storage にアップロードし、CSV ラベルファイルを使用して AutoML に接続する。
- AutoML でモデルをトレーニングする。
- トレーニング済みモデルで予測を生成する。
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
必要なもの
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間
注: 個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。
注: Pixelbook を使用している場合は、このラボをシークレット ウィンドウで実施してください。
Google Cloud コンソールにログインする
- このラボ セッションで使用しているブラウザタブまたはウィンドウで、[接続の詳細] パネルからユーザー名をコピーし、[Google Console を開く] ボタンをクリックします。
注: アカウントの選択を求められたら、[別のアカウントを使用] をクリックします。
-
ユーザー名を貼り付け、プロンプトが表示されたらパスワードを入力します。
- [次へ] をクリックします。
- 利用規約に同意します。
これは、このラボの間だけ有効な一時的なアカウントです。以下の点に注意してください。
- 復元オプションを追加しないでください。
- 無料トライアルに登録しないでください。
- コンソールが開いたら、左上のナビゲーション メニュー(
)をクリックしてサービスのリストを確認します。

Cloud Shell をアクティブにする
Cloud Shell は、開発ツールが組み込まれた仮想マシンです。5 GB の永続ホーム ディレクトリを提供し、Google Cloud 上で実行されます。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。gcloud は Google Cloud のコマンドライン ツールで、Cloud Shell にプリインストールされており、Tab キーによる入力補完がサポートされています。
-
Google Cloud Console のナビゲーション パネルで、「Cloud Shell をアクティブにする」アイコン(
)をクリックします。
-
[次へ] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続の際に認証も行われ、プロジェクトは現在のプロジェクト ID に設定されます。次に例を示します。

サンプル コマンド
gcloud auth list
(出力)
Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
(出力例)
Credentialed accounts:
- google1623327_student@qwiklabs.net
gcloud config list project
(出力)
[core]
project = <プロジェクト ID>
(出力例)
[core]
project = qwiklabs-gcp-44776a13dea667a6
タスク 1. AutoML を準備する
ストレージ バケットを作成する
- 次のコマンドを実行してストレージ バケットを作成します。
gcloud storage buckets create gs://$GOOGLE_CLOUD_PROJECT-vcm \
-c standard \
-l us-central1
- Google Cloud コンソールでナビゲーション メニューを開き、[Cloud Storage] をクリックして、作成したバケットを確認します。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
Cloud Storage バケットを作成する
タスク 2. トレーニング画像を Cloud Storage にアップロードする
雲の画像を分類するようにモデルをトレーニングするには、さまざまな種類の雲に関連付けられた画像の特徴をモデルが理解できるように、ラベル付けしたトレーニング データを用意する必要があります。この例のモデルは、3 種類の雲(巻雲、積雲、積乱雲)を分類できるように学習します。
AutoML を使用するには、トレーニング画像を Cloud Storage に保存する必要があります。
- 雲の画像を追加する前に、使用するバケットの名前の環境変数を作成します。
Cloud Shell で次のコマンドを実行します。
export BUCKET=$GOOGLE_CLOUD_PROJECT-vcm
トレーニング画像は Cloud Storage バケットで一般公開されています。
- 次に、Cloud Storage の gcloud storage コマンドライン ユーティリティを使用して、バケットにトレーニング画像をコピーします。
gcloud storage cp -r gs://spls/gsp223/images/* gs://${BUCKET}
- 画像のコピーが完了したら、Storage ブラウザの上部にある [更新] ボタンをクリックした後、バケット名をクリックします。分類する 3 種類の雲ごとに 3 つの写真フォルダがあります。
各フォルダ内の個々の画像ファイルをクリックすると、雲の種類ごとにモデルをトレーニングするための写真を表示できます。
タスク 3. データセットを作成する
トレーニング データは Cloud Storage に格納されました。次は AutoML からそのデータにアクセスする方法が必要となります。そこで、トレーニング画像の URL と、その画像に対応するラベルが各行に含まれる CSV ファイルを作成します。
この CSV ファイルはすでに用意してありますので、先ほどのバケット名を使用して更新してください。
- 次のコマンドを実行して、ファイルを Cloud Shell インスタンスにコピーします。
gcloud storage cp gs://spls/gsp223/data.csv .
- 次に、コピーした CSV ファイルをプロジェクト内のファイルで更新します。
sed -i -e "s/placeholder/${BUCKET}/g" ./data.csv
- 次に、このファイルを Cloud Storage バケットにアップロードします。
gcloud storage cp ./data.csv gs://${BUCKET}
-
コマンドが完了したら、Storage ブラウザの上部にある [更新] ボタンをクリックします。バケットに data.csv ファイルが表示されることを確認します。
-
Vertex AI データセット タブを開きます。ページは以下のようになります。

-
コンソールの上部で、[+ 作成] をクリックします。
-
[データセット名] に「clouds」と入力します。
-
[画像分類(単一ラベル)] を選択します。
注:
ご自身のプロジェクトでは、マルチクラス分類を使用することもできます。
-
[作成] をクリックします。
-
[インポート ファイルを Cloud Storage から選択] を選択し、先ほどアップロードしたファイルの URL にファイル名を追加します(your-bucket-name/data.csv)。
Google Cloud コンソールに戻って data.csv ファイルをクリックし、URI フィールドに移動するとこのリンクを簡単に取得できます。
- [続行] をクリックします。
画像のインポートには、2~5 分ほどかかります。インポートが完了すると、データセット内のすべての画像を含むページが表示されます。
[進行状況を確認] をクリックして、目標に沿って進行していることを確認します。
データセットを作成する
タスク 4. 画像を調べる
インポートが完了すると、アップロードした画像を確認するための [参照] タブにリダイレクトされます。

左側のメニューからさまざまなラベルでフィルタして(積雲をクリックするなど)、トレーニング画像を確認してみてください。
注: 本番環境モデルを作成する場合は、高い精度を確保するために、ラベルごとに少なくとも 100 枚の画像を用意する必要があります。今回はデモなので、モデルを短時間でトレーニングできるよう、各種類の雲の画像を 20 枚に絞っています。
ラベルが間違っている画像があった場合は、画像をクリックしてラベルを切り替えてください。

注: 使用するデータセットにまだラベルが付いていない場合、AutoML では Google のヒューマン ラベリング サービスを利用できます。
タスク 5. モデルのトレーニング
モデルのトレーニングを開始する準備が整いました。AutoML ではモデルのトレーニングが自動的に行われるため、モデルコードを記述する必要はありません。
-
モデルをトレーニングするには、[新しいモデルをトレーニング] をクリックします。
-
[トレーニング方法] タブで、[続行] をクリックします。
-
[モデルの詳細] タブで、[続行] をクリックします。
-
[トレーニング オプション] タブで、[続行] をクリックします。
-
[説明可能性] タブで、[続行] をクリックします。
-
[コンピューティングと料金] タブで、ノード時間を 8 に設定します。
注: この時点で [トレーニングを開始] をクリックすることもできます。しかし、トレーニングの完了までに最大 120 分かかることもあるため、事前トレーニング済みモデルを使用する次のタスクに進んでください。
- [キャンセル] をクリックして、次のタスクに進みます。
タスク 6. 予測を生成する
予測を生成する方法はいくつかあります。
このラボでは、UI を使用して画像をアップロードします。
このモデルが 2 つの画像をどのように分類するかを確認できます(1 つ目の画像は巻雲、2 つ目の画像は積乱雲です)。
-
Cloud Shell デバイスに戻ります。
-
これらの画像をローカルマシンにダウンロードします。
gcloud storage cp gs://spls/gsp223/examples/* .
- サンプル ファイルには、Base64 でエンコードされた雲の画像が含まれています。以下に、変更後の CLOUD1-JSON ファイルを示します。
{
"instances": [{
"content":
"/9j/4AAQSkZJRgABAQAAAQABAAD2wCEAAUDBA0PDQ0NDQ0NDQ0NDQ0NDQ0
Q0ODQ0NDRUNDhERExMTDQ0WGBYSGBASExIBBQUFCAcIDwkJDxUVDxUVFRUV
RUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFf/AABEIAeACgAMB
aAAwDAQACEQMRAD8A+bzIcyW{{{{CONTENT REMOVED}}}aQDRJlsFBNCVq
TqyIrhaQDRJlsFBNCVqjTqyIrhaQDRJlsFBNCVqjTqyIrhaQDRdkslFDpL9
tUVQXCuAAAsJoKCiYkSp//9k="
}],
"parameters": {
"confidenceThreshold": 0.5,
"maxPredictions": 5
}
}
- 事前デプロイされた AutoML モデルの Endpoint の値を環境変数にコピーします。
ENDPOINT=$(gcloud run services describe automl-service --platform managed --region us-central1 --format 'value(status.url)')
- 予測を要求する場合は、以下のコマンドを入力します。
curl -X POST -H "Content-Type: application/json" $ENDPOINT/v1 -d "@${INPUT_DATA_FILE}" | jq
上記の呼び出しは、AutoML に予測をリクエストします。
しかし、入力データが指定されていないため、リクエストは失敗します。
HTTP エラーコード 400 は、想定されたデータが存在しないことを示します。
予想される出力:
{
"error": {
"code": 400,
"message": "Empty instances.",
"status": "INVALID_ARGUMENT"
}
}
理解度テスト
このラボで扱うトピックに関する短いクイズに答えて、AutoML の理解度をテストしてください。
ラボで得た知識を使って、予測を立てます。

このモデルが画像中の雲の種類を予測できるかどうかを確認してください。
-
CLOUD1-JSON を入力ファイルとして設定します。
INPUT_DATA_FILE=CLOUD1-JSON
- 予測を要求する場合は、以下のコマンドを入力します。
curl -X POST -H "Content-Type: application/json" $ENDPOINT/v1 -d "@${INPUT_DATA_FILE}" | jq
- 返されたメッセージから、雲の種類が巻雲であることが確認できます。
"displayNames": [
"cirrus"
]
- 別の予測をお試しください。

このモデルが画像中の雲の種類を予測できるかどうか確認しましょう。
-
CLOUD2-JSON を入力ファイルとして設定します。
INPUT_DATA_FILE=CLOUD2-JSON
- 予測を要求する場合は、以下のコマンドを入力します。
curl -X POST -H "Content-Type: application/json" $ENDPOINT/v1 -d "@${INPUT_DATA_FILE}" | jq
- 返されたメッセージから、雲の種類が積乱雲であることが確認できます。
"displayNames": [
"cumulonimbus"
]
お疲れさまでした
ウェブ UI を介して、独自のカスタム機械学習モデルをトレーニングし、そのモデルを使って予測を生成する方法を学びました。これで、独自の画像データセットでモデルをトレーニングするために必要な知識をすべて習得できました。
学習した内容
- トレーニング画像を Cloud Storage にアップロードし、その画像を AutoML Vision で見つけられるように CSV を作成しました。
- AutoML Vision UI でラベルを確認し、モデルをトレーニングしました。
- 新しい雲の画像で予測を生成しました。
次のステップと詳細情報
ラボを終了する
ラボでの学習が完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Qwiklabs から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバック、ご提案、修正が必要な箇所については、[サポート] タブからお知らせください。