Inviare richieste di etichettatura dei video

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

  • Attività di classificazione, in cui gli etichettatori assegnano una o più etichette a ciascun video. Devi specificare il numero di etichettatori che assegnano etichette a ogni video. Ti consigliamo di indicare un numero pari o inferiore a 5. Data Labeling Service vota a maggioranza per determinare le etichette appropriate. Puoi anche specificare se applicare o meno il rilevamento inquadrature al tuo video.
  • Attività di rilevamento degli oggetti, in cui gli etichettatori scelgono un'etichetta e poi disegnano uno o più riquadri di delimitazione da applicare alle parti dell'immagine estratta dal video. Può 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 uno o più riquadri di delimitazione per indicare le parti del video relative a determinati oggetti e continuare a monitorare ciascun oggetto per l'intero video.
  • Attività evento, in cui gli etichettatori scelgono un'etichetta, poi scelgono l'ora di inizio e di fine per applicare le etichette al segmento o al punto nel video.

Classificazione di video

UI web

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

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

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

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

    Puoi inviare set di dati con stato Importazione completata. La colonna Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli 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 di questo set di dati dopo che gli etichettatori umani lo hanno etichettato.

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

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo set di dati. Se non vedi l'obiettivo che cerchi, è probabile che tu abbia selezionato un set di dati contenente un tipo diverso di dati. Chiudi la pagina Nuova attività di etichettatura e seleziona un set di dati diverso.

  7. Nel menu a discesa Set di etichette, scegli il set di etichette che desideri applicare agli elementi di dati contenuti in 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 agli etichettatori che lavorano con questo set di dati.

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

  9. Nel menu a discesa etichettatori per elemento di dati, specifica quanti etichettatori devono poter esaminare ogni elemento nel 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 le modalità di addebito dell'etichettatura.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID all'ID progetto Google Cloud.
  2. DATASET_ID all'ID del tuo set di dati, dalla risposta al momento della creazione del set di dati. L'ID si trova alla fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome della tua risorsa di istruzione.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa del 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": "CLASSIFICATION",
  "videoClassificationConfig": {
    "annotationSpecSetConfigs": ["annotationSpecSet": "${ANNOTATION_SPEC_SET_RESOURCE_NAME}"],
  },
}'

Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per conoscere lo stato dell'attività. Recupero dello 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.LabelVideoClassificationOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}

Java

Prima di poter eseguire questo esempio di codice, devi installare le 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'interfaccia utente di Data Labeling Service.

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

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

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

    Puoi inviare set di dati con stato Importazione completata. La colonna Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli 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 di questo set di dati dopo che gli etichettatori umani lo hanno etichettato.

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

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo set di dati. Se non vedi l'obiettivo che cerchi, è probabile che tu abbia selezionato un set di dati contenente un tipo diverso di dati. Chiudi la pagina Nuova attività di etichettatura e seleziona un set di dati diverso.

  7. Nel menu a discesa Set di etichette, scegli il set di etichette che desideri applicare agli elementi di dati contenuti in 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 agli etichettatori che lavorano con questo set di dati.

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

  9. Nel menu a discesa etichettatori per elemento di dati, specifica quanti etichettatori devono poter esaminare ogni elemento nel 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 le modalità di addebito dell'etichettatura.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID all'ID progetto Google Cloud.
  2. DATASET_ID all'ID del tuo set di dati, dalla risposta al momento della creazione del set di dati. L'ID si trova alla fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome della tua risorsa di istruzione.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa del 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 conoscere lo stato dell'attività. Recupero dello 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 di oggetti video

UI web

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

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

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

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

    Puoi inviare set di dati con stato Importazione completata. La colonna Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli 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 di questo set di dati dopo che gli etichettatori umani lo hanno etichettato.

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

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo set di dati. Se non vedi l'obiettivo che cerchi, è probabile che tu abbia selezionato un set di dati contenente un tipo diverso di dati. Chiudi la pagina Nuova attività di etichettatura e seleziona un set di dati diverso.

  7. Nel menu a discesa Set di etichette, scegli il set di etichette che desideri applicare agli elementi di dati contenuti in 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 agli etichettatori che lavorano con questo set di dati.

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

  9. Nel menu a discesa etichettatori per elemento di dati, specifica quanti etichettatori devono poter esaminare ogni elemento nel 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 le modalità di addebito dell'etichettatura.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID all'ID progetto Google Cloud.
  2. DATASET_ID all'ID del tuo set di dati, dalla risposta al momento della creazione del set di dati. L'ID si trova alla fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome della tua risorsa di istruzione.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa del 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_TRACKING",
  "objectTrackingConfig": {
    "annotationSpecSet": "${ANNOTATION_SPEC_SET_RESOURCE_NAME}"
  },
}'

Dovresti vedere un output simile al seguente. Puoi utilizzare l'ID operazione per conoscere lo stato dell'attività. Recupero dello 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, devi installare le librerie client di 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 nel menu di navigazione a sinistra.

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

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

    Puoi inviare set di dati con stato Importazione completata. La colonna Tipo di dati mostra se il set di dati include immagini, video o testo.

  4. Nella pagina Dettagli 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 di questo set di dati dopo che gli etichettatori umani lo hanno etichettato.

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

    L'elenco a discesa include solo gli obiettivi disponibili per il tipo di dati in questo set di dati. Se non vedi l'obiettivo che cerchi, è probabile che tu abbia selezionato un set di dati contenente un tipo diverso di dati. Chiudi la pagina Nuova attività di etichettatura e seleziona un set di dati diverso.

  7. Nel menu a discesa Set di etichette, scegli il set di etichette che desideri applicare agli elementi di dati contenuti in 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 agli etichettatori che lavorano con questo set di dati.

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

  9. Nel menu a discesa etichettatori per elemento di dati, specifica quanti etichettatori devono poter esaminare ogni elemento nel 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 le modalità di addebito dell'etichettatura.

  11. Fai clic su Crea.

Riga di comando

Imposta le seguenti variabili di ambiente:
  1. PROJECT_ID all'ID progetto Google Cloud.
  2. DATASET_ID all'ID del tuo set di dati, dalla risposta al momento della creazione del set di dati. L'ID si trova alla fine del nome completo del set di dati:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME al nome della tua risorsa di istruzione.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME al nome della risorsa del 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 conoscere lo stato dell'attività. Recupero dello 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.LabelVideoEventOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}