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 Xử lý file ảnh hàng loạt để làm đầu vào cho mô hình
Hướng Dẫn Đồ ÁnLập Trình AI

Xử lý file ảnh hàng loạt để làm đầu vào cho mô hình

Chia sẻ
Chia sẻ

Trong các bài toán học máy sử dụng dữ liệu hình ảnh, việc xử lý file ảnh hàng loạt để làm đầu vào cho mô hình là một bước chuẩn bị bắt buộc. Đây là giai đoạn tiền xử lý nhằm đảm bảo ảnh được đồng bộ về kích thước, định dạng, màu sắc và được tổ chức một cách hợp lý để phục vụ cho quá trình huấn luyện. Nếu ảnh đầu vào không được xử lý đúng cách, mô hình học máy dễ gặp lỗi trong quá trình huấn luyện hoặc đưa ra kết quả thiếu chính xác.

Bài viết này sẽ hướng dẫn bạn cách xử lý ảnh hàng loạt từ khâu chuẩn bị thư mục, resize, chuyển đổi định dạng, đổi tên cho đến phân chia tập train/val/test. Quy trình này áp dụng cho tất cả các mô hình học máy sử dụng ảnh như CNN, ResNet, EfficientNet, hoặc các mô hình học sâu khác, không giới hạn trong YOLO hay thị giác máy tính nâng cao.

Tổ chức thư mục dữ liệu ảnh cho mô hình học máy

Để đảm bảo dữ liệu ảnh có thể được sử dụng dễ dàng với thư viện như TensorFlow, Keras hoặc PyTorch, bạn nên tổ chức ảnh theo cấu trúc chuẩn:

dataset/
├── train/
│   ├── class1/
│   ├── class2/
├── val/
│   ├── class1/
│   ├── class2/
├── test/
    ├── class1/
    ├── class2/

Mỗi thư mục con trong các tập train, val, test sẽ đại diện cho một lớp (label) của bài toán phân loại. Đây là định dạng được hỗ trợ tốt bởi ImageDataGenerator (Keras), ImageFolder (PyTorch) và flow_from_directory().

Đổi kích thước và chuẩn hóa định dạng ảnh

Trong học máy, các mô hình như CNN thường yêu cầu ảnh đầu vào có kích thước cố định như 224×224 hoặc 299×299 pixel. Việc resize ảnh về cùng kích thước là cần thiết để đảm bảo mô hình có thể xử lý đồng nhất.

Ngoài ra, định dạng ảnh nên được chuyển hết về .jpg hoặc .png để đảm bảo tương thích và tiết kiệm dung lượng. Dưới đây là đoạn mã resize và chuyển định dạng ảnh hàng loạt:

from PIL import Image
import os

input_dir = 'raw_images'
output_dir = 'dataset/train/cats'
os.makedirs(output_dir, exist_ok=True)

for filename in os.listdir(input_dir):
    if filename.lower().endswith(('jpg', 'jpeg', 'png', 'bmp')):
        img = Image.open(os.path.join(input_dir, filename)).convert('RGB')
        img = img.resize((224, 224))
        new_name = os.path.splitext(filename)[0] + '.jpg'
        img.save(os.path.join(output_dir, new_name), format='JPEG')

Mã trên đảm bảo:

  • Ảnh chuyển về RGB
  • Resize ảnh về đúng kích thước
  • Lưu lại với định dạng JPEG

Chia ảnh vào các tập huấn luyện, xác thực và kiểm thử

Sau khi ảnh đã được xử lý và đặt trong cùng thư mục, bạn cần chia ảnh ra thành các tập train, val, test để phục vụ cho quá trình huấn luyện và đánh giá mô hình học máy. Tỷ lệ chia phổ biến là 80% train, 10% val, 10% test.

import os
import shutil
import random

src_dir = 'dataset/full/cats'
train_dir = 'dataset/train/cats'
val_dir = 'dataset/val/cats'
test_dir = 'dataset/test/cats'

os.makedirs(train_dir, exist_ok=True)
os.makedirs(val_dir, exist_ok=True)
os.makedirs(test_dir, exist_ok=True)

files = [f for f in os.listdir(src_dir) if f.endswith('.jpg')]
random.shuffle(files)

train_split = int(0.8 * len(files))
val_split = int(0.9 * len(files))

for i, f in enumerate(files):
    src_path = os.path.join(src_dir, f)
    if i < train_split:
        shutil.copy(src_path, os.path.join(train_dir, f))
    elif i < val_split:
        shutil.copy(src_path, os.path.join(val_dir, f))
    else:
        shutil.copy(src_path, os.path.join(test_dir, f))

Thực hiện đoạn mã trên cho mỗi lớp dữ liệu (cats, dogs, birds, v.v.) để xây dựng tập dữ liệu hoàn chỉnh phục vụ huấn luyện mô hình học máy.

Đổi tên file ảnh để tránh lỗi khi load dữ liệu

Khi xử lý file ảnh hàng loạt để làm đầu vào cho mô hình học máy, việc đặt tên file thống nhất giúp loại bỏ rủi ro do ký tự lạ hoặc tên trùng lặp gây ra. Dưới đây là ví dụ đổi tên ảnh dạng img_00001.jpg, img_00002.jpg,…

import os

dir_path = 'dataset/train/cats'
all_files = sorted(os.listdir(dir_path))

for idx, filename in enumerate(all_files):
    if filename.endswith('.jpg'):
        new_name = f"img_{idx:05d}.jpg"
        os.rename(os.path.join(dir_path, filename), os.path.join(dir_path, new_name))

Nhớ đổi tên tương tự cho các lớp khác nếu bạn có nhiều class trong bài toán phân loại ảnh.

Kiểm tra ảnh sau khi xử lý bằng matplotlib

Để kiểm tra dữ liệu đã xử lý trước khi huấn luyện mô hình học máy, bạn có thể dùng matplotlib để hiển thị ảnh trực tiếp từ thư mục:

import matplotlib.pyplot as plt
import cv2

img_path = 'dataset/train/cats/img_00001.jpg'
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

plt.imshow(img)
plt.axis('off')
plt.show()

Việc kiểm tra giúp bạn đảm bảo ảnh có chất lượng tốt, không bị lỗi, đúng nhãn và đúng kích thước yêu cầu.

Kết luận

Xử lý file ảnh hàng loạt để làm đầu vào cho mô hình là một bước nền tảng trong mọi dự án học máy có sử dụng dữ liệu hình ảnh. Việc chuẩn hóa kích thước, định dạng, tổ chức thư mục và chia tập dữ liệu đúng cách sẽ giúp mô hình học hiệu quả hơn, giảm lỗi trong huấn luyện và tăng độ chính xác khi dự đoán. Dù bạn sử dụng TensorFlow, PyTorch hay bất kỳ framework nào khác, một quy trình xử lý dữ liệu rõ ràng và tự động hóa sẽ là lợi thế lớn khi triển khai thực tế.

Để làm chủ toàn bộ quy trình tiền xử lý dữ liệu trong các dự án AI, bạn có thể xem thêm các bài viết bổ trợ như Hướng dẫn tiền xử lý dữ liệu sạch để huấn luyện mô hình tốt hơn, Hướng dẫn xử lý dữ liệu đầu vào trong đồ án AIHướng dẫn xử lý thiếu dữ liệu trong Pandas. Những kỹ thuật được trình bày trong các tài liệu này sẽ giúp bạn xây dựng tập dữ liệu chất lượng cao và tối ưu hóa hiệu suất mô hình học máy của mình.

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!