Membuat set data

{i>Dataset<i} adalah kumpulan item data yang Anda inginkan untuk diberi label oleh pemberi label manusia. Halaman ini berisi sampel perwakilan yang ingin Anda klasifikasikan atau analisis. Set data yang dilabeli dengan baik dapat digunakan untuk melatih model kustom.

Langkah-langkah utama untuk membangun set data adalah:

  1. Upload item data ke bucket Cloud Storage.
  2. Buat file nilai yang dipisahkan koma (CSV) yang membuat katalog item data, lalu upload ke bucket Cloud Storage yang sama.
  3. Buat resource set data.
  4. Impor item data ke resource set data.

Sebuah project dapat memiliki beberapa set data, yang masing-masing digunakan untuk permintaan Layanan Pelabelan Data AI Platform yang berbeda. Anda bisa mendapatkan daftar set data yang tersedia dan menghapus set data yang tidak lagi diperlukan. Informasi lebih lanjut dapat ditemukan di halaman resource set data.

Tahapkan data tidak berlabel

Langkah pertama dalam membuat set data adalah mengupload item data ke bucket Cloud Storage untuk pelabelan. Untuk informasi tentang cara membuat bucket, lihat Sebelum memulai.

Layanan Pelabelan Data mendukung pelabelan tiga jenis data. Anda dapat meluaskan bagian di bawah ini untuk melihat detail cara menyediakan item data yang berkualitas untuk setiap jenis. Saat ini, hanya set data dalam bahasa Inggris yang didukung untuk pelabelan.

Gambar

Gambar harus menggunakan jenis file yang didukung:

  • JPEG
  • PNG

Ukuran file maksimum adalah 30 MB untuk semua kasus pelabelan gambar, kecuali untuk segmentasi gambar. Ukuran file maksimum adalah 10 MB untuk pelabelan segmentasi gambar.

Dimensi maksimum gambar adalah 1920X1080.

Data pelatihan harus semirip mungkin dengan data yang menjadi dasar prediksi. Misalnya, jika dalam kasus penggunaan Anda terdapat gambar buram dengan resolusi rendah (seperti gambar dari kamera keamanan), data pelatihan Anda harus terdiri dari gambar buram dengan resolusi rendah. Secara umum, Anda juga harus mempertimbangkan untuk menyediakan beberapa sudut, resolusi, dan latar belakang untuk gambar pelatihan.

Melatih model akan berfungsi optimal jika ada gambar yang paling banyak 100 kali lipat untuk label yang paling umum daripada label yang paling tidak umum. Sebaiknya Anda menghapus label berfrekuensi rendah.

Video

Video harus dalam format MP4, dengan codec H.264, H.265, dan MPEG4. Ukuran video maksimum adalah 2 GB.

Data pelatihan harus semirip mungkin dengan data yang menjadi dasar prediksi. Misalnya, jika dalam kasus penggunaan Anda terdapat video buram dengan resolusi rendah (seperti video dari kamera keamanan), data pelatihan Anda harus terdiri dari video buram dengan resolusi rendah. Secara umum, Anda juga harus mempertimbangkan untuk menyediakan beberapa sudut, resolusi, dan latar belakang untuk video pelatihan Anda.

Kami merekomendasikan sekitar 1.000 video pelatihan per label. Jumlah minimum per label adalah 10, atau 50 untuk model lanjutan. Secara umum, diperlukan lebih banyak contoh per label untuk melatih model dengan beberapa label per video, dan skor yang dihasilkan akan lebih sulit ditafsirkan.

Model ini berfungsi optimal jika ada video yang berjumlah maksimal 100 kali lebih banyak untuk label yang paling umum daripada label yang paling tidak umum. Sebaiknya Anda menghapus label berfrekuensi rendah.

Text

File teks harus menggunakan format encoding file teks UTF-8.

Setiap dokumen harus berupa file teks terpisah. Anda tidak dapat menyediakan beberapa dokumen dalam satu file teks. Misalnya, Anda tidak dapat memperlakukan setiap baris file teks sebagai dokumennya sendiri.

Jumlah karakter maksimum per file teks adalah 100.000.

Cobalah untuk membuat data pelatihan Anda yang bervariasi seperti data yang digunakan untuk membuat prediksi. Set data harus berisi berbagai panjang dokumen, dokumen yang ditulis oleh orang yang berbeda, dokumen yang menggunakan kata-kata atau gaya yang berbeda, dan sebagainya.

Sebaiknya sediakan minimal 1.000 dokumen pelatihan per label. Jumlah minimum dokumen per label adalah 10. Namun, Anda dapat meningkatkan skor keyakinan dari model Anda menggunakan lebih banyak contoh per label. Skor keyakinan yang lebih baik sangat membantu saat model Anda menampilkan beberapa label untuk mengklasifikasikan dokumen.

Model ini berfungsi optimal jika ada dokumen yang 100 kali lebih banyak untuk label yang paling umum daripada label yang paling tidak umum. Sebaiknya Anda menghapus label berfrekuensi rendah.

