Membuat set label

Set label adalah kumpulan label yang akan digunakan pemberi label manual untuk melabeli gambar Anda. Misalnya, jika ingin mengklasifikasikan gambar berdasarkan apakah gambar tersebut berisi atau kucing, Anda harus membuat set label dengan dua label: "Dog" dan "Cat". (Sebenarnya, seperti yang tercantum di bawah, Anda mungkin juga menginginkan label untuk "Tidak ada" dan "Kedua".) Kumpulan label Anda dapat menyertakan hingga 100 label.

Sebuah project dapat memiliki beberapa set 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.

Mendesain set label yang baik

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

  • Buat setiap nama tampilan label menjadi kata yang bermakna, seperti "dog", "cat", atau "building". Jangan gunakan nama abstrak seperti "label1" dan "label2" atau akronim yang tidak dikenal. Semakin bermakna nama label, semakin mudah bagi pemberi label manual untuk menerapkannya secara akurat dan konsisten.
  • Pastikan label mudah dibedakan satu sama lain. Untuk tugas klasifikasi di mana satu label diterapkan ke setiap item data, cobalah untuk tidak menggunakan label yang artinya tumpang-tindih.
  • Untuk tugas klasifikasi, sebaiknya sertakan label dengan nama "other" atau "none" untuk digunakan pada data yang tidak cocok dengan label lain. Misalnya, jika label yang tersedia hanya "dog" dan "cat", pemberi label harus melabeli setiap gambar dengan salah satu dari kedua label tersebut. Model kustom Anda biasanya lebih andal jika Anda menyertakan gambar selain atau kucing dalam data pelatihannya.
  • Perhatikan bahwa pemberi label dapat bekerja dengan efisien dan akurat jika Anda memiliki maksimal 20 label yang ditentukan dalam set label.

Membuat resource set label

UI Web

  1. Buka UI Layanan Pelabelan Data.

    Halaman Set 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 kolom judul.

  2. Klik tombol Create di kolom judul.

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

  4. Di bagian Labels, masukkan nama dan deskripsi untuk setiap label yang ingin Anda terapkan oleh pemberi label manual.

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

  5. Klik Create untuk membuat kumpulan spesifikasi anotasi.

    Anda akan kembali ke halaman daftar Set label.

Command-line

Untuk membuat resource set label, Anda mencantumkan semua label dalam format JSON, lalu meneruskannya ke Layanan Pemberian Label Data.

Contoh berikut membuat set 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 pemberian label.

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:

  • File harus memiliki satu baris untuk setiap kemungkinan label yang 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, Layanan Pelabelan Data menggunakan nama 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 Anda.