Envía solicitudes de etiquetado de video

El Servicio de etiquetado de datos de AI Platform admite cuatro tipos de tareas de etiquetado de video:

  • Tareas de clasificación: Los etiquetadores asignan una o más etiquetas a cada video. Especificas la cantidad de etiquetadores para etiquetar cada video. Recomendamos que el número sea de cinco o menos. El Servicio de etiquetado de datos realiza una votación mayoritaria para determinar las etiquetas adecuadas. También puedes especificar si aplicar o no la detección de tomas en el video.
  • Tareas de detección de objetos: Los etiquetadores eligen una etiqueta y, luego, dibujan uno o más cuadros de límite para aplicar a las partes de la imagen extraída del video. Pueden elegir otra etiqueta y repetir el proceso hasta que no haya más objetos de interés para identificar en la imagen extraída. Puedes especificar la velocidad de fotogramas de extracción para determinar cuántas imágenes extraer del video.
  • Tareas de seguimiento de objetos: Los etiquetadores eligen una etiqueta y, luego, dibujan uno o más cuadros de límite a fin de indicar las partes del video para ciertos objetos y realizan seguimiento de cada uno durante todo el video.
  • Tareas de evento: Los etiquetadores eligen una etiqueta y, luego, la hora de inicio y finalización para aplicar etiquetas al segmento o punto del video.

Clasificación de videos

IU web

  1. Abre la IU del Servicio de etiquetado de datos.

  2. Selecciona Conjuntos de datos en el panel de navegación izquierdo.

    En la página Conjuntos de datos, se muestra el estado de los conjuntos de datos creados anteriormente para el proyecto actual.

  3. Haz clic en el nombre del conjunto de datos que deseas enviar para el etiquetado.

    Los conjuntos de datos con el estado Importación completa están disponibles para enviarse. En la columna Tipo de datos, se muestra si el conjunto de datos incluye imágenes, videos o texto.

  4. En la página Detalle del conjunto de datos, haz clic en el botón Crear tarea de etiquetado en la barra de título.

  5. En la página Nueva tarea de etiquetado, ingresa un nombre y una descripción para el conjunto de datos anotado.

    El conjunto de datos anotado es la versión de este conjunto de datos después de que los etiquetadores manuales lo hayan etiquetado.

  6. En el menú desplegable Objetivo, selecciona el tipo de tarea de etiquetado que deseas realizar en este conjunto de datos.

    En la lista desplegable, se incluyen solo los objetivos disponibles para el tipo de datos de este conjunto de datos. Si no ves el objetivo que deseas, es probable que hayas seleccionado un conjunto de datos con un tipo de datos diferente. Cierra la página Nueva tarea de etiquetado y selecciona un conjunto de datos diferente.

  7. En el menú desplegable Conjunto de etiquetas, elige el conjunto de etiquetas que deseas que los etiquetadores apliquen a los elementos de datos de este conjunto.

    La lista desplegable incluye todos los conjuntos de etiquetas asociados con este proyecto. Debes elegir un conjunto.

  8. En el menú desplegable Instrucción, elige las instrucciones que deseas proporcionar a los etiquetadores que trabajen con este conjunto de datos.

    La lista desplegable incluye todas las instructions asociadas con este proyecto. Debes incluir instrucciones en la solicitud de etiquetado.

  9. En el menú desplegable etiquetadores por elemento de datos, especifica cuántos etiquetadores quieres que revisen cada elemento del conjunto de datos.

    El valor predeterminado es uno, pero puedes solicitar que tres o cinco etiquetadores etiqueten cada elemento.

  10. Haz clic en la casilla de verificación para confirmar que entiendes cómo se te cobrará por el etiquetado.

  11. Haz clic en Crear.

Línea de comandos

Configura las siguientes variables de entorno:
  1. La variable PROJECT_ID para el ID de tu proyecto de Google Cloud
  2. La variable DATASET_ID para el ID del conjunto de datos, a partir de la respuesta obtenida cuando creaste el conjunto de datos. El ID aparece al final del nombre completo del conjunto de datos:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME para el nombre de tu recurso de instrucción
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME para el nombre del recurso de conjunto de etiquetas
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}"],
  },
}'

Deberías ver un resultado similar al siguiente. Puedes usar el ID de operación para obtener el estado de la tarea. Un ejemplo es obtener el estado de una operación.

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

Antes de que puedas ejecutar este ejemplo de código, debes instalar las bibliotecas cliente de 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();
    }
  }
}

Detección de objetos de video

