Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Hướng dẫn Augmentation ảnh để huấn luyện tốt hơn
Hướng Dẫn Đồ ÁnLập Trình AI

Hướng dẫn Augmentation ảnh để huấn luyện tốt hơn

Chia sẻ
Chia sẻ

Trong học máy, đặc biệt là các bài toán thị giác máy tính (computer vision), số lượng và chất lượng dữ liệu ảnh đóng vai trò cực kỳ quan trọng. Tuy nhiên, việc thu thập đủ một bộ dữ liệu lớn, đa dạng trong thực tế không phải lúc nào cũng khả thi. Điều này dẫn đến tình trạng mô hình dễ bị overfitting và kém khả năng tổng quát hóa.

Augmentation (tăng cường dữ liệu) là một giải pháp mạnh mẽ để khắc phục vấn đề trên. Bằng cách áp dụng các phép biến đổi ngẫu nhiên như xoay, lật, dịch chuyển, thay đổi độ sáng, chúng ta có thể tạo ra nhiều phiên bản khác nhau từ ảnh gốc, giúp mô hình “thấy” nhiều dạng dữ liệu hơn trong quá trình huấn luyện. Bài viết này sẽ hướng dẫn bạn từ cơ bản đến nâng cao về kỹ thuật augmentation ảnh, đảm bảo người mới học cũng làm được.

Mô tả bài toán

Mục tiêu của bài viết là xây dựng một pipeline augmentation ảnh đầy đủ để chuẩn bị dữ liệu đầu vào cho mô hình học sâu. Pipeline này sẽ:

  • Áp dụng các kỹ thuật augmentation cơ bản như flip, rotation, zoom, brightness adjustment.
  • Kết hợp nhiều phép biến đổi để tạo dữ liệu đa dạng.
  • Sử dụng các thư viện phổ biến: Keras ImageDataGenerator, Albumentations, và OpenCV.
  • Thử nghiệm với một bộ dữ liệu ảnh thật để thấy sự khác biệt khi huấn luyện.

Bộ dữ liệu mẫu

Sử dụng bộ dữ liệu Cats vs Dogs từ Kaggle:
📥 Tải tại đây

Hoặc bộ Oxford-IIIT Pet Dataset từ TensorFlow Datasets:

import tensorflow_datasets as tfds
dataset, info = tfds.load('oxford_iiit_pet', with_info=True)

Cài đặt thư viện

pip install tensorflow keras albumentations opencv-python matplotlib

Đọc và hiển thị ảnh mẫu

Trước khi bắt đầu augmentation, ta cần đọc ảnh từ bộ dữ liệu và hiển thị ảnh gốc để làm cơ sở so sánh.

import cv2
import matplotlib.pyplot as plt

# Đọc ảnh
image = cv2.imread('sample_cat.jpg')
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# Hiển thị ảnh gốc
plt.imshow(image_rgb)
plt.title("Ảnh gốc")
plt.axis('off')
plt.show()

Augmentation cơ bản với Keras ImageDataGenerator

Tại sao cần bước này?

Augmentation cơ bản là những phép biến đổi đơn giản nhưng rất hiệu quả, giúp tăng tính đa dạng cho bộ dữ liệu. Đây là nền tảng để tránh overfitting khi mô hình học trên các ảnh được biến đổi ngẫu nhiên từ ảnh gốc.

Keras cung cấp lớp ImageDataGenerator hỗ trợ nhiều kỹ thuật augmentation phổ biến như xoay, lật, zoom, dịch chuyển, thay đổi độ sáng, v.v.

from tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest'
)

Áp dụng augmentation:

import numpy as np

# Chuyển ảnh thành batch 4D
x = np.expand_dims(image_rgb, axis=0)

# Lặp qua các ảnh được augment
i = 0
for batch in datagen.flow(x, batch_size=1):
    plt.imshow(batch[0].astype('uint8'))
    plt.title("Ảnh Augmented")
    plt.axis('off')
    plt.show()
    i += 1
    if i > 5:
        break

Augmentation nâng cao với Albumentations

Tại sao cần bước này?

Mặc dù Keras hỗ trợ augmentation cơ bản, nhưng khi cần kết hợp nhiều phép biến đổi phức tạp và kiểm soát cao hơn, Albumentations là lựa chọn tối ưu. Nó nhanh, linh hoạt và được dùng rộng rãi trong các dự án computer vision hiện đại.

import albumentations as A

# Định nghĩa pipeline augmentation
transform = A.Compose([
    A.RandomCrop(width=256, height=256),
    A.HorizontalFlip(p=0.5),
    A.RandomBrightnessContrast(p=0.2),
    A.HueSaturationValue(p=0.2),
    A.Rotate(limit=40, p=0.5)
])

# Áp dụng transform
augmented = transform(image=image_rgb)
augmented_image = augmented['image']

plt.imshow(augmented_image)
plt.title("Albumentations Augmented")
plt.axis('off')
plt.show()

So sánh huấn luyện với và không có augmentation

Tại sao cần bước này?

Thử nghiệm huấn luyện mô hình với dữ liệu gốc và dữ liệu augmented để thấy rõ tác động. Thường thì augmentation giúp mô hình đạt độ chính xác tốt hơn trên tập test nhờ khả năng tổng quát hóa cao hơn.

Dùng ImageDataGenerator để huấn luyện trên dữ liệu augmented:

train_datagen = ImageDataGenerator(
    rescale=1./255,
    rotation_range=40,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True
)
train_generator = train_datagen.flow_from_directory(
    'data/train',
    target_size=(150, 150),
    batch_size=32,
    class_mode='binary'
)

Huấn luyện mô hình:

from tensorflow.keras import layers, models

model = models.Sequential([
    layers.Conv2D(32, (3,3), activation='relu', input_shape=(150, 150, 3)),
    layers.MaxPooling2D(2,2),
    layers.Conv2D(64, (3,3), activation='relu'),
    layers.MaxPooling2D(2,2),
    layers.Flatten(),
    layers.Dense(512, activation='relu'),
    layers.Dense(1, activation='sigmoid')
])

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(train_generator, epochs=10)

Kết luận

Augmentation là kỹ thuật cực kỳ quan trọng để cải thiện chất lượng huấn luyện trong các bài toán xử lý ảnh. Bằng cách áp dụng các phép biến đổi ngẫu nhiên, chúng ta có thể giúp mô hình học cách tổng quát hóa tốt hơn, giảm overfitting và tận dụng tối đa bộ dữ liệu sẵn có. Bài viết đã cung cấp cho bạn một cái nhìn toàn diện từ các kỹ thuật cơ bản đến nâng cao.

Hướng tiếp theo bạn có thể kết hợp augmentation với các pipeline dữ liệu TensorFlow hoặc tích hợp trực tiếp vào mô hình học sâu để tối ưu hóa tốc độ huấn luyện.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!