Hub documentation
Dataset Gambar
Dataset Gambar
Panduan ini akan menunjukkan cara mengonfigurasi repositori dataset Anda dengan file gambar. Anda dapat menemukan contoh repositori yang menyertainya dalam koleksi contoh dataset gambar ini.
Dataset dengan struktur dan format file yang didukung secara otomatis memiliki Dataset Viewer di halamannya di Hub.
Informasi tambahan tentang gambar Anda - seperti caption atau bounding box untuk object detection - dimuat secara otomatis selama Anda menyertakan informasi ini dalam file metadata (metadata.csv/metadata.jsonl/metadata.parquet).
Sebagai alternatif, gambar dapat berada dalam file Parquet atau dalam arsip TAR yang mengikuti format WebDataset.
Hanya gambar
Jika dataset Anda hanya terdiri dari satu kolom berisi gambar, Anda cukup menyimpan file gambar Anda di root:
my_dataset_repository/
βββ 1.jpg
βββ 2.jpg
βββ 3.jpg
βββ 4.jpgatau dalam subdirektori:
my_dataset_repository/
βββ images
βββ 1.jpg
βββ 2.jpg
βββ 3.jpg
βββ 4.jpgBeberapa format didukung secara bersamaan, termasuk PNG, JPEG, TIFF, dan WebP.
my_dataset_repository/
βββ images
βββ 1.jpg
βββ 2.png
βββ 3.tiff
βββ 4.webpJika Anda memiliki beberapa split, Anda dapat menempatkan gambar Anda ke dalam direktori yang diberi nama sesuai:
my_dataset_repository/
βββ train
βΒ Β βββ 1.jpg
βΒ Β βββ 2.jpg
βββ test
βββ 3.jpg
βββ 4.jpgLihat Nama file dan split untuk informasi lebih lanjut dan cara lain untuk mengorganisasi data berdasarkan split.
Kolom tambahan
Jika ada informasi tambahan yang ingin Anda sertakan tentang dataset Anda, seperti teks caption atau bounding box, tambahkan sebagai file metadata.csv di repository Anda. Hal ini memungkinkan Anda dengan cepat membuat dataset untuk berbagai tugas computer vision seperti text captioning atau object detection.
my_dataset_repository/
βββ train
βββ 1.jpg
βββ 2.jpg
βββ 3.jpg
βββ 4.jpg
βββ metadata.csvFile metadata.csv Anda harus memiliki kolom file_name yang menghubungkan file gambar dengan metadata mereka:
file_name,text
1.jpg,a drawing of a green pokemon with red eyes
2.jpg,a green and yellow toy with a red nose
3.jpg,a red and white ball with an angry look on its face
4.jpg,a cartoon ball with a smile on its faceAnda juga dapat menggunakan file JSONL metadata.jsonl:
{"file_name": "1.jpg","text": "a drawing of a green pokemon with red eyes"}
{"file_name": "2.jpg","text": "a green and yellow toy with a red nose"}
{"file_name": "3.jpg","text": "a red and white ball with an angry look on its face"}
{"file_name": "4.jpg","text": "a cartoon ball with a smile on its face"}Dan untuk dataset yang lebih besar atau jika Anda tertarik dengan fitur pengambilan data yang lebih lanjut, Anda dapat menggunakan file Parquet metadata.parquet.
Path relatif
File metadata harus berada di direktori yang sama dengan gambar yang terkait, atau di direktori induk mana pun, seperti pada contoh ini:
my_dataset_repository/
βββ train
βββ images
βΒ Β βββ 1.jpg
βΒ Β βββ 2.jpg
βΒ Β βββ 3.jpg
βΒ Β βββ 4.jpg
βββ metadata.csvDalam kasus ini, kolom file_name harus berupa jalur relatif lengkap ke gambar, bukan hanya nama file:
file_name,text
images/1.jpg,a drawing of a green pokemon with red eyes
images/2.jpg,a green and yellow toy with a red nose
images/3.jpg,a red and white ball with an angry look on its face
images/4.jpg,a cartoon ball with a smile on it's faceFile metadata tidak dapat ditempatkan di subdirektori dari direktori yang berisi gambar.
Secara lebih umum, kolom apa pun yang bernama file_name atau *_file_name harus berisi jalur relatif lengkap ke gambar.
Klasifikasi gambar
Untuk dataset klasifikasi gambar, Anda juga dapat menggunakan setup sederhana: gunakan direktori untuk memberi nama kelas gambar. Simpan file gambar Anda dalam struktur direktori seperti:
my_dataset_repository/
βββ green
βΒ Β βββ 1.jpg
βΒ Β βββ 2.jpg
βββ red
βββ 3.jpg
βββ 4.jpgDataset yang dibuat dengan struktur ini berisi dua kolom: image dan label (dengan nilai green dan red).
Anda juga dapat menyediakan beberapa split. Untuk melakukannya, direktori dataset Anda harus memiliki struktur berikut (lihat Nama file dan split untuk informasi lebih lanjut):
my_dataset_repository/
βββ test
βΒ Β βββ green
βΒ Β βΒ Β βββ 2.jpg
βΒ Β βββ red
βΒ Β βββ 4.jpg
βββ train
βββ green
βΒ Β βββ 1.jpg
βββ red
βββ 3.jpgAnda dapat menonaktifkan penambahan otomatis kolom label dalam konfigurasi YAML. Jika nama direktori Anda tidak memiliki arti khusus, atur drop_labels: true di header README:
configs:
- config_name: default # Name of the dataset subset, if applicable.
drop_labels: trueDataset berskala besar
Format WebDataset
Format WebDataset sangat cocok untuk dataset gambar berskala besar (lihat timm/imagenet-12k-wds sebagai contoh). Format ini terdiri dari arsip TAR yang berisi gambar beserta metadata-nya dan dioptimalkan untuk streaming. Format ini berguna jika Anda memiliki sejumlah besar gambar dan ingin mendapatkan streaming data loaders untuk pelatihan berskala besar.
my_dataset_repository/
βββ train-0000.tar
βββ train-0001.tar
βββ ...
βββ train-1023.tarUntuk membuat arsip TAR WebDataset, buat direktori yang berisi file gambar dan metadata yang akan diarsipkan, lalu buat arsip TAR menggunakan misalnya perintah tar.
Ukuran umum per arsip biasanya sekitar 1GB.
Pastikan setiap pasangan gambar dan metadata berbagi prefiks file yang sama, misalnya:
train-0000/
βββ 000.jpg
βββ 000.json
βββ 001.jpg
βββ 001.json
βββ ...
βββ 999.jpg
βββ 999.jsonPerhatikan bahwa untuk kenyamanan pengguna dan untuk memungkinkan Dataset Viewer, setiap dataset yang dihosting di Hub secara otomatis dikonversi ke format Parquet hingga 5GB. Baca lebih lanjut tentang hal ini dalam dokumentasi Parquet format.
Format Parquet
Alih-alih mengunggah gambar dan metadata sebagai file individual, Anda dapat menyematkan semuanya di dalam file Parquet. Hal ini berguna jika Anda memiliki sejumlah besar gambar, jika Anda ingin menyematkan beberapa kolom gambar, atau jika Anda ingin menyimpan informasi tambahan tentang gambar di file yang sama. Parquet juga berguna untuk menyimpan data seperti byte mentah, yang tidak didukung oleh JSON/CSV.
my_dataset_repository/
βββ train.parquetFile Parquet dengan data gambar dapat dibuat menggunakan pandas atau pustaka datasets. Untuk membuat file Parquet dengan data gambar di pandas, Anda dapat menggunakan pandas-image-methods dan df.to_parquet(). Di datasets, Anda dapat mengatur tipe kolom menjadi Image() dan menggunakan metode ds.to_parquet(...) atau ds.push_to_hub(...). Anda dapat menemukan panduan untuk memuat dataset gambar di datasets di sini.
Sebagai alternatif, Anda dapat mengatur tipe gambar Parquet yang dibuat menggunakan alat lain secara manual. Pertama, pastikan kolom gambar Anda bertipe struct, dengan field biner "bytes" untuk data gambar dan field string "path" untuk nama atau path file gambar. Kemudian, Anda harus menentukan tipe fitur kolom secara langsung dalam YAML di header README, misalnya:
dataset_info:
features:
- name: image
dtype: image
- name: caption
dtype: stringPerhatikan bahwa Parquet direkomendasikan untuk gambar kecil (<1MB per gambar) dan grup baris kecil (100 baris per grup baris, yang digunakan oleh datasets untuk gambar). Untuk gambar yang lebih besar, disarankan untuk menggunakan format WebDataset, atau membagikan file gambar asli (secara opsional dengan file metadata, dan mengikuti rekomendasi dan batasan repositori untuk penyimpanan dan jumlah file).