イメージ ウェアハウスを作成して更新する

Image Warehouse は、画像と画像のアノテーションを保存して管理できる場所です。

イメージ ウェアハウスを作成する

まず、コーパスを作成する必要があります。

REST とコマンドライン

指定されたプロジェクトの下にコーパス リソースを作成し、Corpus の表示名と説明を指定できます。

リクエストのデータを使用する前に、次のように置き換えます。

HTTP メソッドと URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora

リクエストの本文(JSON):

{
  "display_name": "DISPLAY_NAME",
  "description": "WAREHOUSE_DESCRIPTION",
  "type": "IMAGE",
  "search_capability_setting": {
    "search_capabilities": {
      "type": "EMBEDDING_SEARCH"
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/warehouseoperations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.CreateCorpusMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.Corpus",
    "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID",
    "displayName": "DISPLAY_NAME",
    "description": "WAREHOUSE_DESCRIPTION",
    "type": "IMAGE",
    "search_capability_setting": {
      "search_capabilities": {
        "type": "EMBEDDING_SEARCH"
      }
    }
  }
}

データスキーマの作成

アノテーションをインポートする場合は、Import API を呼び出す前に、対応するデータスキーマを作成する必要があります。

REST とコマンドライン

このサンプルは、既存のコーパスにデータスキーマを作成する方法を示しています。

リクエストのデータを使用する前に、次のように置き換えます。

  • REGIONALIZED_ENDPOINT: エンドポイントには、LOCATION_ID に一致する接頭辞(europe-west4- など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。
  • PROJECT_NUMBER: Google Cloud プロジェクト番号
  • LOCATION_ID: Vertex AI Vision を使用するリージョン。例: us-central1europe-west4利用可能なリージョンをご覧ください。
  • CORPUS_ID: ターゲット コーパスの ID。
  • DATASCHEMA_KEY: このキーは、ユーザー指定のアノテーションのキーと一致し、corpus 内で一意である必要があります。例: data-key
  • ANNOTATION_DATA_TYPE: アノテーションのデータ型。使用可能な値は次のとおりです。
    • DATA_TYPE_UNSPECIFIED
    • INTEGER
    • FLOAT
    • STRING
    • DATETIME
    • GEO_COORDINATE
    • PROTO_ANY
    • BOOLEAN

    詳細については、API リファレンス ドキュメントをご覧ください。

  • ANNOTATION_GRANULARITY: この dataSchema の下のアノテーションの粒度。使用可能な値は次のとおりです。
    • GRANULARITY_UNSPECIFIED - 粒度は指定されていません。
    • GRANULARITY_ASSET_LEVEL - アセットレベルの粒度(アノテーションには、メディアアセットの時間的パーティション情報を含めることはできません)。
    • GRANULARITY_PARTITION_LEVEL - パーティション レベルの粒度(アノテーションには、メディアアセットのテンポラル パーティション情報が含まれている必要があります)。
  • SEARCH_STRATEGY: 使用可能な列挙値のいずれか。アノテーション キーに適用する検索戦略のタイプ。使用可能な値は次のとおりです。
    • NO_SEARCH
    • EXACT_SEARCH
    • SMART_SEARCH

HTTP メソッドと URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas

リクエストの本文(JSON):

{
  "key": "DATASCHEMA_KEY",
  "schema_details": {
    "type": "ANNOTATION_DATA_TYPE",
    "granularity": "ANNOTATION_GRANULARITY",
    "search_strategy": {
      "search_strategy_type": "SEARCH_STRATEGY"
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/dataSchemas/DATASCHEMA_ID",
  "key": "data-key",
  "schemaDetails": {
    "type": "BOOLEAN",
    "granularity": "GRANULARITY_ASSET_LEVEL",
    "searchStrategy": {
      "search_strategy_type": "EXACT_SEARCH"
    }
  }
}

アセットを画像コーパスにインポートする

指定したプロジェクトの既存のコーパスにアセット(必要に応じてアノテーション)をインポートします。

ImportAsset リクエストの Cloud Storage ファイルは JSONL 形式である必要があります。ファイル内の各行は 1 つのアセットに対応し、InputImageAsset proto に変換されます。次に例を示します。

{"gcsUri":"gs://test/test1.png","assetId":"asset1","annotations":[{"key":"title","value":{"strValue":"cat"}}]}
{"gcsUri":"gs://test/test2.png","assetId":"asset2","annotations":[{"key":"title","value":{"strValue":"dog"}}]}
{"gcsUri":"gs://test/test3.png","assetId":"asset3","annotations":[{"key":"title","value":{"strValue":"rabbit"}}]}

REST とコマンドライン

このサンプルでは、特定のプロジェクトのコーパス リソースにアセット(必要に応じてアノテーション)をインポートする方法を示します。

リクエストのデータを使用する前に、次のように置き換えます。

HTTP メソッドと URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets:import

リクエストの本文(JSON):

{
  "parent": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID,
  "assets_gcs_uri": GCS_URI
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets:import"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets:import" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/operations/OPERATION_ID",
}

コーパス内のアセットを分析する

画像検索の準備をするには、AnalyzeCorpus を実行して画像からエンベディング シグナルを生成する必要があります。

REST とコマンドライン

このサンプルでは、コーパス リソースで AnalyzeCorpus を実行する方法を示します。

リクエストのデータを使用する前に、次のように置き換えます。

HTTP メソッドと URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:analyze

リクエストの本文(JSON):

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:analyze"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:analyze" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/operations/OPERATION_ID",
}

インデックスを作成する

REST とコマンドライン

このサンプルは、コーパス リソースにインデックスを作成する方法を示しています。

リクエストのデータを使用する前に、次のように置き換えます。

  • REGIONALIZED_ENDPOINT: エンドポイントには、LOCATION_ID に一致する接頭辞(europe-west4- など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。
  • PROJECT_NUMBER: Google Cloud プロジェクト番号
  • LOCATION_ID: Vertex AI Vision を使用するリージョン。例: us-central1europe-west4利用可能なリージョンをご覧ください。
  • CORPUS_ID: ターゲット コーパスの ID。
  • INDEX_ID: (省略可)インデックス ID のユーザー指定値。このリクエストでは、値は次の形式でリクエスト URL に追加されます。
    • https://REGIONALIZED_ENDPOINT/v1/[...]/corpora/CORPUS_ID/indexes?index_id=INDEX_ID

HTTP メソッドと URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes

リクエストの本文(JSON):

{
  "display_name": "DISPLAY_NAME",
  "description": "INDEX_DESCRIPTION",
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes/INDEX_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.CreateIndexMetadata"
  }
}

インデックス エンドポイントを作成する

REST とコマンドライン

このサンプルは、インデックス エンドポイントを作成する方法を示しています。

リクエストのデータを使用する前に、次のように置き換えます。

  • REGIONALIZED_ENDPOINT: エンドポイントには、LOCATION_ID に一致する接頭辞(europe-west4- など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。
  • PROJECT_NUMBER: Google Cloud プロジェクト番号
  • LOCATION_ID: Vertex AI Vision を使用するリージョン。例: us-central1europe-west4利用可能なリージョンをご覧ください。
  • INDEX_ENDPOINT_ID: (省略可)インデックス エンドポイント ID のユーザー指定値。このリクエストでは、値は次の形式でリクエスト URL に追加されます。
    • https://REGIONALIZED_ENDPOINT/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints?index_endpoint_id=INDEX_ENDPOINT_ID

HTTP メソッドと URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints

リクエストの本文(JSON):

{
  "display_name": "DISPLAY_NAME",
  "description": "DESCRIPTION",
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.CreateIndexEndpointMetadata"
  }
}

インデックスをインデックス エンドポイントにデプロイする

REST とコマンドライン

このサンプルでは、インデックス エンドポイント リソースにインデックスをデプロイする方法を示します。

リクエストのデータを使用する前に、次のように置き換えます。

  • REGIONALIZED_ENDPOINT: エンドポイントには、LOCATION_ID に一致する接頭辞(europe-west4- など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。
  • PROJECT_NUMBER: Google Cloud プロジェクト番号
  • LOCATION_ID: Vertex AI Vision を使用するリージョン。例: us-central1europe-west4利用可能なリージョンをご覧ください。
  • INDEX_ENDPOINT_ID: ターゲット インデックス エンドポイントの ID。
  • CORPUS_ID: ターゲット コーパスの ID。
  • INDEX_ID: ターゲット インデックスの ID。

HTTP メソッドと URL:

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex

リクエストの本文(JSON):

{
  "deployedIndex": {
    "index": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes/INDEX_ID"
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:deployIndex" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.visionai.v1.DeployIndexMetadata",
    "deployedIndex": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/indexes/INDEX_ID"
  }
}