IU web

  1. Abre la IU del Servicio de etiquetado de datos.

  2. Selecciona Conjuntos de datos en el panel de navegación izquierdo.

    En la página Conjuntos de datos, se muestra el estado de los conjuntos de datos creados anteriormente para el proyecto actual.

  3. Haz clic en el nombre del conjunto de datos que deseas enviar para el etiquetado.

    Los conjuntos de datos con el estado Importación completa están disponibles para enviarse. En la columna Tipo de datos, se muestra si el conjunto de datos incluye imágenes, videos o texto.

  4. En la página Detalle del conjunto de datos, haz clic en el botón Crear tarea de etiquetado en la barra de título.

  5. En la página Nueva tarea de etiquetado, ingresa un nombre y una descripción para el conjunto de datos anotado.

    El conjunto de datos anotado es la versión de este conjunto de datos después de que los etiquetadores manuales lo hayan etiquetado.

  6. En el menú desplegable Objetivo, selecciona el tipo de tarea de etiquetado que deseas realizar en este conjunto de datos.

    En la lista desplegable, se incluyen solo los objetivos disponibles para el tipo de datos de este conjunto de datos. Si no ves el objetivo que deseas, es probable que hayas seleccionado un conjunto de datos con un tipo de datos diferente. Cierra la página Nueva tarea de etiquetado y selecciona un conjunto de datos diferente.

  7. En el menú desplegable Conjunto de etiquetas, elige el conjunto de etiquetas que deseas que los etiquetadores apliquen a los elementos de datos de este conjunto.

    La lista desplegable incluye todos los conjuntos de etiquetas asociados con este proyecto. Debes elegir un conjunto.

  8. En el menú desplegable Instrucción, elige las instrucciones que deseas proporcionar a los etiquetadores que trabajen con este conjunto de datos.

    La lista desplegable incluye todas las instructions asociadas con este proyecto. Debes incluir instrucciones en la solicitud de etiquetado.

  9. En el menú desplegable etiquetadores por elemento de datos, especifica cuántos etiquetadores quieres que revisen cada elemento del conjunto de datos.

    El valor predeterminado es uno, pero puedes solicitar que tres o cinco etiquetadores etiqueten cada elemento.

  10. Haz clic en la casilla de verificación para confirmar que entiendes cómo se te cobrará por el etiquetado.

  11. Haz clic en Crear.

Línea de comandos

Configura las siguientes variables de entorno:
  1. La variable PROJECT_ID para el ID de tu proyecto de Google Cloud
  2. La variable DATASET_ID para el ID del conjunto de datos, a partir de la respuesta obtenida cuando creaste el conjunto de datos. El ID aparece al final del nombre completo del conjunto de datos:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME para el nombre de tu recurso de instrucción
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME para el nombre del recurso de conjunto de etiquetas
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
  },
}'

Deberías ver un resultado similar al siguiente. Puedes usar el ID de operación para obtener el estado de la tarea. Un ejemplo es obtener el estado de una operación.

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

Seguimiento de objetos de video

IU web

  1. Abre la IU del Servicio de etiquetado de datos.

  2. Selecciona Conjuntos de datos en el panel de navegación izquierdo.

    En la página Conjuntos de datos, se muestra el estado de los conjuntos de datos creados anteriormente para el proyecto actual.

  3. Haz clic en el nombre del conjunto de datos que deseas enviar para el etiquetado.

    Los conjuntos de datos con el estado Importación completa están disponibles para enviarse. En la columna Tipo de datos, se muestra si el conjunto de datos incluye imágenes, videos o texto.

  4. En la página Detalle del conjunto de datos, haz clic en el botón Crear tarea de etiquetado en la barra de título.

  5. En la página Nueva tarea de etiquetado, ingresa un nombre y una descripción para el conjunto de datos anotado.

    El conjunto de datos anotado es la versión de este conjunto de datos después de que los etiquetadores manuales lo hayan etiquetado.

  6. En el menú desplegable Objetivo, selecciona el tipo de tarea de etiquetado que deseas realizar en este conjunto de datos.

    En la lista desplegable, se incluyen solo los objetivos disponibles para el tipo de datos de este conjunto de datos. Si no ves el objetivo que deseas, es probable que hayas seleccionado un conjunto de datos con un tipo de datos diferente. Cierra la página Nueva tarea de etiquetado y selecciona un conjunto de datos diferente.

  7. En el menú desplegable Conjunto de etiquetas, elige el conjunto de etiquetas que deseas que los etiquetadores apliquen a los elementos de datos de este conjunto.

    La lista desplegable incluye todos los conjuntos de etiquetas asociados con este proyecto. Debes elegir un conjunto.

  8. En el menú desplegable Instrucción, elige las instrucciones que deseas proporcionar a los etiquetadores que trabajen con este conjunto de datos.

    La lista desplegable incluye todas las instructions asociadas con este proyecto. Debes incluir instrucciones en la solicitud de etiquetado.

  9. En el menú desplegable etiquetadores por elemento de datos, especifica cuántos etiquetadores quieres que revisen cada elemento del conjunto de datos.

    El valor predeterminado es uno, pero puedes solicitar que tres o cinco etiquetadores etiqueten cada elemento.

  10. Haz clic en la casilla de verificación para confirmar que entiendes cómo se te cobrará por el etiquetado.

  11. Haz clic en Crear.

