準備したデータセットを使用してモデルをトレーニングし、カスタムモデルを作成します。AutoML API では、データセットの項目を使用してモデルをトレーニングしてテストし、パフォーマンスを評価します。その結果を確認し、必要に応じてトレーニング データセットを調整して、改善されたデータセットで新しいモデルをトレーニングします。
モデルのトレーニングが完了するまで数時間かかることがあります。AutoML API を使用すると、トレーニングのステータスを確認できます。
AutoML Vision ではトレーニングを開始するたびに新しいモデルが作成されるため、プロジェクトに多数のモデルが含まれる場合があります。プロジェクト内のモデルの一覧表示や、不要になったモデルの削除が可能です。また、Cloud AutoML Vision UI を使用して、AutoML API で作成したモデルを一覧表示し、不要なモデルを削除することもできます。
これらのモデルには Google の最新の研究成果が反映されています。モデルを TF Lite パッケージとして利用できます。TensorFlow Lite SDK を使用して TensorFlow Lite モデルを統合する方法については、iOS と Android のリンクをご覧ください。
Edge モデルのトレーニング
ラベル付きトレーニング アイテムを含むデータセットがある場合は、カスタム Edge モデルを作成してトレーニングできます。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の AutoML Vision リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の AutoML Vision リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の AutoML Vision リファレンス ドキュメントをご覧ください。
TensorFlow サービングと TF Lite モデル
トレーニング時に、特定のユースケースで必要な Edge モデルのタイプを選択できます。
- 低レイテンシ(
mobile-low-latency-1
) - 一般的な用途(
mobile-versatile-1
) - 予測品質の向上(
mobile-high-accuracy-1
)
ウェブ UI
-
Vision Dashboard を開きます。
[データセット] に、現在のプロジェクトの使用可能データセットが表示されます。
- カスタムモデルのトレーニングに使用するデータセットを選択します。
-
データセットの準備ができたら、[トレーニング] タブと [新しいモデルをトレーニング] ボタンを選択します。
[新しいモデルのトレーニング] サイド ウィンドウが開き、トレーニング オプションが表示されます。
- トレーニングの [モデルの定義] セクションで、モデル名を変更するかデフォルト値を使用して、モデルタイプとして radio_button_checked Edge を指定します。Edge モデルのトレーニングを選択したら、[続行] を選択します。
-
次の [モデル最適化のオプション] セクションで、必要な最適化基準(radio_button_checked 高精度、最適なトレードオフまたは 予測の高速化)を選択します。最適化仕様を選択したら、[続行] を選択します。
-
次の [ノード時間予算の設定] セクションで、ノード時間の推奨予算を使用するか、別の値を指定します。
ほとんどのデータセットでは、モデルをトレーニングするのに 24 ノード時間で十分です。この推奨値は、モデルを完全に統合するための推定値です。ただし、別の値を選択することもできます。画像分類の最小ノード時間は 8 です。オブジェクト検出の場合、この最小値は 20 です。
-
[トレーニングを開始] を選択して、モデルのトレーニングを開始します。
モデルのトレーニングが完了するまで数時間かかることがあります。モデルのトレーニングが正常に終了したら、Google Cloud Platform プロジェクトに使用したメールアドレスにメッセージが届きます。
REST
Edge モデルをトレーニングする場合は、モデルの要件に合わせて modelType
フィールドに次の 3 つ値を指定できます。
mobile-low-latency-1
: 低レイテンシmobile-versatile-1
: 汎用的な用途mobile-high-accuracy-1
: 予測品質の向上
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: GCP プロジェクト ID
- display-name: 選択した文字列の表示名。
- dataset-id: データセットの IDこの ID は、データセットの名前の最後の要素です。例:
- データセット名:
projects/project-id/locations/location-id/datasets/3104518874390609379
- データセット ID:
3104518874390609379
- データセット名:
HTTP メソッドと URL:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models
リクエストの本文(JSON):
{ "displayName": "DISPLAY_NAME", "datasetId": "DATASET_ID", "imageClassificationModelMetadata": { "trainBudget": "1", "modelType": "mobile-low-latency-1" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models" | Select-Object -Expand Content
出力は次のようになります。タスクのステータスは、オペレーション ID(この場合は ICN2106290444865378475
)を使用して取得できます。例については、長時間実行オペレーションによる作業をご覧ください。
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/ICN2106290444865378475", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-10-30T20:06:08.253243Z", "updateTime": "2019-10-30T20:06:08.253243Z", "createModelDetails": {} } }
Go
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Java
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Node.js
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Python
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
list オペレーションのステータス
次のコードサンプルでは、プロジェクトのオペレーションを一覧表示して、結果をフィルタリングします。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: GCP プロジェクト ID
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations" | Select-Object -Expand Content
表示される出力は、リクエストしたオペレーションによって異なります。
select クエリ パラメータ(operationId
、done
、worksOn
)を使用して返されるオペレーションをフィルタすることもできます。たとえば、実行を終了したオペレーションのリストを返すには、URL を次のように変更します。
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations?filter="done=true"
Go
このサンプルを試す前に、[API とリファレンス] > [クライアント ライブラリ] ページを参照して、この言語の設定手順を完了してください。
Java
このサンプルを試す前に、[API とリファレンス] > [クライアント ライブラリ] ページを参照して、この言語の設定手順を完了してください。
Node.js
このサンプルを試す前に、[API とリファレンス] > [クライアント ライブラリ] ページを参照して、この言語の設定手順を完了してください。
Python
このサンプルを試す前に、[API とリファレンス] > [クライアント ライブラリ] ページを参照して、この言語の設定手順を完了してください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
長時間実行オペレーションによる作業
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: GCP プロジェクト ID
- operation-id: オペレーションの IDこの ID は、オペレーションの名前の最後の要素です。例:
- オペレーション名:
projects/project-id/locations/location-id/operations/IOD5281059901324392598
- オペレーション ID:
IOD5281059901324392598
- オペレーション名:
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID" | Select-Object -Expand Content
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2018-10-29T15:56:29.176485Z", "updateTime": "2018-10-29T16:10:41.326614Z", "importDataDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
完了したモデル作成オペレーションの場合、出力は次のようになります。
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-07-22T18:35:06.881193Z", "updateTime": "2019-07-22T19:58:44.972235Z", "createModelDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1.Model", "name": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID" } }
Go
このサンプルを試す前に、[API とリファレンス] > [クライアント ライブラリ] ページを参照して、この言語の設定手順を完了してください。
Java
このサンプルを試す前に、[API とリファレンス] > [クライアント ライブラリ] ページを参照して、この言語の設定手順を完了してください。
Node.js
このサンプルを試す前に、[API とリファレンス] > [クライアント ライブラリ] ページを参照して、この言語の設定手順を完了してください。
Python
このサンプルを試す前に、[API とリファレンス] > [クライアント ライブラリ] ページを参照して、この言語の設定手順を完了してください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の AutoML Vision リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の AutoML Vision リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の AutoML Vision リファレンス ドキュメントをご覧ください。
オペレーションのキャンセル
オペレーション ID を使用して、インポート タスクやトレーニング タスクをキャンセルできます。
REST
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: GCP プロジェクト ID
- operation-id: オペレーションの IDこの ID は、オペレーションの名前の最後の要素です。例:
- オペレーション名:
projects/project-id/locations/location-id/operations/IOD5281059901324392598
- オペレーション ID:
IOD5281059901324392598
- オペレーション名:
HTTP メソッドと URL:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID:cancel
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID:cancel"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID:cancel" | Select-Object -Expand Content
{}
モデルに関する情報の取得
次のコードサンプルを使用して、特定のトレーニング済みモデルに関する情報を取得します。このリクエストから返された情報を使用して、モードの変更や予測リクエストの送信を行うことができます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: GCP プロジェクト ID
- model-id: モデルを作成したときにレスポンスで返されたモデルの ID。この ID は、モデルの名前の最後の要素です。例:
- モデル名:
projects/project-id/locations/location-id/models/IOD4412217016962778756
- モデル ID:
IOD4412217016962778756
- モデル名:
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-id" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/project-id/locations/us-central1/models/model-id", "displayName": "display-name", "datasetId": "dataset-id", "createTime": "2019-10-30T20:06:08.253243Z", "deploymentState": "UNDEPLOYED", "updateTime": "2019-10-30T20:54:50.472328Z", "imageClassificationModelMetadata": { "trainBudget": "1", "modelType": "mobile-low-latency-1", "nodeQps": 3.2 } }
Go
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Java
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Node.js
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Python
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
再開可能なトレーニング
これで、大規模なデータセット(1,000 個を超える画像)でカスタムモデルのトレーニングを一時停止し、再開できるようになりました。モデルのトレーニングの一時停止は、一時停止ボタンを使用した手動によるアクションではありません。代わりに、ノード時間予算を特定の時間(2 時間など)に設定します。設定した時間に達すると、モデルのステータスに関係なく、トレーニングは自動的に停止します。
再開可能なトレーニングには次の制限があります。
- 基本モデルの時間制限 - トレーニングを再開できるのは、直近の 14 日間にトレーニングされたモデルのみです。リクエストの 14 日以上前に作成されたベースモデルは再開可能なトレーニングの対象外です。
- ラベルの変更なし - ベースモデルのデータセットでラベルを変更すると、再開可能なトレーニングは失敗します。
- パフォーマンスの向上は保証されません - モデルで再開可能なトレーニングを使用しても、モデルのパフォーマンスが向上するとは限りません。
ウェブ UI
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
-
AutoML Vision UI を開きます。
[データセット] ページに、現在のプロジェクトで使用可能なデータセットが表示されます。
カスタムモデルのトレーニングに使用するデータセットを選択します。
選択したデータセットの表示名がタイトルバーに表示され、データセット内の個々の項目がラベルと一緒にページに一覧表示されます。
データセットの確認を終えたら、タイトルバーのすぐ下にある [トレーニング] タブを選択します。
以前にトレーニングしたモデルは、このタブのリストに表示されます。
モデルで再開可能なトレーニングが利用可能な場合、[評価全体を見る] の近くにオプションが表示されます。
[トレーニングを再開] を選択して、該当するモデルでトレーニングを再開します。
元のモデルのトレーニングと同様に、[トレーニングを再開] を選択すると、[新しいモデルのトレーニング] サイド ウィンドウが表示されます。[モデルの定義] セクションで、新しいモデルの名前を変更できます。また、このモデルのトレーニングに使用されたベースモデルの名前も表示されます。
モデルを定義したら、[続行] を選択して次のセクションに進みます。
[ノード時間予算の設定] セクションで、ノード時間予算を指定します。この予算には、初期モデル トレーニングと同様の料金体系と割り当て制限が適用されます。
トレーニング予算を指定したら、[トレーニングを開始] を選択します。再開可能なトレーニングが終了すると、メールが届きます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- base-model-id: 基本(既存)モデルの ID。新しいモデルは、この基本モデルに基づいて作成されます。次の新規モデルの仕様は、基本モデルに一致する必要があります。
- プロジェクト
- ロケーション
modelType
*
* 新しいモデルのリクエストでこのフィールドが省略されていても、基本と新しい
modelType
はチェックされます。 - project-id: GCP プロジェクト ID
- display-name: 選択した文字列の表示名。
- dataset-id: データセットの IDこの ID は、データセットの名前の最後の要素です。例:
- データセット名:
projects/project-id/locations/location-id/datasets/3104518874390609379
- データセット ID:
3104518874390609379
- データセット名:
HTTP メソッドと URL:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models
リクエストの本文(JSON):
{ "baseModelId": BASE_MODEL_ID, "displayName": "DISPLAY_NAME", "datasetId": "DATASET_ID", "imageClassificationModelMetadata": { "trainBudget": "1", "modelType": "mobile-low-latency-1" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models" | Select-Object -Expand Content
出力は次のようになります。タスクのステータスは、オペレーション ID(この場合は ICN2106290444865378475
)を使用して取得できます。例については、長時間実行オペレーションによる作業をご覧ください。
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/ICN2106290444865378475", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-10-30T20:06:08.253243Z", "updateTime": "2019-10-30T20:06:08.253243Z", "createModelDetails": {} } }