Datasets documentation
Классификация изображений
Классификация изображений
Наборы данных для классификации изображений используются для обучения модели классифицировать изображение целиком. Эти наборы данных открывают возможности для широкого спектра приложений, например, идентификации видов дикой природы, находящихся под угрозой исчезновения, или скрининга заболеваний по медицинским снимкам. В этом руководстве показано, как применять преобразования к набору данных для классификации изображений.
Перед началом убедитесь, что у вас установлены актуальные версии albumentations и cv2:
pip install -U albumentations opencv-python
В этом руководстве используется набор данных Beans для определения типа заболевания бобовых растений по изображению их листа.
Загрузите набор данных и рассмотрите пример:
>>> 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. Вы случайно обрежете изображение, отразите его по горизонтали и отрегулируете его яркость.
>>> 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),
... ])Создайте функцию для применения преобразования к изображениям:
>>> def transforms(examples):
... examples["pixel_values"] = [
... transform(image=np.array(image))["image"] for image in examples["image"]
... ]
...
... return examplesИспользуйте функцию set_transform(), чтобы применять преобразование на лету к батчам набора данных и экономить место на диске:
>>> dataset.set_transform(transforms)Вы можете убедиться, что преобразование сработало, обратившись по индексу к pixel_values первого примера:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> img = dataset["train"][0]["pixel_values"]
>>> plt.imshow(img)

Update on GitHubТеперь, когда вы знаете, как обработать набор данных для классификации изображений, узнайте как обучить модель классификации изображений и использовать её для инференса.