提交视频标签请求

AI Platform 数据标签服务支持四种类型的视频标签任务:

  • 分类任务 - 标签添加者为每个视频分配一个或多个标签。您可以指定每个视频的标签添加者人数。我们建议不要超过五个人。 Data Labeling Service 会根据多数人的选择确定适当的标签。您还可以指定是否对视频应用镜头检测。
  • 对象检测任务 - 标签添加者选择标签,然后绘制一个或多个边界框以应用到从视频提取的图片中的部分。他们可以选择其他标签并重复该过程,直到提取的图片中没有其他要识别的相关对象。 您可以指定提取帧速率,以确定要从视频中提取多少张图片。
  • 对象跟踪任务 - 标签添加者选择标签,然后绘制一个或多个边界框,以指示视频中表示某个对象(某些对象)的部分并跟踪整个视频中的该对象(每个对象)。
  • 事件任务 - 标签添加者选择标签,然后选择开始和结束时间以将标签应用到视频中的片段或点。

视频分类

网页界面

  1. 打开数据标签服务界面

  2. 从左侧导航栏中选择数据集

    数据集页面会显示之前为当前项目创建的数据集的状态。

  3. 点击要提交以便加标签的数据集的名称。

    状态为“导入完成”的数据集可供提交。数据类型列显示数据集包含的是图片、视频还是文本。

  4. 数据集详情页面上,点击标题栏中的创建标签任务按钮。

  5. 新建标签任务页面上,为带有注释的数据集输入名称和描述。

    带有注释的数据集是人工标签添加者为数据集加了标签以后的版本。

  6. 目标下拉列表中,选择要对此数据集执行的标签任务类型。

    该下拉列表仅包含可用于此数据集中数据类型的目标。如果您没有看到所需的目标,则可能是因为您选择了包含其他类型数据的数据集。请关闭新建标签任务页面,然后选择其他数据集。

  7. 标签集下拉列表中,选择您希望标签添加者将其应用到此数据集中的数据项的标签集。

    该下拉列表包含与此项目关联的所有标签集。您必须选择一个标签集。

  8. 说明下拉列表中,选择要向处理此数据集的标签添加者提供的说明。

    该下拉列表包含与此项目关联的所有说明。您必须在标签请求中添加说明。

  9. 处理每个数据项的标签添加者数下拉列表中,指定要查看该数据集中每一项的标签添加者数。

    默认值为 1,但您可以请求安排三个或五个标签添加者为每一项加标签。

  10. 点击复选框以确认您了解如何为加标签操作付费。

  11. 点击创建

命令行

设置以下环境变量:
  1. PROJECT_ID 变量设置为您的 Google Cloud 项目 ID。
  2. DATASET_ID 变量设置为您的数据集 ID(来自创建数据集时的响应)。该 ID 显示在完整数据集名称的末尾:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME 设置为说明资源的名称。
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME 设置为标签集资源的名称。
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}/video:label \
  -d '{
  "basicConfig": {
    "instruction": "${INSTRUCTION_RESOURCE_NAME}",
    "annotatedDatasetDisplayName": "curl_testing_annotated_dataset",
    "labelGroup": "test_label_group",
    "replica_count": 1
  },
  "feature": "CLASSIFICATION",
  "videoClassificationConfig": {
    "annotationSpecSetConfigs": ["annotationSpecSet": "${ANNOTATION_SPEC_SET_RESOURCE_NAME}"],
  },
}'

您应该会看到类似如下所示的输出。可以使用操作 ID 来获取任务的状态。如需示例,请参阅获取操作状态

{
  "name": "projects/data-labeling-codelab/operations/5c73dd6b_0000_2b34_a920_883d24fa2064",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.data-labeling.v1beta1.LabelVideoClassificationOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}

Java