Línea de comandos

Configura las siguientes variables de entorno:
  1. La variable PROJECT_ID para el ID de tu proyecto de Google Cloud
  2. La variable DATASET_ID para el ID del conjunto de datos, a partir de la respuesta obtenida cuando creaste el conjunto de datos. El ID aparece al final del nombre completo del conjunto de datos:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME para el nombre de tu recurso de instrucción
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME para el nombre del recurso de conjunto de etiquetas
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}"
  },
}'

Deberías ver un resultado similar al siguiente. Puedes usar el ID de operación para obtener el estado de la tarea. Un ejemplo es obtener el estado de una operación.

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

Antes de que puedas ejecutar este ejemplo de código, debes instalar las bibliotecas cliente de 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

Evento de video

IU web

  1. Abre la IU del Servicio de etiquetado de datos.

  2. Selecciona Conjuntos de datos en el panel de navegación izquierdo.

    En la página Conjuntos de datos, se muestra el estado de los conjuntos de datos creados anteriormente para el proyecto actual.

  3. Haz clic en el nombre del conjunto de datos que deseas enviar para el etiquetado.

    Los conjuntos de datos con el estado Importación completa están disponibles para enviarse. En la columna Tipo de datos, se muestra si el conjunto de datos incluye imágenes, videos o texto.

  4. En la página Detalle del conjunto de datos, haz clic en el botón Crear tarea de etiquetado en la barra de título.

  5. En la página Nueva tarea de etiquetado, ingresa un nombre y una descripción para el conjunto de datos anotado.

    El conjunto de datos anotado es la versión de este conjunto de datos después de que los etiquetadores manuales lo hayan etiquetado.

  6. En el menú desplegable Objetivo, selecciona el tipo de tarea de etiquetado que deseas realizar en este conjunto de datos.

    En la lista desplegable, se incluyen solo los objetivos disponibles para el tipo de datos de este conjunto de datos. Si no ves el objetivo que deseas, es probable que hayas seleccionado un conjunto de datos con un tipo de datos diferente. Cierra la página Nueva tarea de etiquetado y selecciona un conjunto de datos diferente.

  7. En el menú desplegable Conjunto de etiquetas, elige el conjunto de etiquetas que deseas que los etiquetadores apliquen a los elementos de datos de este conjunto.

    La lista desplegable incluye todos los conjuntos de etiquetas asociados con este proyecto. Debes elegir un conjunto.

  8. En el menú desplegable Instrucción, elige las instrucciones que deseas proporcionar a los etiquetadores que trabajen con este conjunto de datos.

    La lista desplegable incluye todas las instructions asociadas con este proyecto. Debes incluir instrucciones en la solicitud de etiquetado.

  9. En el menú desplegable etiquetadores por elemento de datos, especifica cuántos etiquetadores quieres que revisen cada elemento del conjunto de datos.

    El valor predeterminado es uno, pero puedes solicitar que tres o cinco etiquetadores etiqueten cada elemento.

  10. Haz clic en la casilla de verificación para confirmar que entiendes cómo se te cobrará por el etiquetado.

  11. Haz clic en Crear.

Línea de comandos

Configura las siguientes variables de entorno:
  1. La variable PROJECT_ID para el ID de tu proyecto de Google Cloud
  2. La variable DATASET_ID para el ID del conjunto de datos, a partir de la respuesta obtenida cuando creaste el conjunto de datos. El ID aparece al final del nombre completo del conjunto de datos:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME para el nombre de tu recurso de instrucción
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME para el nombre del recurso de conjunto de etiquetas
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}]"
  },
}'

Deberías ver un resultado similar al siguiente. Puedes usar el ID de operación para obtener el estado de la tarea. Un ejemplo es obtener el estado de una operación.

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