Crear y actualizar un almacén de imágenes

Un almacén de imágenes es un lugar donde puedes almacenar y gestionar tus imágenes, así como las anotaciones de las imágenes.

Crear un almacén de imágenes

Primero, debes crear un corpus.

REST Y LÍNEA DE COMANDOS

Crea un recurso de corpus en el proyecto indicado con la opción de especificar el Corpus nombre visible y la descripción.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con LOCATION_ID, como europe-west4-. Consulta más información sobre los puntos finales regionalizados.
  • PROJECT_NUMBER: tu Google Cloud número de proyecto.
  • LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo: us-central1, europe-west4. Consulta las regiones disponibles.
  • DISPLAY_NAME: nombre visible del almacén.
  • WAREHOUSE_DESCRIPTION: la descripción del almacén (corpus).

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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"
      }
    }
  }
}

Crear un esquema de datos

Si quieres importar anotaciones, debes crear un esquema de datos correspondiente antes de llamar a la API Import.

REST Y LÍNEA DE COMANDOS

En este ejemplo se muestra cómo crear un esquema de datos en un corpus.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con LOCATION_ID, como europe-west4-. Consulta más información sobre los puntos finales regionalizados.
  • PROJECT_NUMBER: tu Google Cloud número de proyecto.
  • LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo: us-central1, europe-west4. Consulta las regiones disponibles.
  • CORPUS_ID: el ID del corpus de destino.
  • DATASCHEMA_KEY: esta clave debe coincidir con la clave de una anotación especificada por el usuario y ser única en un corpus. Por ejemplo, data-key.
  • ANNOTATION_DATA_TYPE: el tipo de datos de la anotación. Los valores disponibles son:
    • DATA_TYPE_UNSPECIFIED
    • INTEGER
    • FLOAT
    • STRING
    • DATETIME
    • GEO_COORDINATE
    • PROTO_ANY
    • BOOLEAN

    Para obtener más información, consulta la documentación de referencia de la API.

  • ANNOTATION_GRANULARITY: la granularidad de las anotaciones de este dataSchema. Los valores disponibles son:
    • GRANULARITY_UNSPECIFIED: granularidad no especificada.
    • GRANULARITY_ASSET_LEVEL: granularidad a nivel de recurso (las anotaciones no deben contener información de partición temporal del recurso multimedia).
    • GRANULARITY_PARTITION_LEVEL: granularidad a nivel de partición (las anotaciones deben contener información temporal de la partición del recurso multimedia).
  • SEARCH_STRATEGY: uno de los valores de enumeración disponibles. Tipos de estrategias de búsqueda que se aplicarán a la clave de anotación. Los valores disponibles son:
    • NO_SEARCH
    • EXACT_SEARCH
    • SMART_SEARCH

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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"
    }
  }
}

Importar recursos a un corpus de imágenes

Importa recursos (y, opcionalmente, anotaciones) a un corpus ya creado en el proyecto indicado.

El archivo de Cloud Storage de la solicitud ImportAsset debe estar en formato JSONL. En el archivo, cada línea corresponde a un recurso y se convertirá en un proto InputImageAsset. Por ejemplo,

{"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 Y LÍNEA DE COMANDOS

En este ejemplo se muestra cómo importar recursos (y, opcionalmente, anotaciones) a un recurso de corpus del proyecto indicado.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con LOCATION_ID, como europe-west4-. Consulta más información sobre los puntos finales regionalizados.
  • PROJECT_NUMBER: tu Google Cloud número de proyecto.
  • LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo: us-central1, europe-west4. Consulta las regiones disponibles.
  • CORPUS_ID: el ID del corpus de destino.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

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

Analizar recursos del corpus

Para preparar la búsqueda de imágenes, es necesario ejecutar AnalyzeCorpus para generar las señales de embedding de las imágenes.

REST Y LÍNEA DE COMANDOS

En este ejemplo se muestra cómo realizar la acción AnalyzeCorpus en un recurso de corpus.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con LOCATION_ID, como europe-west4-. Consulta más información sobre los puntos finales regionalizados.
  • PROJECT_NUMBER: tu Google Cloud número de proyecto.
  • LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo: us-central1, europe-west4. Consulta las regiones disponibles.
  • CORPUS_ID: el ID del corpus de destino.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

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

Crear un índice

REST Y LÍNEA DE COMANDOS

En este ejemplo se muestra cómo crear un índice en un recurso de corpus.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con LOCATION_ID, como europe-west4-. Consulta más información sobre los puntos finales regionalizados.
  • PROJECT_NUMBER: tu Google Cloud número de proyecto.
  • LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo: us-central1, europe-west4. Consulta las regiones disponibles.
  • CORPUS_ID: el ID del corpus de destino.
  • INDEX_ID: (opcional) valor proporcionado por el usuario para el ID de índice. En esta solicitud, el valor se añade a la URL de la solicitud con el siguiente formato:
    • https://REGIONALIZED_ENDPOINT/v1/[...]/corpora/CORPUS_ID/indexes?index_id=INDEX_ID

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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"
  }
}

Crear un endpoint de índice

REST Y LÍNEA DE COMANDOS

En este ejemplo se muestra cómo crear un endpoint de índice.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con LOCATION_ID, como europe-west4-. Consulta más información sobre los puntos finales regionalizados.
  • PROJECT_NUMBER: tu Google Cloud número de proyecto.
  • LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo: us-central1, europe-west4. Consulta las regiones disponibles.
  • INDEX_ENDPOINT_ID: (opcional) valor proporcionado por el usuario para el ID del endpoint del índice. En esta solicitud, el valor se añade a la URL de la solicitud con el siguiente formato:
    • https://REGIONALIZED_ENDPOINT/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints?index_endpoint_id=INDEX_ENDPOINT_ID

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

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

Desplegar un índice en un endpoint de índice

REST Y LÍNEA DE COMANDOS

En este ejemplo se muestra cómo desplegar un índice en un recurso de endpoint de índice.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con LOCATION_ID, como europe-west4-. Consulta más información sobre los puntos finales regionalizados.
  • PROJECT_NUMBER: tu Google Cloud número de proyecto.
  • LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo: us-central1, europe-west4. Consulta las regiones disponibles.
  • INDEX_ENDPOINT_ID: el ID del endpoint de índice de destino.
  • CORPUS_ID: el ID del corpus de destino.
  • INDEX_ID: el ID del índice de destino.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "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"
  }
}