数据仓库 (corpus) 中的媒体对象(asset 资源)包含元数据和 annotation 资源。这些 annotation 资源表示 asset 中内容的键值映射。
创建仓库资产注解
您必须先完成以下步骤,然后才能为媒体资源创建注解:
- 在仓库中创建
asset资源 - 创建具有相同键的
dataSchema,以指示annotation值的数据类型
annotation 可以选择性地关联时间分区。例如,如果 annotation 适用于整个 asset,您可以省略与其关联的任何时间分区。同样,如果 annotation 仅适用于视频 asset 的特定部分,您可以在创建 annotation 时提供 asset 的时间范围。
创建不含时间分区的注解
如果注解适用于整个视频 asset,则无需为其提供时间分区。使用以下示例为整个 asset(未指定视频时间段)创建用户提供的 annotation。
REST
在使用任何请求数据之前,请先进行以下替换:
- REGIONALIZED_ENDPOINT:端点可能包含与
LOCATION_ID匹配的前缀,例如europe-west4-。详细了解 区域化端点。 - PROJECT_NUMBER:您的 Google Cloud 项目编号。
- LOCATION_ID:您使用 Vertex AI Vision 的区域。例如:
us-central1、europe-west4。请参阅可用区域。 - CORPUS_ID:目标语料库的 ID。
- ASSET_ID:目标素材资源的 ID。
- ANNOTATION_ID:(可选)用户提供的注解 ID 值。在此请求中,该值会以以下形式添加到请求网址中:
- https://ENDPOINT/v1/[...]/corpora/CORPUS_ID/assets/ASSET_ID/annotations?annotation_id=ANNOTATION_ID
HTTP 方法和网址:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations
请求 JSON 正文:
{
"user_specified_annotation":{
"key": "camera-location",
"value": {
"str_value": "Sunnyvale"
}
}
}
如需发送请求,请选择以下方式之一:
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/ASSET_ID/annotations"
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/ASSET_ID/annotations" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations/ANNOTATION_ID",
"userSpecifiedAnnotation": {
"key": "camera-location",
"value": {
"strValue": "Sunnyvale"
}
}
}
创建具有时间分区的注解
如果注解仅适用于视频的某一部分 asset,您可以为目标视频部分提供时间范围。使用以下示例,通过时间分区为视频 asset 的特定时间段创建用户提供的 annotation。
REST
在使用任何请求数据之前,请先进行以下替换:
- REGIONALIZED_ENDPOINT:端点可能包含与
LOCATION_ID匹配的前缀,例如europe-west4-。详细了解 区域化端点。 - PROJECT_NUMBER:您的 Google Cloud 项目编号。
- LOCATION_ID:您使用 Vertex AI Vision 的区域。例如:
us-central1、europe-west4。请参阅可用区域。 - CORPUS_ID:目标语料库的 ID。
- ASSET_ID:目标素材资源的 ID。
- ANNOTATION_ID:(可选)用户提供的注解 ID 值。在此请求中,该值会以以下形式添加到请求网址中:
- https://ENDPOINT/v1/[...]/corpora/CORPUS_ID/assets/ASSET_ID/annotations?annotation_id=ANNOTATION_ID
HTTP 方法和网址:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations
请求 JSON 正文:
{
"user_specified_annotation": {
"key": "object-detected",
"value": {
"str_value": "cat"
},
"partition": {
"temporal_partition": {
"start_time": {
"seconds": "1630464728"
},
"end_time": {
"seconds": "1630464729"
}
}
}
}
}
如需发送请求,请选择以下方式之一:
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/ASSET_ID/annotations"
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/ASSET_ID/annotations" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{
"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"
}
}
}
}
更新注解(无时间分区)
REST
在使用任何请求数据之前,请先进行以下替换:
- REGIONALIZED_ENDPOINT:端点可能包含与
LOCATION_ID匹配的前缀,例如europe-west4-。详细了解 区域化端点。 - PROJECT_NUMBER:您的 Google Cloud 项目编号。
- LOCATION_ID:您使用 Vertex AI Vision 的区域。例如:
us-central1、europe-west4。请参阅可用区域。 - CORPUS_ID:目标语料库的 ID。
- ASSET_ID:目标素材资源的 ID。
- ANNOTATION_ID:目标注解的 ID。
HTTP 方法和网址:
PATCH https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID/annotations/ANNOTATION_ID
请求 JSON 正文:
{
"user_specified_annotation":{
"key": "camera-location",
"value": {
"str_value": "UPDATED_FIELD_VALUE"
}
}
}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
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
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$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
您应该收到类似以下内容的 JSON 响应:
{
"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"
}
}
}