必须先安装 Java 客户端库,然后才能运行此代码示例。
import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.datalabeling.v1beta1.AnnotatedDataset;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceClient;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceSettings;
import com.google.cloud.datalabeling.v1beta1.HumanAnnotationConfig;
import com.google.cloud.datalabeling.v1beta1.LabelOperationMetadata;
import com.google.cloud.datalabeling.v1beta1.LabelVideoRequest;
import com.google.cloud.datalabeling.v1beta1.LabelVideoRequest.Feature;
import com.google.cloud.datalabeling.v1beta1.VideoClassificationConfig;
import com.google.cloud.datalabeling.v1beta1.VideoClassificationConfig.AnnotationSpecSetConfig;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class LabelVideo {

  // Start a Video Labeling Task
  static void labelVideo(
      String formattedInstructionName,
      String formattedAnnotationSpecSetName,
      String formattedDatasetName)
      throws IOException {
    // String formattedInstructionName = DataLabelingServiceClient.formatInstructionName(
    //      "YOUR_PROJECT_ID", "YOUR_INSTRUCTION_UUID");
    // String formattedAnnotationSpecSetName =
    //     DataLabelingServiceClient.formatAnnotationSpecSetName(
    //         "YOUR_PROJECT_ID", "YOUR_ANNOTATION_SPEC_SET_UUID");
    // String formattedDatasetName = DataLabelingServiceClient.formatDatasetName(
    //      "YOUR_PROJECT_ID", "YOUR_DATASET_UUID");


    DataLabelingServiceSettings settings =
        DataLabelingServiceSettings.newBuilder()
            .build();
    try (DataLabelingServiceClient dataLabelingServiceClient =
        DataLabelingServiceClient.create(settings)) {
      HumanAnnotationConfig humanAnnotationConfig =
          HumanAnnotationConfig.newBuilder()
              .setAnnotatedDatasetDisplayName("annotated_displayname")
              .setAnnotatedDatasetDescription("annotated_description")
              .setInstruction(formattedInstructionName)
              .build();

      AnnotationSpecSetConfig annotationSpecSetConfig =
          AnnotationSpecSetConfig.newBuilder()
              .setAnnotationSpecSet(formattedAnnotationSpecSetName)
              .setAllowMultiLabel(true)
              .build();

      VideoClassificationConfig videoClassificationConfig =
          VideoClassificationConfig.newBuilder()
              .setApplyShotDetection(true)
              .addAnnotationSpecSetConfigs(annotationSpecSetConfig)
              .build();

      LabelVideoRequest labelVideoRequest =
          LabelVideoRequest.newBuilder()
              .setParent(formattedDatasetName)
              .setBasicConfig(humanAnnotationConfig)
              .setVideoClassificationConfig(videoClassificationConfig)
              .setFeature(Feature.CLASSIFICATION)
              .build();

      OperationFuture<AnnotatedDataset, LabelOperationMetadata> operation =
          dataLabelingServiceClient.labelVideoAsync(labelVideoRequest);

      // You'll want to save this for later to retrieve your completed operation.
      System.out.format("Operation Name: %s\n", operation.getName());

      // Cancel the operation to avoid charges when testing.
      dataLabelingServiceClient.getOperationsClient().cancelOperation(operation.getName());
    } catch (IOException | InterruptedException | ExecutionException e) {
      e.printStackTrace();
    }
  }
}

视频对象检测

网页界面

  1. 打开数据标签服务界面

  2. 从左侧导航栏中选择数据集

    数据集页面会显示之前为当前项目创建的数据集的状态。

  3. 点击要提交以便加标签的数据集的名称。

    状态为“导入完成”的数据集可供提交。数据类型列显示数据集包含的是图片、视频还是文本。

  4. 数据集详情页面上,点击标题栏中的创建标签任务按钮。

  5. 新建标签任务页面上,为带有注释的数据集输入名称和描述。

    带有注释的数据集是人工标签添加者为数据集加了标签以后的版本。

  6. 目标下拉列表中,选择要对此数据集执行的标签任务类型。

    该下拉列表仅包含可用于此数据集中数据类型的目标。如果您没有看到所需的目标,则可能是因为您选择了包含其他类型数据的数据集。请关闭新建标签任务页面,然后选择其他数据集。

  7. 标签集下拉列表中,选择您希望标签添加者将其应用到此数据集中的数据项的标签集。

    该下拉列表包含与此项目关联的所有标签集。您必须选择一个标签集。

  8. 说明下拉列表中,选择要向处理此数据集的标签添加者提供的说明。

    该下拉列表包含与此项目关联的所有说明。您必须在标签请求中添加说明。

  9. 处理每个数据项的标签添加者数下拉列表中,指定要查看该数据集中每一项的标签添加者数。

    默认值为 1,但您可以请求安排三个或五个标签添加者为每一项加标签。

  10. 点击复选框以确认您了解如何为加标签操作付费。

  11. 点击创建

