Anleitung für menschliche Labelersteller verfassen

Eine Anleitung stellt dem menschlichen Labelersteller Informationen darüber zur Verfügung, wie er Ihre Daten mit Labels kennzeichnen soll. Die Anleitung sollte Beispiele für Daten mit Labels und andere explizite Hinweise enthalten.

AI Platform Data Labeling Service unterstützt PDF-Anleitungen:

  • PDF-Anleitungen. PDF-Anleitungen können komplexe Hinweise wie positive und negative Beispiele oder Beschreibungen für jeden Fall enthalten. Außerdem ist es sinnvoll, für einige komplizierte Aufgaben wie Bildbegrenzungsrahmen oder Videoobjekt-Tracking Hinweise zu erstellen.

Ein Projekt kann mehrere Anleitungen enthalten, die jeweils für eine bestimmte Anfrage des Data Labeling Service verwendet werden. Sie können eine Liste der verfügbaren Anleitungen abrufen und Anleitungen löschen, die Sie nicht mehr benötigen. Weitere Informationen finden Sie auf der Seite für Anleitungsressourcen.

Effektive Anleitungen entwerfen

Eine effektive Anleitung ist der wichtigste Faktor für zufriedenstellende Ergebnisse bei der menschlichen Labelerstellung. Da Sie Ihren Anwendungsfall am besten kennen, müssen Sie den menschlichen Labelerstellern mitteilen, was sie tun sollen. Hier finden Sie einige Richtlinien für die Erstellung einer effektiven Anleitung:

  • Die menschlichen Labelersteller haben nicht Ihre Kenntnisse in Ihrem Fachgebiet. Die Unterscheidungen, die Labelersteller treffen sollen, müssen deshalb auch für Personen verständlich sein, die nicht mit Ihrem Anwendungsfall vertraut sind.

  • Vermeiden Sie zu lange Anleitungen. Am besten ist es, wenn ein Labelersteller sie innerhalb von 20 Minuten lesen und verstehen kann.

  • In der Anleitung sollte das Konzept der Aufgabe beschrieben und im Detail angegeben werden, wie die Daten mit Labels versehen werden sollen. Beispiel: Bei einer Aufgabe für Begrenzungsrahmen müssen Sie beschreiben, wie der Labelersteller einen Begrenzungsrahmen zeichnen soll. Soll es sich um einen engen oder um einen mit Abstand gezogenen Rahmen handeln? Wenn es mehrere Exemplare des Objekts gibt, sollte derjenige einen großen Begrenzungsrahmen oder mehrere kleinere Rahmen zeichnen?

  • Wenn Ihre Anleitungen einen entsprechenden Labelsatz enthalten, sollten alle Labels in diesem Satz behandelt werden. Der Labelname in der Anleitung sollte mit dem Namen im Labelsatz übereinstimmen.

  • Oft sind mehrere Wiederholungen für das Erstellen einer effektiven Anleitung erforderlich. Wir empfehlen Ihnen, zuerst ein kleines Dataset mit Labeln zu versehen und dann Ihre Anleitungen entsprechend den Ergebnissen anzupassen, die zurückgeliefert werden.

Eine effektive Anleitung sollte die folgenden Abschnitte enthalten:

  • Labelliste und -beschreibung: Listen Sie alle Labels auf, die Sie verwenden möchten, und beschreiben Sie die Bedeutung der einzelnen Labels.
  • Beispiele: Geben Sie für jedes Label mindestens drei positive und ein negatives Beispiel an. Die Beispiele sollten verschiedene Fälle abdecken.
  • Beziehen Sie Grenzfälle ein. Klären Sie möglichst viele Randfälle, sodass der Labelersteller die Labels nicht mehr interpretieren muss. Wenn beispielsweise ein Begrenzungsrahmen um eine Person gezeichnet werden soll, ist es besser, vorab Folgendes zu klären:
    • Benötigen Sie, wenn es mehrere Personen gibt, für jede Person einen eigenen Rahmen?
    • Benötigen Sie einen Rahmen, wenn eine Person verdeckt ist?
    • Benötigen Sie einen Rahmen für eine Person, die nur teilweise im Bild zu sehen ist?
    • Benötigen Sie einen Rahmen für eine Person auf einer Abbildung oder auf einem Gemälde?
  • Beschreiben Sie, wie Annotationen hinzugefügt werden sollen. Beispiel:
    • Benötigen Sie einen eng oder einen mit Abstand gezogenen Begrenzungsrahmen?
    • Wo beginnt bei der Extraktion von Textentitäten die jeweilige Entität und wo endet sie?
  • Klarstellung zu Labels: Wenn zwei Labels ähnlich oder leicht zu verwechseln sind, geben Sie Beispiele an, die den Unterschied verdeutlichen.

