Invio di richieste di etichettatura dei video

AI Platform Data Labeling Service supporta quattro tipi di attività di etichettatura video:

  • Attività di classificazione, in cui gli etichettatori assegnano una o più etichette a ciascuna video. Puoi specificare il numero di etichettatori che etichettano ogni video. Ti consigliamo di non superare i cinque valori. Data Labeling Service esegue un voto a maggioranza per determinare le etichette appropriate. Tu puoi anche specificare se applicare o meno il rilevamento inquadrature al video.
  • Attività di rilevamento di oggetti, in cui gli etichettatori scelgono un'etichetta e disegnano uno o più riquadri di delimitazione da applicare alle parti dell'immagine estratta dal video. Possono scegliere un'altra etichetta e ripetere il processo fino a quando non ci sono più oggetti interessanti da identificare nell'immagine estratta. Puoi specificare la frequenza fotogrammi di estrazione per determinare quante immagini estrarre dal video.
  • Attività di monitoraggio degli oggetti, in cui gli etichettatori scelgono un'etichetta, poi disegnano una o altri riquadri di delimitazione per indicare le parti del video relative a determinati oggetti, e continuare a monitorare ciascun oggetto per tutto il video.
  • Attività di evento, in cui gli etichettatori scelgono un'etichetta, poi scelgono l'inizio e la fine di applicare etichette al segmento o al punto nel video.

Classificazione video

UI web

  1. Apri l'UI di Data Labeling Service.

  2. Seleziona Set di dati dal menu di navigazione a sinistra.

    La pagina Set di dati mostra lo stato dei set di dati creati in precedenza per per il progetto attuale.

  3. Fai clic sul nome del set di dati da inviare per l'etichettatura.

    I set di dati con stato Importazione completata possono essere inviati. La sezione Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli del set di dati, fai clic sul pulsante Crea attività di etichettatura nella barra del titolo.

  5. Nella pagina Nuova attività di etichettatura, inserisci un nome e una descrizione per il set di dati annotato.

    Il set di dati annotato è la versione del set di dati dopo che è stato etichettato da etichettatori umani.

  6. Dal menu a discesa Obiettivo, seleziona il tipo di attività di etichettatura da eseguire su questo set di dati.

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo del set di dati. Se non trovi lo scopo che ti interessa, probabilmente significa che hai selezionato con un tipo diverso di dati al suo interno. Chiudi la pagina Nuova attività di etichettatura e seleziona un altro set di dati.

  7. Dal menu a discesa Set di etichette, scegli l'insieme di etichette che vuoi che gli etichettatori applichino agli elementi di dati in questo insieme.

    L'elenco a discesa include tutti i set di etichette. associati a questo progetto. Devi scegliere un set.

  8. Dal menu a discesa Istruzioni, scegli le istruzioni che vuoi fornire al etichettatori che lavorano con questo set di dati.

    L'elenco a discesa include tutte le istruzioni. associati a questo progetto. Devi includere istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa Etichettatori per elemento dati, specifica quanti etichettatori vuoi esaminare ogni elemento del set di dati.

    Il valore predefinito è uno, ma puoi richiedere che ogni elemento venga etichettato da tre o cinque etichettatori.

  10. Fai clic sulla casella di controllo per confermare di aver compreso come ti verranno addebitate le etichette.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID al tuo ID progetto Google Cloud.
  2. DATASET_ID all'ID del set di dati, da la risposta quando hai creato il set di dati. L'ID viene visualizzato alla fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome del tuo risorsa di istruzioni.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome del tuo label set resource.
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}"],
  },
}'

Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per ottenere lo stato dell'attività. Ne è un esempio il recupero dello stato di un'operazione.

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

Prima di poter eseguire questo esempio di codice, è necessario installare Librerie client 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();
    }
  }
}

Rilevamento di oggetti video

UI web

  1. Apri l'UI di Data Labeling Service.

  2. Seleziona Set di dati dal menu di navigazione a sinistra.

    La pagina Set di dati mostra lo stato dei set di dati creati in precedenza per per il progetto attuale.

  3. Fai clic sul nome del set di dati da inviare per l'etichettatura.

    I set di dati con stato Importazione completata possono essere inviati. La sezione Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli del set di dati, fai clic sul pulsante Crea attività di etichettatura nella barra del titolo.

  5. Nella pagina Nuova attività di etichettatura, inserisci un nome e una descrizione per il set di dati annotato.

    Il set di dati annotato è la versione del set di dati dopo che è stato etichettato da etichettatori umani.

  6. Dal menu a discesa Obiettivo, seleziona il tipo di attività di etichettatura da eseguire su questo set di dati.

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo del set di dati. Se non trovi lo scopo che ti interessa, probabilmente significa che hai selezionato con un tipo diverso di dati al suo interno. Chiudi la pagina Nuova attività di etichettatura e seleziona un altro set di dati.

  7. Dal menu a discesa Set di etichette, scegli l'insieme di etichette che vuoi che gli etichettatori applichino agli elementi di dati in questo insieme.

    L'elenco a discesa include tutti i set di etichette. associati a questo progetto. Devi scegliere un insieme.

  8. Dal menu a discesa Istruzioni, scegli le istruzioni che vuoi fornire al etichettatori che lavorano con questo set di dati.

    L'elenco a discesa include tutte le istruzioni. associati a questo progetto. Devi includere istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa Etichettatori per elemento dati, specifica quanti etichettatori vuoi esaminare ogni elemento del set di dati.

    Il valore predefinito è uno, ma puoi richiedere che ogni elemento venga etichettato da tre o cinque etichettatori.

  10. Fai clic sulla casella di controllo per confermare di aver compreso come ti verranno addebitate le etichette.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID al tuo ID progetto Google Cloud.
  2. DATASET_ID all'ID del set di dati, da la risposta quando hai creato il set di dati. L'ID si trova nella fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome del tuo risorsa di istruzioni.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa set di etichette.
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
  },
}'

Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per ottenere lo stato dell'attività. Ottenere lo stato di un'operazione è un esempio.

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