Membuat file CSV input

Selain item data contoh, Anda juga perlu membuat file nilai yang dipisahkan koma (CSV) yang menyimpan katalog semua data. File CSV dapat memiliki nama file apa pun, harus berenkode UTF-8, dan harus diakhiri dengan ekstensi .csv.

Untuk data gambar dan video, setiap baris dalam file CSV adalah lokasi (di bucket Google Cloud Storage project Anda) dari satu gambar atau video. Contoh:

gs://my_project_bucket/image1.png
gs://my_project_bucket/image2.png
gs://my_project_bucket/image3.png
gs://my_project_bucket/image4.png

Untuk data teks, setiap baris dalam {i>file<i} CSV adalah lokasi penyimpanan {i>file<i} teks. Contoh:

gs://my_project_bucket/file1.txt
gs://my_project_bucket/file2.txt
gs://my_project_bucket/file3.txt
gs://my_project_bucket/file4.txt

Setiap file data harus berisi data yang ingin Anda beri label. Konten setiap file data akan ditampilkan kepada pemberi label sebagai satu pertanyaan pelabelan.

Setelah Anda membuat file CSV yang membuat katalog item data, upload ke bucket Cloud Storage yang sama dengan item data.

Membuat resource set data

Langkah selanjutnya adalah membuat resource set data yang pada akhirnya akan menyimpan item data tersebut. Set data yang baru dibuat akan kosong sampai Anda mengimpor item data ke dalamnya di langkah berikutnya.

UI Web

Di UI Data Labeling Service, Anda membuat set data dan mengimpor item ke dalamnya dari halaman yang sama.

  1. Buka Data Labeling Service UI.

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

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

  2. Klik tombol Buat di kolom judul.

  3. Di halaman Add a dataset, masukkan nama dan deskripsi untuk set data tersebut.

  4. Dari menu drop-down Dataset type, pilih jenis item data yang Anda upload ke set data ini: gambar, video, atau teks.

  5. Di kotak CSV file location, masukkan jalur lengkap ke file CSV input.

    File CSV harus berada di bucket Google Cloud Storage yang sama dengan item data yang dicantumkan.

  6. Klik Create.

    Anda akan kembali ke halaman Datasets; set data Anda akan menampilkan status sedang berlangsung saat dokumen sedang diimpor. Proses ini akan memerlukan waktu sekitar 10 menit per 1.000 item, tetapi mungkin memerlukan waktu lebih atau kurang.

    Jika layanan menampilkan error 405, kurangi jumlah dokumen yang Anda upload sekaligus. Anda perlu memuat ulang halaman sebelum mencoba lagi.

Command line

Contoh berikut membuat set data bernama test_dataset. Set data yang baru dibuat tidak berisi data apa pun sampai Anda mengimpor item ke dalamnya.

Simpan "name" set data baru (dari respons) untuk digunakan dengan operasi lain, seperti mengimpor item ke set data 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 \
   -d '{
     "dataset": {
     "displayName": "test_dataset",
     "description": "dataset for curl commands testing",
     },
   }'

Anda akan melihat output yang mirip dengan berikut ini:

{
  "name": "projects/data-labeling-codelab/datasets/5c897e1e_0000_2ab5_9159_94eb2c0b4daa",
  "displayName": "test_dataset",
  "description": "dataset for curl commands testing",
  "createTime": "2019-03-14T03:11:50.926475415Z"
}

Python

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

def create_dataset(project_id):
    """Creates a dataset for the given Google Cloud project."""
    from google.cloud import datalabeling_v1beta1 as datalabeling

    client = datalabeling.DataLabelingServiceClient()

    formatted_project_name = f"projects/{project_id}"

    dataset = datalabeling.Dataset(
        display_name="YOUR_DATASET_SET_DISPLAY_NAME", description="YOUR_DESCRIPTION"
    )

    response = client.create_dataset(
        request={"parent": formatted_project_name, "dataset": dataset}
    )

    # The format of resource name:
    # project_id/{project_id}/datasets/{dataset_id}
    print(f"The dataset resource name: {response.name}")
    print(f"Display name: {response.display_name}")
    print(f"Description: {response.description}")
    print("Create time:")
    print(f"\tseconds: {response.create_time.timestamp_pb().seconds}")
    print(f"\tnanos: {response.create_time.timestamp_pb().nanos}\n")

    return response

Java

Sebelum dapat menjalankan contoh kode ini, Anda harus menginstal Library Klien Java.
import com.google.cloud.datalabeling.v1beta1.CreateDatasetRequest;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceClient;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceSettings;
import com.google.cloud.datalabeling.v1beta1.Dataset;
import com.google.cloud.datalabeling.v1beta1.ProjectName;
import java.io.IOException;

class CreateDataset {

