Membuat set label

Set label adalah kumpulan label yang Anda inginkan untuk digunakan oleh pemberi label manusia untuk memberi label pada gambar Anda. Misalnya, jika Anda ingin mengklasifikasikan gambar berdasarkan apakah gambar tersebut berisi atau kucing, Anda harus membuat set label dengan dua label: "" dan "Kucing". (Sebenarnya, seperti yang disebutkan di bawah, Anda mungkin juga menginginkan label untuk "Netral" dan "Keduanya".) Kumpulan label Anda dapat berisi hingga 100 label.

Suatu project dapat memiliki beberapa kumpulan label, yang masing-masing digunakan untuk permintaan Layanan Pelabelan Data yang berbeda. Anda bisa mendapatkan daftar kumpulan label yang tersedia dan menghapus kumpulan yang tidak lagi diperlukan; lihat halaman resource kumpulan spesifikasi anotasi untuk mengetahui informasi selengkapnya.

Desain set label yang baik

Berikut adalah beberapa panduan untuk membuat set label yang berkualitas tinggi.

  • Buat nama tampilan setiap label dengan kata yang bermakna, seperti "dog", "cat", atau "building". Jangan gunakan nama abstrak seperti "label1" dan "label2" atau akronim yang tidak dikenal. Semakin penting nama label, semakin mudah bagi pemberi label manusia untuk menerapkannya secara akurat dan konsisten.
  • Pastikan label mudah dibedakan satu sama lain. Untuk tugas klasifikasi dengan satu label diterapkan ke setiap item data, cobalah untuk tidak menggunakan label yang maknanya tumpang-tindih.
  • Untuk tugas klasifikasi, sebaiknya sertakan label bernama "lainnya" atau "tidak ada", untuk digunakan pada data yang tidak cocok dengan label lainnya. Jika satu-satunya label yang tersedia adalah "dog" dan "cat", misalnya, pemberi label harus melabeli setiap gambar dengan salah satu label tersebut. Model kustom Anda biasanya lebih tangguh jika Anda menyertakan gambar selain atau kucing dalam data pelatihannya.
  • Perlu diingat bahwa pemberi label akan sangat efisien dan akurat jika Anda memiliki maksimal 20 label yang ditentukan dalam kumpulan label.

Membuat resource set label

UI Web

  1. Buka Data Labeling Service UI.

    Halaman Kumpulan label menampilkan status set label yang dibuat sebelumnya untuk project saat ini.

    Untuk menambahkan set label ke project lain, pilih project dari menu drop-down di kanan atas panel judul.

  2. Klik tombol Buat di kolom judul.

  3. Di halaman Buat kumpulan label, masukkan nama dan deskripsi untuk kumpulan tersebut.

  4. Di bagian Label, masukkan nama dan deskripsi untuk setiap label yang Anda inginkan untuk diterapkan oleh pemberi label manusia.

    Setelah memasukkan nama dan deskripsi label, klik Add label untuk menambahkan baris ke label tambahan. Anda dapat menambahkan hingga 100 label.

  5. Klik Create untuk membuat kumpulan spesifikasi anotasi.

    Anda akan kembali ke halaman daftar Kumpulan label.

Command line

Untuk membuat resource kumpulan label, Anda mencantumkan semua label dalam format JSON, lalu meneruskannya ke Data Labeling Service.

Contoh berikut membuat kumpulan label bernama code_sample_label_set yang memiliki dua label.

Simpan "name" dari kumpulan label baru (dari respons) untuk digunakan dengan operasi lain, seperti mengirim permintaan pelabelan.

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}"/annotationSpecSets \
     -d '{
       "annotationSpecSet": {
           "displayName": "code_sample_label_set",
           "description": "code sample general label set",
           "annotationSpecs": [
               {
                   "displayName": "dog",
                   "description": "label dog",
               },
               {
                   "displayName": "cat",
                   "description": "label cat",
               }
           ],
       },
    }'

Anda akan melihat output yang mirip dengan berikut ini:

{
  "name": "projects/data-labeling-codelab/annotationSpecSets/5c73db2d_0000_2f46_983d_001a114a5d7c",
  "displayName": "code_sample_label_set",
  "description": "code sample general label set",
  "annotationSpecs": [
    {
      "displayName": "dog",
      "description": "label dog"
    },
    {
      "displayName": "cat",
      "description": "label cat"
    }
  ]
}

Python

Sebelum dapat menjalankan contoh kode ini, Anda harus menginstal Library Klien Python.