Rilevamento oggetti video

UI web

  1. Apri l'UI di Data Labeling Service.

  2. Seleziona Set di dati dal menu di navigazione a sinistra.

    La pagina Set di dati mostra lo stato dei set di dati creati in precedenza per per il progetto attuale.

  3. Fai clic sul nome del set di dati da inviare per l'etichettatura.

    I set di dati con stato Importazione completata possono essere inviati. La sezione Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli del set di dati, fai clic sul pulsante Crea attività di etichettatura nella barra del titolo.

  5. Nella pagina Nuova attività di etichettatura, inserisci un nome e una descrizione per il set di dati annotato.

    Il set di dati annotato è la versione del set di dati dopo che è stato etichettato da etichettatori umani.

  6. Dal menu a discesa Obiettivo, seleziona il tipo di attività di etichettatura da eseguire su questo set di dati.

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo del set di dati. Se non trovi lo scopo che ti interessa, probabilmente significa che hai selezionato con un tipo diverso di dati al suo interno. Chiudi la pagina Nuova attività di etichettatura e seleziona un altro set di dati.

  7. Dal menu a discesa Set di etichette, scegli il set di etichette a cui vuoi che vengano applicati gli etichettatori agli elementi dati di questo set.

    L'elenco a discesa include tutti i set di etichette. associati a questo progetto. Devi scegliere un set.

  8. Dal menu a discesa Istruzioni, scegli le istruzioni che vuoi fornire al etichettatori che lavorano con questo set di dati.

    L'elenco a discesa include tutte le istruzioni. associati a questo progetto. Devi includere istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa Etichettatori per elemento dati, specifica quanti etichettatori vuoi esaminare ogni elemento del set di dati.

    Il valore predefinito è uno, ma puoi richiedere che ogni elemento venga etichettato da tre o cinque etichettatori.

  10. Fai clic sulla casella di controllo per confermare di aver compreso come ti verranno addebitate le etichette.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID al tuo ID progetto Google Cloud.
  2. DATASET_ID all'ID del set di dati, da la risposta quando hai creato il set di dati. L'ID si trova nella fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome del tuo risorsa di istruzioni.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome del tuo label set resource.
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}"
  },
}'

Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per recuperare lo stato dell'attività. Ottenere lo stato di un'operazione è un esempio.

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

Prima di poter eseguire questo esempio di codice, è necessario installare Librerie client 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 video

UI web

  1. Apri l'interfaccia utente di Data Labeling Service.

  2. Seleziona Set di dati dal menu di navigazione a sinistra.

    La pagina Set di dati mostra lo stato dei set di dati creati in precedenza per per il progetto attuale.

  3. Fai clic sul nome del set di dati da inviare per l'etichettatura.

    I set di dati con stato Importazione completata possono essere inviati. La sezione Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli del set di dati, fai clic sul pulsante Crea attività di etichettatura nella barra del titolo.

  5. Nella pagina Nuova attività di etichettatura, inserisci un nome e una descrizione per il set di dati annotato.

    Il set di dati annotato è la versione del set di dati dopo che è stato etichettato da etichettatori umani.

  6. Dal menu a discesa Obiettivo, seleziona il tipo di attività di etichettatura da eseguire su questo set di dati.

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo del set di dati. Se non trovi lo scopo che ti interessa, probabilmente significa che hai selezionato con un tipo diverso di dati al suo interno. Chiudi la pagina Nuova attività di etichettatura e seleziona un altro set di dati.

  7. Dal menu a discesa Set di etichette, scegli il set di etichette a cui vuoi che vengano applicati gli etichettatori agli elementi dati di questo set.

    L'elenco a discesa include tutti i set di etichette. associati a questo progetto. Devi scegliere un insieme.

  8. Dal menu a discesa Istruzioni, scegli le istruzioni che vuoi fornire al etichettatori che lavorano con questo set di dati.

    L'elenco a discesa include tutte le istruzioni. associati a questo progetto. Devi includere istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa Etichettatori per elemento dati, specifica quanti etichettatori vuoi esaminare ogni elemento del set di dati.

    Il valore predefinito è uno, ma puoi richiedere che ogni elemento venga etichettato da tre o cinque etichettatori.

  10. Fai clic sulla casella di controllo per confermare di aver compreso come ti verranno addebitate le etichette.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID al tuo ID progetto Google Cloud.
  2. DATASET_ID all'ID del set di dati, da la risposta quando hai creato il set di dati. L'ID si trova nella fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome del tuo risorsa di istruzioni.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa set di etichette.
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}]"
  },
}'

Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per recuperare lo stato dell'attività. Ne è un esempio il recupero dello stato di un'operazione.

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