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 ogni video. Specifica il numero di etichettatori per etichettare ogni video. Consigliamo di non superare il numero di cinque. Data Labeling Service esegue un voto a maggioranza per determinare le etichette appropriate. 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 la procedura 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, quindi disegnano uno o più riquadri di delimitazione per indicare le parti del video relative a determinati oggetti e continuano a monitorare ogni oggetto per l'intero video.
  • Attività relative agli eventi, in cui gli etichettatori scelgono un'etichetta e poi l'ora di inizio e di fine per applicare le etichette al segmento o al punto del video.

Classificazione 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 il progetto corrente.

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

    I set di dati con stato Importazione completata possono essere inviati. La colonna Tipo di dati indica 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 del set di dati dopo che è stato etichettato da etichettatori umani.

  6. Dal menu a discesa Scopi, 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 set di dati. Se non vedi lo scopo che ti interessa, probabilmente hai selezionato un set di dati con un tipo di dati diverso. 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. Nell'elenco a discesa Istruzioni, scegli le istruzioni da fornire ai collaboratori che lavorano con questo set di dati.

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

  9. Dal menu a discesa Labeler per elemento di dati, specifica il numero di labeler che vuoi incaricati di esaminare ogni elemento del set di dati.

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

  10. Fai clic sulla casella di controllo per confermare di aver compreso la modalità di addebito dell'etichettatura.

  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 alla variabile ID del set di dati, dalla risposta al momento della creazione del 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 della 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": "CLASSIFICATION",
  "videoClassificationConfig": {
    "annotationSpecSetConfigs": ["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.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 dal menu di navigazione a sinistra.

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

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

    I set di dati con stato Importazione completata possono essere inviati. La colonna Tipo di dati indica 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 del set di dati dopo che è stato etichettato da etichettatori umani.

  6. Dal menu a discesa Scopi, 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 set di dati. Se non vedi lo scopo che ti interessa, probabilmente hai selezionato un set di dati con un tipo di dati diverso. 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. Nell'elenco a discesa Istruzioni, scegli le istruzioni da fornire ai collaboratori che lavorano con questo set di dati.

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

  9. Dal menu a discesa Labeler per elemento di dati, specifica il numero di labeler che vuoi incaricati di esaminare ogni elemento del set di dati.

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

  10. Fai clic sulla casella di controllo per confermare di aver compreso la modalità di addebito dell'etichettatura.

  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 alla variabile ID del set di dati, dalla risposta al momento della creazione del 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 della 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 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.LabelVideoObjectDetectionOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}

Rilevamento oggetti 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 il progetto corrente.

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

    I set di dati con stato Importazione completata possono essere inviati. La colonna Tipo di dati indica 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 del set di dati dopo che è stato etichettato da etichettatori umani.

  6. Dal menu a discesa Scopi, 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 set di dati. Se non vedi lo scopo che ti interessa, probabilmente hai selezionato un set di dati con un tipo di dati diverso. 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. Nell'elenco a discesa Istruzioni, scegli le istruzioni da fornire ai collaboratori che lavorano con questo set di dati.

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

  9. Dal menu a discesa Labeler per elemento di dati, specifica il numero di labeler che vuoi incaricati di esaminare ogni elemento del set di dati.

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

  10. Fai clic sulla casella di controllo per confermare di aver compreso la modalità di addebito dell'etichettatura.

  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 alla variabile ID del set di dati, dalla risposta al momento della creazione del 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 della 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_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, devi installare le 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 il progetto corrente.

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

    I set di dati con stato Importazione completata possono essere inviati. La colonna Tipo di dati indica 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 del set di dati dopo che è stato etichettato da etichettatori umani.

  6. Dal menu a discesa Scopi, 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 set di dati. Se non vedi lo scopo che ti interessa, probabilmente hai selezionato un set di dati con un tipo di dati diverso. 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. Nell'elenco a discesa Istruzioni, scegli le istruzioni da fornire ai collaboratori che lavorano con questo set di dati.

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

  9. Dal menu a discesa Labeler per elemento di dati, specifica il numero di labeler che vuoi incaricati di esaminare ogni elemento del set di dati.

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

  10. Fai clic sulla casella di controllo per confermare di aver compreso la modalità di addebito dell'etichettatura.

  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 alla variabile ID del set di dati, dalla risposta al momento della creazione del 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 della 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à. 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.LabelVideoEventOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}