# Proses data gambar

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

- Gunakan [map()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.map) dengan dataset gambar.
- Terapkan augmentasi data ke dataset dengan [set_transform()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.set_transform).

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

## Peta

Fungsi [map()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.map) dapat menerapkan transformasi ke seluruh dataset.

Sebagai contoh, buat fungsi [`Resize`](https://pytorch.org/vision/stable/generated/torchvision.transforms.Resize.html) dasar:

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

Sekarang gunakan fungsi [map()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.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:

```py
>>> 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()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.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()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.map) menggunakan sebagian memori, tetapi Anda dapat mengurangi kebutuhan memorinya dengan parameter berikut:

- [`batch_size`](./package_reference/main_classes#datasets.DatasetDict.map.batch_size) menentukan jumlah contoh yang diproses dalam satu panggilan ke fungsi transform.
- [`writer_batch_size`](./package_reference/main_classes#datasets.DatasetDict.map.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()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.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()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.set_transform), yang menggunakan ruang disk lebih sedikit.

> [!TIP]
> Contoh berikut menggunakan [torchvision](https://pytorch.org/vision/stable/index.html), tetapi Anda bebas menggunakan pustaka augmentasi data lainnya seperti [Albumentations](https://albumentations.ai/docs/), [Kornia](https://kornia.readthedocs.io/en/latest/), dan [imgaug](https://imgaug.readthedocs.io/en/latest/).

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

```py
>>> 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`:

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

Terapkan transformasi dengan fungsi [set_transform()](/docs/datasets/v5.2.0/id/package_reference/main_classes#datasets.Dataset.set_transform):

```py
>>> dataset.set_transform(transforms)
```