命令行

设置以下环境变量:
  1. PROJECT_ID 变量设置为您的 Google Cloud 项目 ID。
  2. DATASET_ID 变量设置为您的数据集 ID(来自创建数据集时的响应)。该 ID 显示在完整数据集名称的末尾:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME 设置为说明资源的名称。
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME 设置为标签集资源的名称。
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}/video:label \
  -d '{
  "basicConfig": {
    "instruction": "${INSTRUCTION_RESOURCE_NAME}",
    "annotatedDatasetDisplayName": "curl_testing_annotated_dataset",
    "labelGroup": "test_label_group",
    "replica_count": 1
  },
  "feature": "OBJECT_DETECTION",
  "objectDetectionConfig": {
    "annotationSpecSet": "${ANNOTATION_SPEC_SET_RESOURCE_NAME}",
    "instructionMessage": "Detect an object",
    "extractionFrameRate": 4
  },
}'

您应该会看到类似如下所示的输出。可以使用操作 ID 来获取任务的状态。如需示例,请参阅获取操作状态

{
  "name": "projects/data-labeling-codelab/operations/5c73dd6b_0000_2b34_a920_883d24fa2064",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.data-labeling.v1beta1.LabelVideoObjectDetectionOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}

视频对象跟踪

网页界面

  1. 打开数据标签服务界面

  2. 从左侧导航栏中选择数据集

    数据集页面会显示之前为当前项目创建的数据集的状态。

  3. 点击要提交以便加标签的数据集的名称。

    状态为“导入完成”的数据集可供提交。数据类型列显示数据集包含的是图片、视频还是文本。

  4. 数据集详情页面上,点击标题栏中的创建标签任务按钮。

  5. 新建标签任务页面上,为带有注释的数据集输入名称和描述。

    带有注释的数据集是人工标签添加者为数据集加了标签以后的版本。

  6. 目标下拉列表中,选择要对此数据集执行的标签任务类型。

    该下拉列表仅包含可用于此数据集中数据类型的目标。如果您没有看到所需的目标,则可能是因为您选择了包含其他类型数据的数据集。请关闭新建标签任务页面,然后选择其他数据集。

  7. 标签集下拉列表中,选择您希望标签添加者将其应用到此数据集中的数据项的标签集。

    该下拉列表包含与此项目关联的所有标签集。您必须选择一个标签集。

  8. 说明下拉列表中,选择要向处理此数据集的标签添加者提供的说明。

    该下拉列表包含与此项目关联的所有说明。您必须在标签请求中添加说明。

  9. 处理每个数据项的标签添加者数下拉列表中,指定要查看该数据集中每一项的标签添加者数。

    默认值为 1,但您可以请求安排三个或五个标签添加者为每一项加标签。

  10. 点击复选框以确认您了解如何为加标签操作付费。

  11. 点击创建

命令行

设置以下环境变量:
  1. PROJECT_ID 变量设置为您的 Google Cloud 项目 ID。
  2. DATASET_ID 变量设置为您的数据集 ID(来自创建数据集时的响应)。该 ID 显示在完整数据集名称的末尾:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME 设置为说明资源的名称。
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME 设置为标签集资源的名称。
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}/video:label \
  -d '{
  "basicConfig": {
    "instruction": "${INSTRUCTION_RESOURCE_NAME}",
    "annotatedDatasetDisplayName": "curl_testing_annotated_dataset",
    "labelGroup": "test_label_group",
    "replica_count": 1
  },
  "feature": "OBJECT_TRACKING",
  "objectTrackingConfig": {
    "annotationSpecSet": "${ANNOTATION_SPEC_SET_RESOURCE_NAME}"
  },
}'

您应该会看到类似如下所示的输出。可以使用操作 ID 来获取任务的状态。如需示例,请参阅获取操作状态

