동영상 라벨 지정 요청 제출

AI Platform 데이터 라벨링 서비스는 4가지 유형의 동영상 라벨링 태스크를 지원합니다.

  • 분류 작업에서는 라벨 지정자가 각 동영상에 하나 이상의 라벨을 지정합니다. 각 동영상에 라벨을 지정할 라벨러 수를 지정합니다. 5개 이하로 지정하는 것이 좋습니다. 데이터 라벨링 서비스에서는 다수결 원칙에 따라 적절한 라벨을 결정합니다. 동영상에 샷 감지 적용 여부를 지정할 수도 있습니다.
  • 객체 감지 태스크 - 라벨러가 라벨을 선택한 후 동영상에서 추출한 이미지의 일부에 적용할 경계 상자를 한 개 이상 그립니다. 추출한 이미지에서 관심 객체가 모두 표시될 때까지 다른 라벨을 선택해 같은 작업을 반복합니다. 추출 프레임 속도를 지정하여 동영상에서 추출할 이미지 수를 결정할 수 있습니다.
  • 객체 추적 태스크 - 라벨러가 라벨을 선택한 후 경계 상자를 한 개 이상 그려 동영상 일부에서 특정 객체를 표시하고 각 객체를 동영상 전체에서 추적합니다.
  • 이벤트 태스크 - 라벨러가 라벨을 선택한 후 시작 및 종료 시점을 선택하여 동영상에서 라벨을 적용할 세그먼트나 시점을 표시합니다.

동영상 분류

웹 UI

  1. 데이터 라벨링 서비스 UI를 엽니다.

  2. 왼쪽 탐색 메뉴에서 데이터 세트를 선택합니다.

    데이터 세트 페이지에는 현재 프로젝트에 사용할 수 있는 이전에 작성한 데이터 세트의 상태가 표시됩니다.

  3. 라벨 지정을 위해 제출할 데이터 세트의 이름을 클릭합니다.

    상태가 가져오기 완료인 데이터 세트를 제출할 수 있습니다. 데이터 유형 열에서는 데이터 세트에 이미지, 동영상 또는 텍스트가 포함되어 있는지 여부를 확인할 수 있습니다.

  4. 데이터 세트 세부정보 페이지에서 제목 표시줄의 라벨 지정 태스크 만들기 버튼을 클릭합니다.

  5. 새 라벨 지정 태스크 페이지에서 주석을 단 데이터 세트의 이름과 설명을 입력합니다.

    주석 달린 데이터 세트는 수동 라벨 지정자가 라벨을 지정한 후의 데이터 세트 버전입니다.

  6. 목표 드롭다운에서 이 데이터 세트에 대해 수행할 라벨 지정 태스크 유형을 선택합니다.

    드롭다운 목록에는 이 데이터 세트에 있는 데이터 유형에서 지원하는 목표만 표시됩니다. 원하는 객체가 표시되지 않으면 데이터 유형이 다른 데이터 세트를 선택한 것입니다. 새 라벨 지정 태스크 페이지를 닫고 다른 데이터 세트를 선택하세요.

  7. 라벨 세트 드롭다운에서 라벨 지정자가 이 세트에 있는 데이터 항목을 적용할 라벨 세트를 선택합니다.

    드롭다운 목록에 이 프로젝트와 관련된 모든 라벨 세트가 포함됩니다. 반드시 세트를 선택해야 합니다.

  8. 안내 드롭다운에서 이 데이터 세트를 작업 중인 라벨 지정자에게 제공할 안내를 선택합니다.

    드롭다운 목록에 이 프로젝트와 관련된 모든 안내가 포함됩니다. 라벨 지정 요청에 안내를 포함해야 합니다.

  9. 데이터 항목별 라벨 지정자 드롭다운에서 데이터 세트의 각 항목을 검토할 라벨 지정자 수를 지정합니다.

    기본값은 1명이지만, 각 항목에 라벨 지정자를 3명이나 5명 요청할 수도 있습니다.

  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

이 코드 예시를 실행하려면 우선 자바 클라이언트 라이브러리를 설치해야 합니다.
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();
    }
  }
}

동영상 객체 감지

웹 UI

  1. 데이터 라벨링 서비스 UI를 엽니다.

  2. 왼쪽 탐색 메뉴에서 데이터 세트를 선택합니다.

    데이터 세트 페이지에는 현재 프로젝트에 사용할 수 있는 이전에 작성한 데이터 세트의 상태가 표시됩니다.

  3. 라벨 지정을 위해 제출할 데이터 세트의 이름을 클릭합니다.

    상태가 가져오기 완료인 데이터 세트를 제출할 수 있습니다. 데이터 유형 열에서는 데이터 세트에 이미지, 동영상 또는 텍스트가 포함되어 있는지 여부를 확인할 수 있습니다.

  4. 데이터 세트 세부정보 페이지에서 제목 표시줄의 라벨 지정 태스크 만들기 버튼을 클릭합니다.

  5. 새 라벨 지정 태스크 페이지에서 주석을 단 데이터 세트의 이름과 설명을 입력합니다.

    주석 달린 데이터 세트는 수동 라벨 지정자가 라벨을 지정한 후의 데이터 세트 버전입니다.

  6. 목표 드롭다운에서 이 데이터 세트에 대해 수행할 라벨 지정 태스크 유형을 선택합니다.

    드롭다운 목록에는 이 데이터 세트에 있는 데이터 유형에서 지원하는 목표만 표시됩니다. 원하는 객체가 표시되지 않으면 데이터 유형이 다른 데이터 세트를 선택한 것입니다. 새 라벨 지정 태스크 페이지를 닫고 다른 데이터 세트를 선택하세요.

  7. 라벨 세트 드롭다운에서 라벨 지정자가 이 세트에 있는 데이터 항목을 적용할 라벨 세트를 선택합니다.

    드롭다운 목록에 이 프로젝트와 관련된 모든 라벨 세트가 포함됩니다. 반드시 세트를 선택해야 합니다.

  8. 안내 드롭다운에서 이 데이터 세트를 작업 중인 라벨 지정자에게 제공할 안내를 선택합니다.

    드롭다운 목록에 이 프로젝트와 관련된 모든 안내가 포함됩니다. 라벨 지정 요청에 안내를 포함해야 합니다.

  9. 데이터 항목별 라벨 지정자 드롭다운에서 데이터 세트의 각 항목을 검토할 라벨 지정자 수를 지정합니다.

    기본값은 1명이지만, 각 항목에 라벨 지정자를 3명이나 5명 요청할 수도 있습니다.

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