def create_annotation_spec_set(project_id):
    """Creates a data labeling annotation spec set for the given
    Google Cloud project.
    """
    from google.cloud import datalabeling_v1beta1 as datalabeling

    client = datalabeling.DataLabelingServiceClient()

    project_path = f"projects/{project_id}"

    annotation_spec_1 = datalabeling.AnnotationSpec(
        display_name="label_1", description="label_description_1"
    )

    annotation_spec_2 = datalabeling.AnnotationSpec(
        display_name="label_2", description="label_description_2"
    )

    annotation_spec_set = datalabeling.AnnotationSpecSet(
        display_name="YOUR_ANNOTATION_SPEC_SET_DISPLAY_NAME",
        description="YOUR_DESCRIPTION",
        annotation_specs=[annotation_spec_1, annotation_spec_2],
    )

    response = client.create_annotation_spec_set(
        request={"parent": project_path, "annotation_spec_set": annotation_spec_set}
    )

    # The format of the resource name:
    # project_id/{project_id}/annotationSpecSets/{annotationSpecSets_id}
    print(f"The annotation_spec_set resource name: {response.name}")
    print(f"Display name: {response.display_name}")
    print(f"Description: {response.description}")
    print("Annotation specs:")
    for annotation_spec in response.annotation_specs:
        print(f"\tDisplay name: {annotation_spec.display_name}")
        print(f"\tDescription: {annotation_spec.description}\n")

    return response

Java

Sebelum dapat menjalankan contoh kode ini, Anda harus menginstal Library Klien Java.
import com.google.cloud.datalabeling.v1beta1.AnnotationSpec;
import com.google.cloud.datalabeling.v1beta1.AnnotationSpecSet;
import com.google.cloud.datalabeling.v1beta1.CreateAnnotationSpecSetRequest;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceClient;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceSettings;
import com.google.cloud.datalabeling.v1beta1.ProjectName;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

class CreateAnnotationSpecSet {

  // Create an annotation spec set.
  static void createAnnotationSpecSet(String projectId) throws IOException {
    // String projectId = "YOUR_PROJECT_ID";

    Map<String, String> annotationLabels = new HashMap<>();
    annotationLabels.put("label_1", "label_1_description");
    annotationLabels.put("label_2", "label_2_description");

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

      List<AnnotationSpec> annotationSpecs = new ArrayList<>();
      for (Entry<String, String> entry : annotationLabels.entrySet()) {
        AnnotationSpec annotationSpec =
            AnnotationSpec.newBuilder()
                .setDisplayName(entry.getKey())
                .setDescription(entry.getValue())
                .build();
        annotationSpecs.add(annotationSpec);
      }

      AnnotationSpecSet annotationSpecSet =
          AnnotationSpecSet.newBuilder()
              .setDisplayName("YOUR_ANNOTATION_SPEC_SET_DISPLAY_NAME")
              .setDescription("YOUR_DESCRIPTION")
              .addAllAnnotationSpecs(annotationSpecs)
              .build();

      CreateAnnotationSpecSetRequest request =
          CreateAnnotationSpecSetRequest.newBuilder()
              .setAnnotationSpecSet(annotationSpecSet)
              .setParent(projectName.toString())
              .build();

      AnnotationSpecSet result = dataLabelingServiceClient.createAnnotationSpecSet(request);

      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("Annotation Count: %d\n", result.getAnnotationSpecsCount());

      for (AnnotationSpec annotationSpec : result.getAnnotationSpecsList()) {
        System.out.format("\tDisplayName: %s\n", annotationSpec.getDisplayName());
        System.out.format("\tDescription: %s\n\n", annotationSpec.getDescription());
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Untuk evaluasi berkelanjutan

Saat membuat tugas evaluasi, Anda harus menentukan file CSV yang menentukan kumpulan spesifikasi anotasi Anda:

  • File harus memiliki satu baris untuk setiap kemungkinan label yang mungkin dihasilkan model Anda selama prediksi.
  • Setiap baris harus berupa pasangan yang dipisahkan koma yang berisi label dan deskripsi label: LABEL_NAME,DESCRIPTION
  • Saat Anda membuat tugas evaluasi, Data Labeling Service akan menggunakan nama file dari file CSV sebagai nama kumpulan spesifikasi anotasi yang dibuat di latar belakang.

Misalnya, jika model Anda memprediksi hewan apa yang ada dalam gambar, Anda dapat menulis spesifikasi berikut ke file bernama animals.csv:

bird,any animal in the class Aves - see https://en.wikipedia.org/wiki/Bird
cat,any animal in the species Felis catus (domestic cats, not wild cats) - see https://en.wikipedia.org/wiki/Cat
dog,any animal in the genus Canis (domestic dogs and close relatives) - see https://en.wikipedia.org/wiki/Canis
multiple,image contains more than one of the above
none,image contains none of the above

Kemudian, upload file ini ke bucket Cloud Storage dalam project yang sama dengan tugas evaluasi berkelanjutan.