Invio di richieste di etichettatura delle immagini in corso...

AI Platform Data Labeling Service supporta sei tipi di attività di etichettatura delle immagini:

  • Classificazione, in cui gli etichettatori assegnano una o più etichette a ogni immagine.
  • Riquadri di delimitazione, in cui gli etichettatori scelgono un'etichetta e poi disegna una o più riquadri di delimitazione per applicare l'etichetta alle parti dell'immagine.
  • Attività relativa al riquadro di delimitazione orientata, in modo simile alle attività relative al riquadro di delimitazione in cui i riquadri di delimitazione sono allineati all'asse x, mentre il riquadro di delimitazione orientato può essere in qualsiasi direzione
  • Poligono di delimitazione, simile al riquadro di delimitazione, in cui gli etichettatori scelgono un'etichetta e disegna poligoni chiusi per applicare l'etichetta alle parti dell'immagine.
  • Attività con polilinee, simili a quelle con riquadro di delimitazione, in cui gli etichettatori scelgono un'etichetta e disegnano polilinee per applicarla alle parti dell'immagine. Una polilinea consiste in un elenco di almeno due punti collegati end-to-end da segmenti di linea.
  • Attività di segmentazione, in cui gli etichettatori generano maschere per ogni etichetta. L'output è una tabella di mappatura dei colori che mappa l'etichetta al colore.

Attività di classificazione delle immagini

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 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 del set di dati. Se non vedi l'obiettivo 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, seleziona 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 selezionare un set di etichette.

  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 le istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa Etichettatori per elemento dati, specifica il numero di etichettatori che vuoi esaminare ogni singolo elemento del set di dati.

    Il valore predefinito è 1, ma puoi richiedere a tre o cinque labeler di etichettare ogni elemento.

  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}/image:label \
  -d '{
  "basicConfig": {
    "instruction": "${INSTRUCTION_RESOURCE_NAME}",
    "annotatedDatasetDisplayName": "curl_testing_annotated_dataset",
    "labelGroup": "test_label_group",
    "replica_count": 1
  },
  "feature": "TEXT_CLASSIFICATION",
  "imageClassificationConfig": {
    "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.LabelImageClassificationOperationMetadata",
    "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_image(
    dataset_resource_name, instruction_resource_name, annotation_spec_set_resource_name
):
    """Labels an image 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.LabelImageRequest.Feature.CLASSIFICATION

    # annotation_spec_set_resource_name needs to be created beforehand.
    # See the examples in the following:
    # https://cloud.google.com/ai-platform/data-labeling/docs/label-sets
    config = datalabeling.ImageClassificationConfig(
        annotation_spec_set=annotation_spec_set_resource_name,
        allow_multi_label=False,
        answer_aggregation_type=datalabeling.StringAggregationType.MAJORITY_VOTE,
    )

    response = client.label_image(
        request={
            "parent": dataset_resource_name,
            "basic_config": basic_config,
            "feature": feature,
            "image_classification_config": config,
        }
    )

    print(f"Label_image operation name: {response.operation.name}")
    return response

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.ImageClassificationConfig;
import com.google.cloud.datalabeling.v1beta1.LabelImageRequest;
import com.google.cloud.datalabeling.v1beta1.LabelImageRequest.Feature;
import com.google.cloud.datalabeling.v1beta1.LabelOperationMetadata;
import com.google.cloud.datalabeling.v1beta1.StringAggregationType;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class LabelImage {

  // Start an Image Labeling Task
  static void labelImage(
      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();

      ImageClassificationConfig imageClassificationConfig =
          ImageClassificationConfig.newBuilder()
              .setAllowMultiLabel(true)
              .setAnswerAggregationType(StringAggregationType.MAJORITY_VOTE)
              .setAnnotationSpecSet(formattedAnnotationSpecSetName)
              .build();

      LabelImageRequest labelImageRequest =
          LabelImageRequest.newBuilder()
              .setParent(formattedDatasetName)
              .setBasicConfig(humanAnnotationConfig)
              .setImageClassificationConfig(imageClassificationConfig)
              .setFeature(Feature.CLASSIFICATION)
              .build();

      OperationFuture<AnnotatedDataset, LabelOperationMetadata> operation =
          dataLabelingServiceClient.labelImageAsync(labelImageRequest);

      // 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();
    }
  }
}

Riquadri di delimitazione

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 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 del set di dati. Se non vedi l'obiettivo 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, seleziona 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 selezionare un insieme di etichette.

  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. associati a questo progetto. Devi includere istruzioni nella richiesta di etichettatura.

  9. Dal menu a discesa Etichettatori per elemento dati, specifica il numero di etichettatori che vuoi esaminare ogni singolo elemento del set di dati.

    Il valore predefinito è 1, ma puoi richiedere a tre o cinque labeler di etichettare ogni elemento.

  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 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 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}/image:label \
  -d '{
  "basicConfig": {
    "instruction": "${INSTRUCTION_RESOURCE_NAME}",
    "annotatedDatasetDisplayName": "curl_testing_annotated_dataset",
    "labelGroup": "test_label_group",
    "replica_count": 1
  },
  "feature": "BOUNDING_BOX",
  "boundingPolyConfig": {
    "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.LabelImageBoundingBoxOperationMetadata",
    "dataset": "projects/data-labeling-codelab/datasets/5c73db3d_0000_23e0_a25b_94eb2c119c4c"
  }
}