Los objetos multimedia (recursos asset) de un almacén (corpus) contienen metadatos y recursos annotation. Estos recursos annotation representan una asignación de clave-valor de contenido en un asset.
Crear una anotación de recurso de almacén
Debes completar los siguientes pasos antes de crear una anotación para un recurso:
- Crear un recurso
asseten un almacén - Crea un
dataSchemacon la misma clave para indicar el tipo de datos del valorannotation.
Un annotation puede tener asociada una partición temporal de forma opcional.
Por ejemplo, si un annotation se aplica a todo el asset, puedes omitir cualquier partición temporal asociada. Del mismo modo, si una annotation se aplica solo a una parte específica de un vídeo asset, puedes indicar el intervalo de tiempo de la asset al crear la annotation.
Crear una anotación sin partición temporal
Si una anotación se aplica a todo un vídeo, asset no tienes que
proporcionar una partición temporal para ella. Usa el siguiente ejemplo para crear una annotation proporcionada por el usuario para todo un asset (no se especifica ningún periodo de tiempo del vídeo).
REST
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, comoeurope-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.
- ASSET_ID: el ID del recurso de destino.
- ANNOTATION_ID: (opcional) valor proporcionado por el usuario para el ID de la anotación. En esta solicitud, el valor se añade a la URL de la solicitud con el siguiente formato:
- https://ENDPOINT/v1/[...]/corpora/CORPUS_ID/assets/ASSET_ID/annotations?annotation_id=ANNOTATION_ID
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations
Cuerpo JSON de la solicitud:
{
"user_specified_annotation":{
"key": "camera-location",
"value": {
"str_value": "Sunnyvale"
}
}
}
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/ASSET_ID/annotations"
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/ASSET_ID/annotations" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations/ANNOTATION_ID",
"userSpecifiedAnnotation": {
"key": "camera-location",
"value": {
"strValue": "Sunnyvale"
}
}
}
Crear una anotación con una partición temporal
Si una anotación solo se aplica a una parte de un vídeo, asset puedes
proporcionar un intervalo de tiempo para la parte del vídeo de destino. Usa el siguiente ejemplo para crear un annotation proporcionado por el usuario para un periodo específico de un vídeo
asset mediante una partición temporal.
REST
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, comoeurope-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.
- ASSET_ID: el ID del recurso de destino.
- ANNOTATION_ID: (opcional) valor proporcionado por el usuario para el ID de la anotación. En esta solicitud, el valor se añade a la URL de la solicitud con el siguiente formato:
- https://ENDPOINT/v1/[...]/corpora/CORPUS_ID/assets/ASSET_ID/annotations?annotation_id=ANNOTATION_ID
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations
Cuerpo JSON de la solicitud:
{
"user_specified_annotation": {
"key": "object-detected",
"value": {
"str_value": "cat"
},
"partition": {
"temporal_partition": {
"start_time": {
"seconds": "1630464728"
},
"end_time": {
"seconds": "1630464729"
}
}
}
}
}
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/ASSET_ID/annotations"
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/ASSET_ID/annotations" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations/ANNOTATION_ID",
"userSpecifiedAnnotation": {
"key": "object-detected",
"value": {
"strValue": "cat"
},
"partition": {
"temporalPartition": {
"startTime": "2022-09-14T20:33:09Z",
"endTime": "2022-09-14T20:33:39Z"
}
}
}
}
Actualizar una anotación (sin partición temporal)
REST
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, comoeurope-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.
- ASSET_ID: ID del recurso de destino.
- ANNOTATION_ID: el ID de la anotación de destino.
Método HTTP y URL:
PATCH https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations/ANNOTATION_ID
Cuerpo JSON de la solicitud:
{
"user_specified_annotation":{
"key": "camera-location",
"value": {
"str_value": "UPDATED_FIELD_VALUE"
}
}
}
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 PATCH \
-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/ASSET_ID/annotations/ANNOTATION_ID"
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 PATCH `
-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/ASSET_ID/annotations/ANNOTATION_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations/ANNOTATION_ID",
"userSpecifiedAnnotation": {
"key": "camera-location",
"value": {
"strValue": "UPDATED_FIELD_VALUE"
}
}
}