  // Create a dataset that is initially empty.
  static void createDataset(String projectId, String datasetName) throws IOException {
    // String projectId = "YOUR_PROJECT_ID";
    // String datasetName = "YOUR_DATASET_DISPLAY_NAME";

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

      Dataset dataset =
          Dataset.newBuilder()
              .setDisplayName(datasetName)
              .setDescription("YOUR_DESCRIPTION")
              .build();

      CreateDatasetRequest createDatasetRequest =
          CreateDatasetRequest.newBuilder()
              .setParent(projectName.toString())
              .setDataset(dataset)
              .build();

      Dataset createdDataset = dataLabelingServiceClient.createDataset(createDatasetRequest);

      System.out.format("Name: %s\n", createdDataset.getName());
      System.out.format("DisplayName: %s\n", createdDataset.getDisplayName());
      System.out.format("Description: %s\n", createdDataset.getDescription());
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Mengimpor item data ke dalam set data

Setelah membuat set data, Anda dapat mengimpor item data ke dalamnya menggunakan file CSV.

UI Web

Di UI Data Labeling Service, Anda dapat melewati langkah ini karena impor sudah dilakukan pada langkah sebelumnya.

Command line

  • Ganti DATASET_ID dengan 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}

  • Ganti CSV_FILE dengan jalur lengkap ke file CSV input.

    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}:importData \
       -d '{
         "inputConfig": {
           "dataType": "IMAGE",
           "gcsSource": {
              "inputUri": "${CSV_FILE}",
              "mimeType": "text/csv",
            }
           },
       }'
    

    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.ImportDataOperationMetadata",
        "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 import_data(dataset_resource_name, data_type, input_gcs_uri):
    """Imports data to the given Google Cloud project and dataset."""
    from google.cloud import datalabeling_v1beta1 as datalabeling

    client = datalabeling.DataLabelingServiceClient()

    gcs_source = datalabeling.GcsSource(input_uri=input_gcs_uri, mime_type="text/csv")

    csv_input_config = datalabeling.InputConfig(
        data_type=data_type, gcs_source=gcs_source
    )

    response = client.import_data(
        request={"name": dataset_resource_name, "input_config": csv_input_config}
    )

    result = response.result()

    # The format of resource name:
    # project_id/{project_id}/datasets/{dataset_id}
    print(f"Dataset resource name: {result.dataset}\n")

    return result

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.DataLabelingServiceClient;
import com.google.cloud.datalabeling.v1beta1.DataLabelingServiceSettings;
import com.google.cloud.datalabeling.v1beta1.DataType;
import com.google.cloud.datalabeling.v1beta1.GcsSource;
import com.google.cloud.datalabeling.v1beta1.ImportDataOperationMetadata;
import com.google.cloud.datalabeling.v1beta1.ImportDataOperationResponse;
import com.google.cloud.datalabeling.v1beta1.ImportDataRequest;
import com.google.cloud.datalabeling.v1beta1.InputConfig;
import java.io.IOException;
import java.util.concurrent.ExecutionException;

class ImportData {

  // Import data to an existing dataset.
  static void importData(String datasetName, String gcsSourceUri) throws IOException {
    // String datasetName = DataLabelingServiceClient.formatDatasetName(
    //     "YOUR_PROJECT_ID", "YOUR_DATASETS_UUID");
    // String gcsSourceUri = "gs://YOUR_BUCKET_ID/path_to_data";

    DataLabelingServiceSettings settings =
        DataLabelingServiceSettings.newBuilder()
            .build();
    try (DataLabelingServiceClient dataLabelingServiceClient =
        DataLabelingServiceClient.create(settings)) {
      GcsSource gcsSource =
          GcsSource.newBuilder().setInputUri(gcsSourceUri).setMimeType("text/csv").build();

      InputConfig inputConfig =
          InputConfig.newBuilder()
              .setDataType(DataType.IMAGE) // DataTypes: AUDIO, IMAGE, VIDEO, TEXT
              .setGcsSource(gcsSource)
              .build();

      ImportDataRequest importDataRequest =
          ImportDataRequest.newBuilder().setName(datasetName).setInputConfig(inputConfig).build();

      OperationFuture<ImportDataOperationResponse, ImportDataOperationMetadata> operation =
          dataLabelingServiceClient.importDataAsync(importDataRequest);

      ImportDataOperationResponse response = operation.get();

      System.out.format("Imported items: %d\n", response.getImportCount());
    } catch (IOException | InterruptedException | ExecutionException e) {
      e.printStackTrace();
    }
  }
}

Lihat item data dalam set data

Ikuti langkah-langkah berikut untuk melihat item data dalam set data yang diimpor:

  1. Buka Data Labeling Service UI.

    Halaman Datasets menampilkan set data Data Labeling Service untuk project saat ini.

  2. Dalam daftar set data, klik nama set data yang itemnya ingin Anda lihat.

  3. Gunakan tab Details di halaman Dataset details untuk melihat setiap item data yang disertakan dalam set data.