Bối cảnh và vấn đề nghiên cứu
Trong lĩnh vực trí tuệ nhân tạo (AI) và thị giác máy tính, việc tự động nhận diện và phân loại hình ảnh là một trong những bài toán nền tảng với nhiều ứng dụng thực tiễn, từ nhận diện khuôn mặt, phát hiện đối tượng đến phân loại sinh vật. Sự phát triển của các mạng nơ-ron sâu (Deep Learning), đặc biệt là kiến trúc mạng nơ-ron tích chập (Convolutional Neural Network - CNN), đã tạo ra bước tiến lớn trong việc tự động rút trích các đặc trưng phân cấp từ dữ liệu ảnh mà không cần sự can thiệp thủ công của con người.
Khóa luận tốt nghiệp đại học ngành Công nghệ thông tin của sinh viên Trần Hải Thành (Mã sinh viên: 2012111008, Lớp CT2401C, Trường Đại học Quản lý và Công nghệ Hải Phòng, dưới sự hướng dẫn của TS. Ngô Trường Giang) tập trung giải quyết bài toán thị giác máy tính kinh điển: phân loại hình ảnh hai loài động vật quen thuộc là chó và mèo.
Các mục tiêu và nhiệm vụ nghiên cứu được văn bản xác định cụ thể bao gồm:
- Nghiên cứu tổng quan về cơ sở lý thuyết của học máy (Machine Learning) và học sâu (Deep Learning), làm rõ quy trình xây dựng các mô hình phân lớp dữ liệu và nhận dạng ảnh.
- Tìm hiểu chi tiết nguyên lý hoạt động, cấu trúc tầng và các ưu, nhược điểm của kiến trúc mạng nơ-ron tích chập (CNN).
- Thiết lập môi trường thực nghiệm dựa trên nền tảng đám mây Google Colab, chuẩn bị dữ liệu hình ảnh, tiền xử lý và xây dựng mô hình CNN sử dụng ngôn ngữ lập trình Python và thư viện Keras/TensorFlow.
- Huấn luyện mô hình, tinh chỉnh siêu tham số thông qua hàm callback, thực hiện đánh giá độ chính xác tổng quát và kiểm thử khả năng dự đoán trên từng mẫu ảnh đơn lẻ.
Đối tượng và phạm vi nghiên cứu của đồ án:
- Đối tượng nghiên cứu: Các thuật toán học sâu, trọng tâm là mạng nơ-ron tích chập (CNN) và kỹ thuật phân loại hình ảnh nhị phân.
- Phạm vi dữ liệu: Bộ dữ liệu hình ảnh "Dog-vs-Cat" được thu thập từ nền tảng Kaggle, gồm 9.896 bức ảnh được gán nhãn thuộc hai lớp chó và mèo.
- Phạm vi không gian và thời gian: Đồ án được thực hiện trong khuôn khổ chương trình đào tạo đại học hệ chính quy tại Trường Đại học Quản lý và Công nghệ Hải Phòng, hoàn thành và nghiệm thu năm 2023.
Cơ sở lý thuyết và phương pháp
Khóa luận được xây dựng dựa trên hệ thống cơ sở lý thuyết chuẩn mực của ngành trí tuệ nhân tạo, bao gồm các khái niệm, quy trình và mô hình toán học - tính toán sau:
- Hệ thống phân cấp AI - ML - DL: Đồ án xác định rõ học máy là tập con của trí tuệ nhân tạo, và học sâu là một phân nhánh chuyên sâu của học máy sử dụng các mạng nơ-ron nhân tạo nhiều tầng. Văn bản phân định bốn phương pháp học máy cơ bản: học có giám sát (Supervised Learning), học không giám sát (Unsupervised Learning), học bán giám sát (Semi-supervised Learning) và học tăng cường (Reinforcement Learning).
- Mô hình mạng nơ-ron nhân tạo: Bao gồm các kiến trúc kinh điển như Perceptron một lớp (Single-Layer Perceptron), mạng truyền thẳng (Feedforward Neural Network - FNN), mạng nơ-ron tái phân cấp (Recurrent Neural Network - RNN), mạng bộ nhớ ngắn - dài (Long Short-Term Memory - LSTM) và mạng nơ-ron tích chập (CNN).
- Cơ chế lan truyền: Mô hình vận hành dựa trên hai chu trình tính toán liên hoàn là lan truyền tiến (Forward Propagation) để tính toán đầu ra dự đoán và lan truyền ngược (Backpropagation) kết hợp thuật toán tối ưu giảm độ dốc để cập nhật trọng số và độ lệch, giảm thiểu hàm mất mát.
- Phương pháp nghiên cứu thực nghiệm: Đồ án sử dụng phương pháp nghiên cứu thực nghiệm kết hợp mô hình hóa tính toán. Tác giả xây dựng một đường ống (pipeline) xử lý dữ liệu và huấn luyện hoàn chỉnh trên máy ảo điện toán đám mây.
- Nguồn dữ liệu: Bộ dữ liệu thực nghiệm "Dog-vs-Cat" công khai trên Kaggle, được chia thành hai tập huấn luyện và kiểm thử độc lập.
| Thành phần lý thuyết / Kỹ thuật |
Chi tiết tác giả áp dụng trong đồ án |
| Mô hình học máy |
Học sâu có giám sát (Supervised Deep Learning) |
| Kiến trúc mạng lõi |
Mạng nơ-ron tích chập tuần tự (Sequential CNN) |
| Bộ dữ liệu thực nghiệm |
"Dog-vs-Cat" từ Kaggle (9.896 ảnh: 5.011 mèo, 4.885 chó) |
| Môi trường tính toán |
Google Colaboratory (Bộ tăng tốc phần cứng T4 GPU) |
| Hệ sinh thái thư viện |
TensorFlow, Keras, OpenCV (cv2), NumPy, Pandas, Matplotlib, PIL, OS |
Thiết kế và triển khai
Phần thiết kế và triển khai thực nghiệm được tác giả đặc tả chi tiết trong Chương 3 của văn bản, bao gồm kiến trúc mô hình, quy trình chuẩn bị dữ liệu và kịch bản huấn luyện:
1. Kiến trúc mô hình mạng CNN
Mô hình được xây dựng theo dạng khối tuần tự (Sequential) bao gồm các tầng xử lý kế tiếp nhau:
- Tầng đầu vào (Input layer): Lớp tích chập 2 chiều
Conv2D với 32 bộ lọc (filters), sử dụng hàm kích hoạt phi tuyến ReLU để trích xuất các đặc trưng hình ảnh ban đầu.
- Các tầng ẩn (Hidden layers): Các khối tích chập lặp lại với số lượng bộ lọc tăng dần. Để kiểm soát quá trình học và hạn chế hiện tượng quá khớp (overfitting), mỗi tầng tích chập được kết hợp chặt chẽ với:
- Lớp chuẩn hóa theo lô (
BatchNormalization): Giúp ổn định và tăng tốc độ hội tụ của mạng.
- Lớp gộp cực đại (
MaxPooling2D): Thu nhỏ kích thước không gian của bản đồ đặc trưng (downsampling), giảm số lượng tham số tính toán.
- Lớp ngắt kết nối ngẫu nhiên (
Dropout): Vô hiệu hóa một tỷ lệ nơ-ron nhất định nhằm ngăn chặn hiện tượng quá khớp.
- Tầng kết nối đầy đủ (Fully Connected / Dense): Lớp làm phẳng (
Flatten) chuyển đổi bản đồ đặc trưng nhiều chiều thành vector một chiều, nối tiếp bởi các lớp nơ-ron kết nối dày đặc (Dense) và Dropout.
- Tầng đầu ra (Output layer): Lớp
Dense kết hợp hàm kích hoạt Softmax để tính toán phân phối xác suất dự đoán cho 2 lớp đối tượng đầu ra.
2. Tiền xử lý dữ liệu và cấu hình siêu tham số
Quy trình tiền xử lý được chuẩn hóa thông qua module ImageDataGenerator của thư viện TensorFlow:
- Kích thước ảnh chuẩn hóa:
image_size = 128 (kích thước đầu vào $128 \times 128$ pixel).
- Không gian màu: 3 kênh màu RGB (
image_channel = 3).
- Tỷ lệ co giãn điểm ảnh: Chia giá trị mức xám ban đầu [0, 255] về khoảng [0, 1] qua phép toán
rescale = 1./255.
- Kích thước lô xử lý:
batch_size = 32.
- Cơ chế đọc dữ liệu: Sử dụng hàm
flow_from_directory đọc ảnh trực tiếp từ Google Drive với chế độ gán nhãn đa lớp class_mode = 'categorical'.
# Đoạn mã tiền xử lý dữ liệu từ văn bản khóa luận
image_size = 128
image_channel = 3
bat_size = 32
train_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
train_gen = train_datagen.flow_from_directory(
'/content/drive/MyDrive/Dog-vs-Cat/data/training_set/',
class_mode='categorical',
target_size=(image_size, image_size),
batch_size=bat_size
)
val_gen = test_datagen.flow_from_directory(
'/content/drive/MyDrive/Dog-vs-Cat/data/test_set/',
class_mode='categorical',
batch_size=bat_size,
target_size=(image_size, image_size),
shuffle=False
)
3. Biên dịch và huấn luyện mô hình
- Thuật toán tối ưu (Optimizer): Sử dụng thuật toán Adam (Adaptive Moment Estimation) kết hợp tốc độ học thích ứng và xung lượng.
- Hàm mất mát (Loss Function): Sử dụng hàm mất mát nhị phân
binary_crossentropy tương ứng với bài toán phân loại 2 lớp.
- Độ đo đánh giá (Metrics): Độ chính xác (
accuracy).
- Cơ chế điều khiển huấn luyện (Callback): Áp dụng
ReduceLROnPlateau với các tham số: giám sát độ chính xác tập kiểm định monitor = 'val_accuracy', độ trễ patience = 2, hệ số giảm factor = 0.00001, verbose = 1. Hàm này tự động hạ tỷ lệ học (learning rate) khi độ chính xác không cải thiện sau 2 chu kỳ, giúp mô hình hội tụ tốt hơn và tránh overfitting.
- Số chu kỳ huấn luyện (Epochs): 10 chu kỳ. Mô hình hoàn chỉnh được lưu trữ định dạng file trên Google Drive tại đường dẫn
/content/drive/MyDrive/Dog-vs-Cat/model.
Nội dung chính theo từng chương
Chương 1: Tổng quan về học máy
Chương 1 đóng vai trò hệ thống hóa toàn bộ bức tranh lý thuyết về trí tuệ nhân tạo, học máy và học sâu. Tác giả mở đầu bằng việc định nghĩa học máy (ML) và phân tích quy trình vận hành chuẩn gồm 7 bước cốt lõi: thu thập dữ liệu, tiền xử lý dữ liệu, lựa chọn mô hình, huấn luyện mô hình, đánh giá mô hình, điều chỉnh siêu tham số và triển khai dự đoán. Tác giả phân tích phạm vi ứng dụng rộng lớn của học máy trong các lĩnh vực công nghệ thông tin, tài chính, y tế, xe tự hành, thương mại điện tử, giáo dục và giải trí; đồng thời chỉ rõ ưu điểm tự động hóa và nhược điểm phụ thuộc lượng dữ liệu lớn cũng như nguy cơ overfitting.
Nội dung tiếp theo phân loại các phương pháp học máy (có giám sát, không giám sát, bán giám sát, tăng cường) và đi sâu vào học sâu (Deep Learning). Tác giả so sánh nguyên lý hoạt động giữa ML truyền thống và DL: DL tự động trích xuất đặc trưng phân cấp thông qua các lớp nơ-ron sâu mà không cần kỹ thuật trích xuất đặc trưng thủ công (feature engineering). Chương 1 khép lại bằng việc khảo sát bài toán phân lớp dữ liệu tổng quát (minh họa qua bài toán lọc thư rác) và đi sâu vào bài toán nhận dạng ảnh, liệt kê 5 bước thực hiện (chuẩn bị dữ liệu, xây dựng mô hình, huấn luyện, đánh giá, triển khai) cùng các ứng dụng thực tiễn như nhận dạng khuôn mặt, phát hiện vật thể và nhận dạng y học.
Chương 2: Mạng nơ-ron tích chập
Chương 2 trình bày cơ sở toán học và kiến trúc kỹ thuật của mạng nơ-ron nhân tạo nói chung và mạng nơ-ron tích chập (CNN) nói riêng. Tác giả phân tích cấu tạo nơ-ron nhân tạo gồm đầu vào, trọng số, độ lệch, hàm kích hoạt và cơ chế lan truyền ngược (backpropagation). Năm kiến trúc mạng nơ-ron tiêu biểu được so sánh: Perceptron một lớp, mạng truyền thẳng (FNN), mạng hồi quy (RNN), mạng LSTM và mạng CNN.
Phần trọng tâm của chương dành cho CNN. Tác giả làm rõ bản chất của các phép toán trên cấu trúc dữ liệu dạng lưới:
- Phép tích chập (Convolution) sử dụng các bộ lọc trượt trên ảnh để sinh bản đồ đặc trưng (feature map).
- Hàm kích hoạt phi tuyến ReLU ($f(x) = \max(0, x)$) hỗ trợ việc học các biểu diễn phức tạp.
- Phép gộp (Pooling) giảm kích thước không gian nhằm kiểm soát số lượng tham số.
- Các lớp kết nối đầy đủ (Dense) tổng hợp thông tin để đưa ra nhãn phân loại tại lớp đầu ra.
Chương 2 cũng tổng kết các ưu thế của CNN (khả năng học đặc trưng cục bộ, cơ chế chia sẻ trọng số, khả năng thu gọn dữ liệu) song song với các thách thức kỹ thuật (chi phí tính toán cao, nhu cầu tập dữ liệu lớn, tính chất "hộp đen" khó diễn giải và tính không đổi còn hạn chế trước các phép biến đổi xoay, dịch ảnh).
Chương 3: Ứng dụng của mạng nơ-ron tích chập cho phân lớp ảnh
Chương 3 là phần thực nghiệm ứng dụng của đồ án. Tác giả mô tả chi tiết hạ tầng tính toán dựa trên Google Colab với bộ tăng tốc T4 GPU cùng danh mục các thư viện phần mềm chuyên dụng (TensorFlow, Keras, OpenCV, NumPy...). Tác giả giải thích lý do lựa chọn Python nhờ tính biểu cảm cao, cú pháp trực quan và hệ sinh thái thư viện AI phong phú.
Tiếp đó, tác giả trình bày quy trình triển khai thực tế trên bộ dữ liệu "Dog-vs-Cat" từ Kaggle: cấu trúc thư mục, quy tắc tiền xử lý ảnh về kích thước $128 \times 128 \times 3$, chuẩn hóa mức xám và tạo các luồng nạp dữ liệu theo đợt. Tác giả lập trình kiến trúc mô hình CNN tuần tự, cấu hình bộ tối ưu Adam, hàm mất mát binary crossentropy và kỹ thuật callback ReduceLROnPlateau. Sau 10 epoch huấn luyện, mô hình được lưu lại và đánh giá độ chính xác tổng thể. Tác giả xây dựng hàm suy luận đơn lẻ pred_single(path) và tiến hành thử nghiệm dự đoán độc lập trên 10 kịch bản test ngẫu nhiên (mỗi kịch bản gồm 5 ảnh) trên cả tập kiểm thử lẫn tập huấn luyện.
Kết quả và đóng góp
1. Kết quả thực nghiệm định lượng
Khóa luận đã công bố hai nhóm kết quả định lượng thu được từ thực nghiệm:
- Đánh giá trên toàn bộ tập kiểm nghiệm: Sử dụng phương thức
evaluate() của TensorFlow, mô hình đạt độ chính xác 75,86%.
- Đánh giá qua các kịch bản suy luận ngẫu nhiên (Test set): Tác giả thiết lập hàm
pred_single thực hiện tiền xử lý ảnh đầu vào (resize về $128 \times 128$, chuẩn hóa mức xám về [0, 1], chuyển đổi số chiều mảng) và lấy nhãn có xác suất cao nhất qua hàm argmax. Khi tiến hành 10 lượt test độc lập, mỗi lượt lấy ngẫu nhiên 5 ảnh từ tập test, kết quả thu được như sau:
| Lượt kiểm thử (Test ID) |
Số ảnh dự đoán đúng (trên 5 ảnh) |
Số ảnh dự đoán sai (trên 5 ảnh) |
Tỷ lệ chính xác (%) |
| Test_1 |
4 |
1 |
80% |
| Test_2 |
3 |
2 |
60% |
| Test_3 |
3 |
2 |
60% |
| Test_4 |
4 |
1 |
80% |
| Test_5 |
3 |
2 |
60% |
| Test_6 |
3 |
2 |
60% |
| Test_7 |
3 |
2 |
60% |
| Test_8 |
3 |
2 |
60% |
| Test_9 |
3 |
2 |
60% |
| Test_10 |
3 |
2 |
60% |
| Trung bình 10 lượt |
3,2 / 5 ảnh |
1,8 / 5 ảnh |
64,00% |
Độ chính xác cao nhất đạt được trong các lần thử nghiệm đơn lẻ là 80% (tại Test_1 và Test_4), độ chính xác thấp nhất là 60% (tại 8 lượt còn lại), và mức trung bình đạt 64%.
2. Đóng góp kỹ thuật của đề tài
- Hoàn thiện trọn vẹn đường ống xử lý dữ liệu hình ảnh động vật từ khâu đọc file có cấu trúc, tiền xử lý chuẩn hóa dữ liệu số học đến phân luồng dữ liệu tự động bằng
ImageDataGenerator.
- Hiện thực hóa mô hình mạng nơ-ron tích chập tuần tự có tích hợp đồng thời nhiều kỹ thuật kiểm soát mô hình tiên tiến trong học sâu: tầng chuẩn hóa theo lô (
BatchNormalization), lớp ngắt kết nối (Dropout) và cơ chế tự động giảm tỷ lệ học linh hoạt (ReduceLROnPlateau).
- Xây dựng thành công module suy luận trực tiếp
pred_single cho phép nhận diện một tệp ảnh bất kỳ từ đường dẫn và trả về trực quan ảnh kèm nhãn phân lớp ('cat' hoặc 'dog').
Hạn chế và hướng nghiên cứu tiếp
Dựa trên kết quả thu được, tác giả đã thẳng thắn chỉ ra các hạn chế thực tế của đồ án:
- Độ chính xác mô hình chưa tối ưu: Mức độ chính xác 75,86% trên tập kiểm thử được đánh giá là chưa thật sự cao đối với bài toán phân loại ảnh nhị phân tiêu chuẩn.
- Rào cản về cấu hình phần cứng: Việc huấn luyện mô hình phụ thuộc vào phiên bản dịch vụ miễn phí của Google Colab (GPU T4 bị giới hạn thời gian chạy và bộ nhớ), khiến việc tăng số lượng epoch hoặc mở rộng độ sâu của mạng gặp nhiều hạn chế về tài nguyên.
- Quy mô và tính đa dạng của dữ liệu: Số lượng dữ liệu huấn luyện (khoảng gần 10.000 ảnh) còn ở mức khiêm tốn đối với mạng nơ-ron sâu; đồ án chưa áp dụng các kỹ thuật tăng cường dữ liệu phức tạp (như xoay, lật, méo ảnh) khi tạo batch để cải thiện độ tổng quát hóa.
- Phạm vi phân loại hẹp: Hệ thống mới chỉ dừng lại ở bài toán phân loại nhị phân giữa hai lớp chó và mèo, chưa mở rộng ra các loài động vật khác hoặc môi trường thực tế có nhiều đối tượng phức tạp trong cùng một khung hình.
Giá trị tham khảo
Đồ án là tài liệu tham khảo trực quan, phù hợp cho:
- Sinh viên ngành Công nghệ thông tin, Khoa học máy tính và Kỹ thuật phần mềm: Đặc biệt là những người mới bắt đầu tiếp cận chuyên đề học máy và học sâu, cần một đồ án mẫu mực về cách xây dựng mạng CNN bằng Keras/TensorFlow.
- Người nghiên cứu các đề tài phân loại ảnh cơ bản: Có thể tham khảo trực tiếp cấu trúc xây dựng mô hình tuần tự kèm code mẫu, cách kết hợp tầng tích chập với BatchNormalization và Dropout, cách thiết lập callback
ReduceLROnPlateau và cách viết hàm suy luận ảnh đơn lẻ pred_single.
- Thực hành triển khai trên môi trường điện toán đám mây: Cung cấp hướng dẫn cụ thể về việc cấu hình GPU T4 trên Google Colab và tích hợp lưu trữ dữ liệu với Google Drive mà không cần đầu tư máy tính cá nhân có phần cứng đắt tiền.
Câu hỏi thường gặp
1. Bộ dữ liệu được tác giả sử dụng trong khóa luận có đặc điểm và cấu trúc như thế nào?
Tác giả sử dụng bộ dữ liệu "Dog-vs-Cat" từ Kaggle với tổng số 9.896 ảnh, bao gồm 5.011 ảnh mèo và 4.885 ảnh chó. Dữ liệu được chia thành tập huấn luyện và tập kiểm thử, lưu trữ trong các thư mục riêng biệt; ảnh mèo được đặt tên theo quy tắc cat.x trong thư mục cats và ảnh chó là dog.x trong thư mục dogs.
2. Kích thước ảnh đầu vào và các tham số tiền xử lý được thiết lập ra sao?
Toàn bộ ảnh được chuẩn hóa về kích thước $128 \times 128$ pixel với 3 kênh màu RGB (image_channel = 3). Giá trị điểm ảnh từ khoảng [0, 255] được chia tỷ lệ co giãn về [0, 1] bằng tham số rescale=1./255. Kích thước mỗi lô huấn luyện (bat_size) là 32 ảnh.
3. Mô hình CNN trong đồ án sử dụng bộ tối ưu, hàm mất mát và cơ chế điều chỉnh tỷ lệ học nào?
Mô hình sử dụng bộ tối ưu Adam, hàm mất mát binary_crossentropy (phù hợp cho bài toán phân loại 2 lớp nhị phân) và độ đo accuracy. Quá trình huấn luyện sử dụng callback ReduceLROnPlateau để theo dõi chỉ số val_accuracy, giảm tỷ lệ học với hệ số factor = 0.00001 nếu độ chính xác kiểm định không cải thiện sau 2 epoch (patience = 2).
4. Kết quả độ chính xác của mô hình đạt được là bao nhiêu và được tác giả đánh giá như thế nào?
Khi đánh giá bằng hàm evaluate trên toàn bộ tập thử nghiệm, mô hình đạt độ chính xác 75,86%. Khi kiểm thử ngẫu nhiên 10 lần (mỗi lần 5 ảnh), độ chính xác dao động từ 60% đến 80%, đạt trung bình 64%. Tác giả nhận định kết quả này chưa thực sự tốt do hạn chế về cấu hình tính toán và quy mô dữ liệu huấn luyện.
5. Hàm suy luận cho một bức ảnh đơn lẻ (pred_single) hoạt động theo nguyên lý nào?
Hàm nhận đường dẫn ảnh, đọc ảnh bằng OpenCV (imread), thay đổi kích thước về $128 \times 128$, mở rộng số chiều mảng (np.expand_dims), chia 255.0 để chuẩn hóa mức xám, sau đó đưa qua model.predict(). Vị trí xác suất lớn nhất được xác định qua np.argmax: nếu chỉ số là 0 trả về nhãn 'cat', ngược lại trả về nhãn 'dog'.
Kết luận
Đồ án tốt nghiệp của sinh viên Trần Hải Thành đã trình bày một cách hệ thống cơ sở lý luận về học máy và học sâu, đồng thời hiện thực hóa thành công mô hình mạng nơ-ron tích chập (CNN) cho bài toán phân loại hình ảnh chó và mèo trên nền tảng Google Colab. Bằng việc kết hợp các tầng tích chập với kỹ thuật chuẩn hóa theo lô, ngắt nơ-ron ngẫu nhiên và callback điều chỉnh tỷ lệ học, mô hình đã đạt độ chính xác 75,86% trên tập dữ liệu kiểm thử. Công trình cung cấp tài liệu tham khảo chi tiết từ cấu hình mã nguồn đến đánh giá thực nghiệm cho các nghiên cứu ứng dụng thị giác máy tính ở mức độ cơ bản.