Datasets documentation
Proses data gambar
Proses data gambar
Panduan ini menunjukkan metode spesifik untuk memproses dataset gambar. Pelajari cara:
- Gunakan map() dengan dataset gambar.
- Terapkan augmentasi data ke dataset dengan set_transform().
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 examplesSekarang 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_sizemenentukan jumlah contoh yang diproses dalam satu panggilan ke fungsi transform.writer_batch_sizemenentukan 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 examplesTerapkan transformasi dengan fungsi set_transform():
>>> dataset.set_transform(transforms)