Anleitung erstellen

PDF-Anleitungen

Die folgenden Beispiele zeigen, was in PDF-Anleitungen enthalten sein kann. Labelersteller prüfen die Anleitung, bevor sie mit der Aufgabe beginnen.

PDF-Anleitung 1

PDF-Anleitung 2

Sie können die Anleitung erstellen, wenn Sie eine Google Präsentation erstellen und die Folien dann als PDF-Datei exportieren.

Anleitung in ein Projekt einfügen

Web-UI

  1. Rufen Sie die Data Labeling Service-UI auf.

    Auf der Seite Anleitung wird der Status der bisher erstellten Anleitungen für das aktuelle Projekt angezeigt.

    Wenn Sie eine Anleitung für ein anderes Projekt einfügen möchten, wählen Sie das Projekt rechts oben in der Titelleiste in der Drop-down-Liste aus.

  2. Klicken Sie in der Titelleiste auf die Schaltfläche Erstellen.

  3. Geben Sie auf der Seite Neue Anleitung einen Namen und eine Beschreibung für die Anleitungsdatei ein.

  4. Wählen Sie in der Drop-down-Liste Datentyp den Typ der Datenelemente aus, die von den Labelerstellern mit Labels versehen werden sollen: Bilder, Video oder Text.

  5. Geben Sie im Bereich Speicherort für Anleitungen den vollständigen Pfad zur Anleitungsdatei ein.

    Sie müssen eine PDF-Anleitungsdatei angeben. Die Datei muss sich im selben Google Cloud Storage-Bucket wie das Dataset und der Labelsatz befinden.

  6. Klicken Sie auf Anleitung erstellen.

    Es wird wieder die Seite mit der Liste Anleitung angezeigt. Der Status Ihrer Anleitung lautet "In Bearbeitung", während Ihre Anleitungen importiert werden.

Befehlszeile

Im folgenden Beispiel wird ein Labelsatz mit dem Namen test_spec_set_display_name erstellt. Dazu müssen die Umgebungsvariablen PROJECT_ID und GCS_PDF_FILE_PATH definiert sein und auf Ihre Google Cloud-Projekt-ID bzw. auf den Cloud Storage-URI der PDF-Datei verweisen, die Sie verwenden möchten.
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}/instructions \
     -d '{
         "instruction": {
             "displayName": "curl_testing_instruction",
             "description": "instruction for curl commands testing",
             "dataType": "IMAGE",
           "pdfInstruction": {
                 "gcsFileUri": "${GCS_PDF_FILE_PATH}"
           }
         },
     }'

Die Ausgabe sollte in etwa so aussehen:

{
  "name": "projects/data-labeling-codelab/instructions/5c73dbc1_0000_23e0_a25b_94eb2c119c4c"
}

Python

Für dieses Codebeispiel müssen die Python-Clientbibliotheken installiert sein.

PdfInstruction sollte angegeben werden. Bei Anleitungen für andere Datentypen ersetzen Sie den dataType "IMAGE" durch die entsprechenden Datentypen.

def create_instruction(project_id, data_type, instruction_gcs_uri):
    """Creates a data labeling PDF instruction for the given Google Cloud
    project. The PDF file should be uploaded to the project in
    Google Cloud Storage.
    """
    from google.cloud import datalabeling_v1beta1 as datalabeling

    client = datalabeling.DataLabelingServiceClient()

    project_path = f"projects/{project_id}"

    pdf_instruction = datalabeling.PdfInstruction(gcs_file_uri=instruction_gcs_uri)

    instruction = datalabeling.Instruction(
        display_name="YOUR_INSTRUCTION_DISPLAY_NAME",
        description="YOUR_DESCRIPTION",
        data_type=data_type,
        pdf_instruction=pdf_instruction,
    )

    operation = client.create_instruction(
        request={"parent": project_path, "instruction": instruction}
    )

    result = operation.result()

    # The format of the resource name:
    # project_id/{project_id}/instruction/{instruction_id}
    print(f"The instruction resource name: {result.name}")
    print(f"Display name: {result.display_name}")
    print(f"Description: {result.description}")
    print("Create time:")
    print(f"\tseconds: {result.create_time.timestamp_pb().seconds}")
    print(f"\tnanos: {result.create_time.timestamp_pb().nanos}")
    print(f"Data type: {datalabeling.DataType(result.data_type).name}")
    print("Pdf instruction:")
    print(f"\tGcs file uri: {result.pdf_instruction.gcs_file_uri}\n")

    return result

