Datasets documentation

Proses data gambar

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Proses data gambar

Panduan ini menunjukkan metode spesifik untuk memproses dataset gambar. Pelajari cara:

Untuk panduan tentang cara memproses dataset apa pun, lihat panduan proses umum.

Peta

Fungsi map() dapat menerapkan transformasi ke seluruh dataset.

Sebagai contoh, buat fungsi Resize dasar:

>>> def transforms(examples):
...     examples["pixel_values"] = [image.convert("RGB").resize((100,100)) for image in examples["image"]]
...     return examples

Sekarang gunakan fungsi map() untuk mengubah ukuran seluruh dataset, dan atur batched=True untuk mempercepat proses dengan menerima batch contoh. Transformasi mengembalikan pixel_values sebagai objek PIL.Image yang dapat di-cache:

>>> dataset = dataset.map(transforms, remove_columns=["image"], batched=True)
>>> dataset[0]
{'label': 6,
 'pixel_values': <PIL.PngImagePlugin.PngImageFile image mode=RGB size=100x100 at 0x7F058237BB10>}

File cache menghemat waktu karena Anda tidak perlu menjalankan transformasi yang sama dua kali. Fungsi map() paling cocok untuk operasi yang hanya dijalankan sekali per pelatihan - seperti mengubah ukuran gambar - bukan untuk operasi yang dijalankan setiap epoch, seperti augmentasi data.

map() menggunakan sebagian memori, tetapi Anda dapat mengurangi kebutuhan memorinya dengan parameter berikut:

  • batch_size menentukan jumlah contoh yang diproses dalam satu panggilan ke fungsi transform.
  • writer_batch_size menentukan jumlah contoh yang diproses dan disimpan di memori sebelum dituliskan ke penyimpanan.

Kedua nilai parameter secara default adalah 1000, yang dapat menjadi mahal jika Anda menyimpan gambar. Turunkan nilai-nilai ini untuk menggunakan memori lebih sedikit saat Anda menggunakan map().

Terapkan transformasi

🤗 Datasets menerapkan augmentasi data dari pustaka atau paket apa pun ke dataset Anda. Transformasi dapat diterapkan secara langsung pada batch data dengan set_transform(), yang menggunakan ruang disk lebih sedikit.

Contoh berikut menggunakan torchvision, tetapi Anda bebas menggunakan pustaka augmentasi data lainnya seperti Albumentations, Kornia, dan imgaug.

Sebagai contoh, jika Anda ingin mengubah properti warna gambar secara acak:

>>> from torchvision.transforms import Compose, ColorJitter, ToTensor

>>> jitter = Compose(
...     [
...          ColorJitter(brightness=0.25, contrast=0.25, saturation=0.25, hue=0.7),
...          ToTensor(),
...     ]
... )

Buat fungsi untuk menerapkan transformasi ColorJitter:

>>> def transforms(examples):
...     examples["pixel_values"] = [jitter(image.convert("RGB")) for image in examples["image"]]
...     return examples

Terapkan transformasi dengan fungsi set_transform():

>>> dataset.set_transform(transforms)
Update on GitHub