# Классификация изображений

Наборы данных для классификации изображений используются для обучения модели классифицировать изображение целиком. Эти наборы данных открывают возможности для широкого спектра приложений, например, идентификации видов дикой природы, находящихся под угрозой исчезновения, или скрининга заболеваний по медицинским снимкам. В этом руководстве показано, как применять преобразования к набору данных для классификации изображений.

Перед началом убедитесь, что у вас установлены актуальные версии `albumentations` и `cv2`:

```bash
pip install -U albumentations opencv-python
```

В этом руководстве используется набор данных [Beans](https://huggingface.co/datasets/beans) для определения типа заболевания бобовых растений по изображению их листа.

Загрузите набор данных и рассмотрите пример:

```py
>>> from datasets import load_dataset

>>> dataset = load_dataset("AI-Lab-Makerere/beans")
>>> dataset["train"][10]
{'image': <PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=500x500 at 0x7F8D2F4D7A10>,
 'image_file_path': '/root/.cache/huggingface/datasets/downloads/extracted/b0a21163f78769a2cf11f58dfc767fb458fc7cea5c05dccc0144a2c0f0bc1292/train/angular_leaf_spot/angular_leaf_spot_train.204.jpg',
 'labels': 0}
```

Набор данных содержит три поля:

* `image`: объект изображения PIL.
* `image_file_path`: путь к файлу изображения.
* `labels`: метка или категория изображения.

Далее посмотрите на изображение:

    

Теперь примените несколько аугментаций с помощью `albumentations`. Вы случайно обрежете изображение, отразите его по горизонтали и отрегулируете его яркость.

```py
>>> import cv2
>>> import albumentations
>>> import numpy as np

>>> transform = albumentations.Compose([
...     albumentations.RandomCrop(width=256, height=256),
...     albumentations.HorizontalFlip(p=0.5),
...     albumentations.RandomBrightnessContrast(p=0.2),
... ])
```

Создайте функцию для применения преобразования к изображениям:

```py
>>> def transforms(examples):
...     examples["pixel_values"] = [
...         transform(image=np.array(image))["image"] for image in examples["image"]
...     ]
... 
...     return examples
```

Используйте функцию [set_transform()](/docs/datasets/v5.2.0/ru/package_reference/main_classes#datasets.Dataset.set_transform), чтобы применять преобразование на лету к батчам набора данных и экономить место на диске:

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

Вы можете убедиться, что преобразование сработало, обратившись по индексу к `pixel_values` первого примера:

```py
>>> import numpy as np
>>> import matplotlib.pyplot as plt

>>> img = dataset["train"][0]["pixel_values"]
>>> plt.imshow(img)
```

    
    

> [!TIP]
> Теперь, когда вы знаете, как обработать набор данных для классификации изображений, узнайте [как обучить модель классификации изображений](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb) и использовать её для инференса.