Java

Für dieses Codebeispiel müssen die Java-Clientbibliotheken installiert sein.

PdfInstruction sollte angegeben werden. Bei Anleitungen für andere Datentypen ersetzen Sie den dataType "IMAGE" durch die entsprechenden Datentypen.

import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.datalabeling.v1beta1.CreateInstructionMetadata;
import com.google.cloud.datalabeling.v1beta1.CreateInstructionRequest;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceClient;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceSettings;
import com.google.cloud.datalabeling.v1beta1.DataType;
import com.google.cloud.datalabeling.v1beta1.Instruction;
import com.google.cloud.datalabeling.v1beta1.PdfInstruction;
import com.google.cloud.datalabeling.v1beta1.ProjectName;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class CreateInstruction {

  // Create a instruction for a dataset.
  static void createInstruction(String projectId, String pdfUri) throws IOException {
    // String projectId = "YOUR_PROJECT_ID";
    // String pdfUri = "gs://YOUR_BUCKET_ID/path_to_pdf_or_csv";


    DataLabelingServiceSettings settings =
        DataLabelingServiceSettings.newBuilder()
            .build();
    try (DataLabelingServiceClient dataLabelingServiceClient =
        DataLabelingServiceClient.create(settings)) {
      ProjectName projectName = ProjectName.of(projectId);

      // There are two types of instructions: CSV (CsvInstruction) or PDF (PdfInstruction)
      PdfInstruction pdfInstruction = PdfInstruction.newBuilder().setGcsFileUri(pdfUri).build();

      Instruction instruction =
          Instruction.newBuilder()
              .setDisplayName("YOUR_INSTRUCTION_DISPLAY_NAME")
              .setDescription("YOUR_DESCRIPTION")
              .setDataType(DataType.IMAGE) // DataTypes: AUDIO, IMAGE, VIDEO, TEXT
              .setPdfInstruction(pdfInstruction) // .setCsvInstruction() or .setPdfInstruction()
              .build();

      CreateInstructionRequest createInstructionRequest =
          CreateInstructionRequest.newBuilder()
              .setInstruction(instruction)
              .setParent(projectName.toString())
              .build();

      OperationFuture<Instruction, CreateInstructionMetadata> operation =
          dataLabelingServiceClient.createInstructionAsync(createInstructionRequest);

      Instruction result = operation.get();

      System.out.format("Name: %s\n", result.getName());
      System.out.format("DisplayName: %s\n", result.getDisplayName());
      System.out.format("Description: %s\n", result.getDescription());
      System.out.format("GCS SOURCE URI: %s\n", result.getPdfInstruction().getGcsFileUri());
    } catch (IOException | InterruptedException | ExecutionException e) {
      e.printStackTrace();
    }
  }
}

Anleitung in einem Projekt aktualisieren

Für die Aktualisierung einer Anleitung müssen Sie die Anleitungsdatei aktualisieren und noch einmal hochladen, wie unter Anleitung in ein Projekt einfügen erläutert.

Wenn Sie eine Aufgabe zur Labelerstellung für Daten senden, erstellt der Dienst einen Snapshot der Anleitungsdatei und verwendet diesen zur Durchführung der Labelerstellung mit dieser Aufgabe. Dadurch wird verhindert, dass der Dienst inkonsistente Ergebnisse zurückgibt. Dies kann der Fall sein, wenn Sie die Anleitung aktualisieren, während gleichzeitig eine Aufgabe zur Labelerstellung ausgeführt wird. Eine aktualisierte Anleitung wird wirksam, wenn Sie eine neue Aufgabe zur Labelerstellung für Daten senden, für die die neue Anleitung verwendet werden soll.