동영상 객체 추적

웹 UI

  1. 데이터 라벨링 서비스 UI를 엽니다.

  2. 왼쪽 탐색 메뉴에서 데이터 세트를 선택합니다.

    데이터 세트 페이지에는 현재 프로젝트에 사용할 수 있는 이전에 작성한 데이터 세트의 상태가 표시됩니다.

  3. 라벨 지정을 위해 제출할 데이터 세트의 이름을 클릭합니다.

    상태가 가져오기 완료인 데이터 세트를 제출할 수 있습니다. 데이터 유형 열에서는 데이터 세트에 이미지, 동영상 또는 텍스트가 포함되어 있는지 여부를 확인할 수 있습니다.

  4. 데이터 세트 세부정보 페이지에서 제목 표시줄의 라벨 지정 태스크 만들기 버튼을 클릭합니다.

  5. 새 라벨 지정 태스크 페이지에서 주석을 단 데이터 세트의 이름과 설명을 입력합니다.

    주석 달린 데이터 세트는 수동 라벨 지정자가 라벨을 지정한 후의 데이터 세트 버전입니다.

  6. 목표 드롭다운에서 이 데이터 세트에 대해 수행할 라벨 지정 태스크 유형을 선택합니다.

    드롭다운 목록에는 이 데이터 세트에 있는 데이터 유형에서 지원하는 목표만 표시됩니다. 원하는 객체가 표시되지 않으면 데이터 유형이 다른 데이터 세트를 선택한 것입니다. 새 라벨 지정 태스크 페이지를 닫고 다른 데이터 세트를 선택하세요.

  7. 라벨 세트 드롭다운에서 라벨 지정자가 이 세트에 있는 데이터 항목을 적용할 라벨 세트를 선택합니다.

    드롭다운 목록에 이 프로젝트와 관련된 모든 라벨 세트가 포함됩니다. 반드시 세트를 선택해야 합니다.

  8. 안내 드롭다운에서 이 데이터 세트를 작업 중인 라벨 지정자에게 제공할 안내를 선택합니다.

    드롭다운 목록에 이 프로젝트와 관련된 모든 안내가 포함됩니다. 라벨 지정 요청에 안내를 포함해야 합니다.

  9. 데이터 항목별 라벨 지정자 드롭다운에서 데이터 세트의 각 항목을 검토할 라벨 지정자 수를 지정합니다.

    기본값은 1명이지만, 각 항목에 라벨 지정자를 3명이나 5명 요청할 수도 있습니다.

  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

동영상 이벤트

웹 UI

  1. 데이터 라벨링 서비스 UI를 엽니다.

  2. 왼쪽 탐색 메뉴에서 데이터 세트를 선택합니다.

    데이터 세트 페이지에는 현재 프로젝트에 사용할 수 있는 이전에 작성한 데이터 세트의 상태가 표시됩니다.

  3. 라벨 지정을 위해 제출할 데이터 세트의 이름을 클릭합니다.

    상태가 가져오기 완료인 데이터 세트를 제출할 수 있습니다. 데이터 유형 열에서는 데이터 세트에 이미지, 동영상 또는 텍스트가 포함되어 있는지 여부를 확인할 수 있습니다.

  4. 데이터 세트 세부정보 페이지에서 제목 표시줄의 라벨 지정 태스크 만들기 버튼을 클릭합니다.

  5. 새 라벨 지정 태스크 페이지에서 주석을 단 데이터 세트의 이름과 설명을 입력합니다.

    주석 달린 데이터 세트는 수동 라벨 지정자가 라벨을 지정한 후의 데이터 세트 버전입니다.

  6. 목표 드롭다운에서 이 데이터 세트에 대해 수행할 라벨 지정 태스크 유형을 선택합니다.

    드롭다운 목록에는 이 데이터 세트에 있는 데이터 유형에서 지원하는 목표만 표시됩니다. 원하는 객체가 표시되지 않으면 데이터 유형이 다른 데이터 세트를 선택한 것입니다. 새 라벨 지정 태스크 페이지를 닫고 다른 데이터 세트를 선택하세요.

  7. 라벨 세트 드롭다운에서 라벨 지정자가 이 세트에 있는 데이터 항목을 적용할 라벨 세트를 선택합니다.

    드롭다운 목록에 이 프로젝트와 관련된 모든 라벨 세트가 포함됩니다. 반드시 세트를 선택해야 합니다.

  8. 안내 드롭다운에서 이 데이터 세트를 작업 중인 라벨 지정자에게 제공할 안내를 선택합니다.

    드롭다운 목록에 이 프로젝트와 관련된 모든 안내가 포함됩니다. 라벨 지정 요청에 안내를 포함해야 합니다.

  9. 데이터 항목별 라벨 지정자 드롭다운에서 데이터 세트의 각 항목을 검토할 라벨 지정자 수를 지정합니다.

    기본값은 1명이지만, 각 항목에 라벨 지정자를 3명이나 5명 요청할 수도 있습니다.

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