Mengirimkan permintaan pelabelan gambar

Layanan Pelabelan Data AI Platform mendukung enam jenis tugas pelabelan gambar:

  • Klasifikasi, tempat pelabel menetapkan satu atau beberapa label ke setiap gambar.
  • Kotak pembatas, tempat pelabel memilih label, lalu menggambar satu atau beberapa kotak pembatas untuk menerapkan label ke bagian gambar.
  • Tugas kotak pembatas berorientasi, mirip dengan tugas kotak pembatas dengan kotak pembatas yang sejajar dengan sumbu x, sedangkan kotak pembatas berorientasi dapat berada di arah mana pun
  • Poligon pembatas, yang mirip dengan kotak pembatas, tempat pemberi label memilih label dan menggambar poligon tertutup untuk menerapkan label ke bagian gambar.
  • Tugas polyline, mirip dengan kotak pembatas, tempat pemberi label memilih label dan menggambar polyline untuk menerapkan label ke bagian gambar. Polyline terdiri dari daftar minimal dua titik yang terhubung dari ujung ke ujung oleh segmen garis.
  • Tugas segmentasi, tempat pemberi label membuat mask untuk setiap label. Outputnya adalah tabel pemetaan warna, yang memetakan label ke warna.

Tugas klasifikasi gambar

UI Web

  1. Buka UI Layanan Pelabelan Data.

  2. Pilih Set Data dari navigasi sebelah kiri.

    Halaman Set Data menampilkan status set data yang dibuat sebelumnya untuk project saat ini.

  3. Klik nama set data yang ingin Anda kirim untuk pelabelan.

    Set data dengan status Impor selesai dapat dikirim. Kolom Jenis data menunjukkan apakah set data menyertakan gambar, video, atau teks.

  4. Di halaman Dataset detail, klik tombol Create labeling task di kolom judul.

  5. Di halaman Tugas pelabelan baru, masukkan nama dan deskripsi untuk set data yang dianotasi.

    Set data yang dianotasi adalah versi set data ini setelah pemberi label manual memberi label.

  6. Dari drop-down Objective, pilih jenis tugas pemberian label yang ingin Anda lakukan pada set data ini.

    Daftar drop-down hanya menyertakan tujuan yang tersedia untuk jenis data dalam set data ini. Jika Anda tidak melihat tujuan yang diinginkan, kemungkinan Anda telah memilih set data dengan jenis data yang berbeda. Tutup halaman New labeling task dan pilih set data lain.

  7. Dari drop-down Set label, pilih set label yang ingin Anda terapkan oleh pemberi label ke item data dalam set ini.

    Daftar drop-down menyertakan semua set label yang terkait dengan project ini. Anda harus memilih kumpulan label.

  8. Dari drop-down Petunjuk, pilih petunjuk yang ingin Anda berikan kepada pemberi label yang menggunakan set data ini.

    Daftar drop-down menyertakan semua petunjuk yang terkait dengan project ini. Anda harus menyertakan petunjuk dalam permintaan pelabelan.

  9. Dari drop-down labeler per data item, tentukan jumlah pemberi label yang Anda inginkan untuk meninjau setiap item dalam set data.

    Jumlah defaultnya adalah satu, tetapi Anda dapat meminta tiga atau lima pemberi label untuk memberi label pada setiap item.

  10. Klik kotak centang untuk mengonfirmasi bahwa Anda memahami cara Anda akan ditagih untuk pelabelan.

  11. Klik Create.

Command-line

Tetapkan variabel lingkungan berikut:
  1. Variabel PROJECT_ID ke project ID Google Cloud Anda.
  2. variabel DATASET_ID ke ID set data Anda, dari respons saat Anda membuat set data. ID muncul di akhir nama set data lengkap:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME ke nama resource petunjuk Anda.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME ke nama resource set label Anda.
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}",
  },
}'

Anda akan melihat output yang mirip dengan berikut ini. Anda dapat menggunakan ID operasi untuk mendapatkan status tugas. Mendapatkan status operasi adalah contohnya.

{
  "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

Sebelum dapat menjalankan contoh kode ini, Anda harus menginstal Library Klien 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

Sebelum dapat menjalankan contoh kode ini, Anda harus menginstal Library Klien 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();
    }
  }
}

Kotak pembatas

UI Web

  1. Buka UI Layanan Pelabelan Data.

  2. Pilih Set Data dari navigasi sebelah kiri.

    Halaman Set Data menampilkan status set data yang dibuat sebelumnya untuk project saat ini.

  3. Klik nama set data yang ingin Anda kirim untuk pelabelan.

    Set data dengan status Impor selesai dapat dikirim. Kolom Jenis data menunjukkan apakah set data menyertakan gambar, video, atau teks.

  4. Di halaman Dataset detail, klik tombol Create labeling task di kolom judul.

  5. Di halaman Tugas pelabelan baru, masukkan nama dan deskripsi untuk set data yang dianotasi.

    Set data yang dianotasi adalah versi set data ini setelah pemberi label manual memberi label.

  6. Dari drop-down Objective, pilih jenis tugas pemberian label yang ingin Anda lakukan pada set data ini.

    Daftar drop-down hanya menyertakan tujuan yang tersedia untuk jenis data dalam set data ini. Jika Anda tidak melihat tujuan yang diinginkan, kemungkinan Anda telah memilih set data dengan jenis data yang berbeda. Tutup halaman New labeling task dan pilih set data lain.

  7. Dari drop-down Set label, pilih set label yang ingin Anda terapkan oleh pemberi label ke item data dalam set ini.

    Daftar drop-down menyertakan semua set label yang terkait dengan project ini. Anda harus memilih set label.

  8. Dari drop-down Petunjuk, pilih petunjuk yang ingin Anda berikan kepada pemberi label yang menggunakan set data ini.

    Daftar drop-down menyertakan semua petunjuk yang terkait dengan project ini. Anda harus menyertakan petunjuk dalam permintaan pelabelan.

  9. Dari drop-down labeler per data item, tentukan jumlah pemberi label yang Anda inginkan untuk meninjau setiap item dalam set data.

    Jumlah defaultnya adalah satu, tetapi Anda dapat meminta tiga atau lima pemberi label untuk memberi label pada setiap item.

  10. Klik kotak centang untuk mengonfirmasi bahwa Anda memahami cara Anda akan ditagih untuk pelabelan.

  11. Klik Create.

Command-line

Tetapkan variabel lingkungan berikut:
  1. Variabel PROJECT_ID ke project ID Google Cloud Anda.
  2. variabel DATASET_ID ke ID set data Anda, dari respons saat Anda membuat set data. ID muncul di akhir nama set data lengkap:

    projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID
  3. INSTRUCTION_RESOURCE_NAME ke nama resource petunjuk Anda.
  4. ANNOTATION_SPEC_SET_RESOURCE_NAME ke nama resource set label Anda.
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}",
  },
}'

Anda akan melihat output yang mirip dengan berikut ini. Anda dapat menggunakan ID operasi untuk mendapatkan status tugas. Mendapatkan status operasi adalah contohnya.

{
  "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"
  }
}