# Procesar datos de imagen

Esta guía muestra métodos específicos para procesar conjuntos de datos de imágenes. Aprenda a:

- Usa [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map) con un conjunto de datos de imágenes.
- Aplica aumentos de datos a un conjunto de datos con [set_transform()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.set_transform).

Para una guía sobre cómo procesar cualquier tipo de conjunto de datos, consulte la guía de proceso general.

## Map

La función [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map) puede aplicar transformaciones a un conjunto de datos completo.

Por ejemplo, crea una función básica [`Resize`](https://pytorch.org/vision/stable/generated/torchvision.transforms.Resize.html):

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

Ahora usa la función [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map) para redimensionar todo el conjunto de datos y establece `batched=True` para acelerar el proceso aceptando lotes de ejemplos. La transformación devuelve `pixel_values` como un objeto `PIL.Image` que se puede almacenar en caché:

```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>}
```

El archivo de cachet ahorra tiempo porque no es necesario ejecutar la misma transformación dos veces. La función [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map) es la más adecuada para operaciones que solo se ejecutan una vez por entrenamiento, como el redimensionado de una imagen, en lugar de usarla para operaciones que se ejecutan en cada época, como las aumentaciones de datos.

[map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map) ocupa cierta cantidad de memoria, pero puedes reducir sus requisitos de memoria con los siguientes parámetros:

- [`batch_size`](./package_reference/main_classes#datasets.DatasetDict.map.batch_size) determina el número de ejemplos que se procesan en una sola llamada a la función de transformación.
- [`writer_batch_size`](./package_reference/main_classes#datasets.DatasetDict.map.writer_batch_size) determina el número de ejemplos procesados que se mantienen en memoria antes de ser almacenados.

Ambos valores de parámetros tienen un valor predeterminado de 1000, lo cual puede ser costoso si estás almacenando imágenes. Reduce estos valores para usar menos memoria cuando uses [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map).

## Aplicar transformaciones

🤗 Datasets aplica aumentos de datos de cualquier biblioteca o paquete a tu conjunto de datos. Las transformaciones se pueden aplicar al vuelo en lotes de datos con [set_transform()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.set_transform), lo que consume menos espacio en disco.

> [!TIP]
> El siguiente ejemplo utiliza [torchvision](https://pytorch.org/vision/stable/index.html), pero puede utilizar libremente otras bibliotecas de aumento de datos como [Albumentations](https://albumentations.ai/docs/), [Kornia](https://kornia.readthedocs.io/en/latest/) y [imgaug](https://imgaug.readthedocs.io/en/latest/).

Por ejemplo, si desea cambiar las propiedades de color de una imagen de forma aleatoria:

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

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

Crea una función para aplicar la transformación `ColorJitter`:

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

Aplica la transformación con la función [set_transform()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.set_transform):

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

