# Phân loại hình ảnh

Bộ dữ liệu phân loại hình ảnh được sử dụng để huấn luyện mô hình phân loại toàn bộ một hình ảnh. Có rất nhiều ứng dụng được hỗ trợ bởi các bộ dữ liệu này, chẳng hạn như nhận diện các loài động vật hoang dã đang có nguy cơ tuyệt chủng hoặc sàng lọc bệnh trong các hình ảnh y tế. Hướng dẫn này sẽ cho bạn thấy cách áp dụng các phép biến đổi vào một bộ dữ liệu phân loại hình ảnh.

Trước khi bắt đầu, hãy đảm bảo bạn đã cài đặt các phiên bản mới nhất của `albumentations` và `cv2`:

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

Hướng dẫn này sử dụng bộ dữ liệu [Beans](https://huggingface.co/datasets/beans) để xác định loại bệnh của cây đậu dựa trên hình ảnh lá của nó.

Tải bộ dữ liệu và xem một ví dụ:

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

Bộ dữ liệu có ba trường:

* `image`: một đối tượng ảnh PIL.
* `image_file_path`: đường dẫn đến tệp ảnh.
* `labels`: nhãn hoặc danh mục của hình ảnh.

Tiếp theo, hãy xem một hình ảnh:

    

Bây giờ hãy áp dụng một số phép tăng dữ liệu với `albumentations`. Bạn sẽ cắt ngẫu nhiên hình ảnh, lật ngang và điều chỉnh độ sáng của nó.

```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),
... ])
```

Tạo một hàm để áp dụng phép biến đổi lên các hình ảnh:

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

Sử dụng hàm [set_transform()](/docs/datasets/main/vi/package_reference/main_classes#datasets.Dataset.set_transform) để áp dụng phép biến đổi trực tiếp lên các lô dữ liệu của tập dữ liệu nhằm tiết kiệm dung lượng ổ đĩa:

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

Bạn có thể kiểm tra xem phép biến đổi đã hoạt động hay chưa bằng cách truy cập vào `pixel_values` của ví dụ đầu tiên:

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

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

    
    

> [!TIP]
> Bây giờ bạn đã biết cách xử lý một tập dữ liệu cho phân loại hình ảnh, hãy tìm hiểu [cách huấn luyện một mô hình phân loại hình ảnh](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/image_classification.ipynb) và sử dụng nó để suy luận.