{
  "name": "projects/data-labeling-codelab/operations/5c73dd6b_0000_2b34_a920_883d24fa2064",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.data-labeling.v1beta1.LabelVideoObjectTrackingOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}

Python

在运行此代码示例之前,您必须先安装 Python 客户端库
def label_video(
    dataset_resource_name, instruction_resource_name, annotation_spec_set_resource_name
):
    """Labels a video dataset."""
    from google.cloud import datalabeling_v1beta1 as datalabeling

    client = datalabeling.DataLabelingServiceClient()

    basic_config = datalabeling.HumanAnnotationConfig(
        instruction=instruction_resource_name,
        annotated_dataset_display_name="YOUR_ANNOTATED_DATASET_DISPLAY_NAME",
        label_group="YOUR_LABEL_GROUP",
        replica_count=1,
    )

    feature = datalabeling.LabelVideoRequest.Feature.OBJECT_TRACKING

    config = datalabeling.ObjectTrackingConfig(
        annotation_spec_set=annotation_spec_set_resource_name
    )

    response = client.label_video(
        request={
            "parent": dataset_resource_name,
            "basic_config": basic_config,
            "feature": feature,
            "object_tracking_config": config,
        }
    )

    print(f"Label_video operation name: {response.operation.name}")
    return response

视频事件

网页界面

  1. 打开数据标签服务界面

  2. 从左侧导航栏中选择数据集

    数据集页面会显示之前为当前项目创建的数据集的状态。

  3. 点击要提交以便加标签的数据集的名称。

    状态为“导入完成”的数据集可供提交。数据类型列显示数据集包含的是图片、视频还是文本。

  4. 数据集详情页面上,点击标题栏中的创建标签任务按钮。

  5. 新建标签任务页面上,为带有注释的数据集输入名称和描述。

    带有注释的数据集是人工标签添加者为数据集加了标签以后的版本。

  6. 目标下拉列表中,选择要对此数据集执行的标签任务类型。

    该下拉列表仅包含可用于此数据集中数据类型的目标。如果您没有看到所需的目标,则可能是因为您选择了包含其他类型数据的数据集。请关闭新建标签任务页面,然后选择其他数据集。

  7. 标签集下拉列表中,选择您希望标签添加者将其应用到此数据集中的数据项的标签集。

    该下拉列表包含与此项目关联的所有标签集。您必须选择一个标签集。

  8. 说明下拉列表中,选择要向处理此数据集的标签添加者提供的说明。

    该下拉列表包含与此项目关联的所有说明。您必须在标签请求中添加说明。

  9. 处理每个数据项的标签添加者数下拉列表中,指定要查看该数据集中每一项的标签添加者数。

    默认值为 1,但您可以请求安排三个或五个标签添加者为每一项加标签。

  10. 点击复选框以确认您了解如何为加标签操作付费。

  11. 点击创建

命令行

设置以下环境变量:
  1. PROJECT_ID 变量设置为您的 Google Cloud 项目 ID。
  2. DATASET_ID 变量设置为您的数据集 ID(来自创建数据集时的响应)。该 ID 显示在完整数据集名称的末尾:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME 设置为说明资源的名称。
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME 设置为标签集资源的名称。
curl -X POST \
  -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
  -H "Content-Type: application/json" \
  https://datalabeling.googleapis.com/v1beta1/projects/${PROJECT_ID}/datasets/${DATASET_ID}/video:label \
  -d '{
  "basicConfig": {
    "instruction": "${INSTRUCTION_RESOURCE_NAME}",
    "annotatedDatasetDisplayName": "curl_testing_annotated_dataset",
    "labelGroup": "test_label_group",
    "replica_count": 1
  },
  "feature": "EVENT",
  "eventConfig": {
    "annotationSpecSets": ["${ANNOTATION_SPEC_SET_RESOURCE_NAME}]"
  },
}'

您应该会看到类似如下所示的输出。可以使用操作 ID 来获取任务的状态。如需示例,请参阅获取操作状态

{
  "name": "projects/data-labeling-codelab/operations/5c73dd6b_0000_2b34_a920_883d24fa2064",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.data-labeling.v1beta1.LabelVideoEventOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}