# Traiter les données d'image

Ce guide présente des méthodes spécifiques pour le traitement de jeux de données d'images. Apprenez à :

- Utiliser [map()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.map) avec un jeu de données d'images.
- Appliquez des augmentations de données à un jeu de données avec [set_transform()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.set_transform).

Pour un guide sur la façon de traiter n'importe quel type de jeu de données, consultez le guide du processus général.

## Carte

La fonction [map()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.map) peut appliquer des transformations à l’ensemble d’un jeu de données.

Par exemple, créez une fonction [`Resize`](https://pytorch.org/vision/stable/generated/torchvision.transforms.Resize.html) de base :

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

Utilisez maintenant la fonction [map()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.map) pour redimensionner l'ensemble de données complet, et définissez `batched=True` pour accélérer le processus en acceptant des lots d'exemples. La transformation renvoie `pixel_values` en tant qu'objet `PIL.Image` mise en 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>}
```

Le fichier de cache fait gagner du temps car il n'est pas nécessaire d'exécuter la même transformation deux fois. La fonction [map()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.map) est idéale pour les opérations que vous n'exécutez qu'une seule fois par formation - comme le redimensionnement d'une image - plutôt que pour les opérations exécutées à chaque époque, comme les augmentations de données.

[map()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.map) consomme une certaine quantité de mémoire, mais vous pouvez réduire ses besoins en mémoire à l’aide des paramètres suivants :

- [`batch_size`](./package_reference/main_classes#datasets.DatasetDict.map.batch_size) détermine le nombre d'exemples traités lors d'un seul appel à la fonction de transformation.
- [`writer_batch_size`](./package_reference/main_classes#datasets.DatasetDict.map.writer_batch_size) détermine le nombre d'exemples traités conservés en mémoire avant d'être stockés.

Les deux valeurs de paramètres sont par défaut 1000, ce qui peut être coûteux si vous stockez des images. Réduisez ces valeurs pour utiliser moins de mémoire lorsque vous utilisez [map()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.map).

## Appliquer des transformations

🤗 Datasets applique des augmentations de données de n'importe quelle bibliothèque ou package à votre jeu de données. Les transformations peuvent être appliquées à la volée sur des lots de données avec [set_transform()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.set_transform), ce qui réduit l'espace disque consommé.

> [!TIP]
> L'exemple suivant utilise [torchvision](https://pytorch.org/vision/stable/index.html), mais vous êtes libre d'utiliser d'autres bibliothèques d'augmentation de données telles que [Albumentations](https://albumentations.ai/docs/), [Kornia](https://kornia.readthedocs.io/en/latest/) et [imgaug](https://imgaug.readthedocs.io/en/latest/).

Par exemple, si vous souhaitez modifier aléatoirement les propriétés de couleur d'une image :

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

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

Créez une fonction pour appliquer la transformation `ColorJitter` :

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

Appliquez la transformation avec la fonction [set_transform()](/docs/datasets/v5.2.0/fr/package_reference/main_classes#datasets.Dataset.set_transform) :

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

