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 Giới thiệu CNN – Convolutional Neural Network đơn giản
Hướng Dẫn Đồ ÁnLập Trình AI

Giới thiệu CNN – Convolutional Neural Network đơn giản

Chia sẻ
Chia sẻ

Convolutional Neural Network (CNN) là một kiến trúc mạng nơ-ron sâu được thiết kế đặc biệt để xử lý dữ liệu dạng lưới như hình ảnh. CNN đã trở thành tiêu chuẩn trong các bài toán thị giác máy tính, từ phân loại ảnh, phát hiện đối tượng đến xử lý video.

Nếu bạn từng xem bài Tạo mô hình phân loại ảnh chó mèo với TensorFlow, bạn đã có cái nhìn ban đầu về cách CNN hoạt động trong thực tế. Bài Xây dựng mô hình phát hiện bệnh từ ảnh X-quang cũng minh chứng sức mạnh của CNN trong y học. Trong bài này, chúng ta sẽ đi sâu hơn vào lý thuyết và xây dựng một CNN đơn giản để phân loại ảnh.

Mô tả bài toán

Bài toán đặt ra là: Xây dựng một Convolutional Neural Network đơn giản để phân loại các bức ảnh vào hai nhóm: chó và mèo. Chúng ta sẽ sử dụng bộ dữ liệu Dogs vs Cats từ Kaggle, có hơn 25.000 ảnh được gắn nhãn sẵn.

Mục tiêu:

  • Hiểu cấu trúc CNN: convolution, pooling, fully connected layers

  • Triển khai CNN cơ bản với TensorFlow/Keras

  • Huấn luyện, đánh giá mô hình và trực quan hóa kết quả

Convolutional Neural Network là gì?

Kiến trúc tổng quan

CNN được xây dựng từ 3 khối chính:

  1. Convolutional Layers: Trích xuất đặc trưng từ ảnh bằng cách sử dụng các bộ lọc (kernels).
  2. Pooling Layers: Giảm chiều dữ liệu, giữ lại thông tin quan trọng nhất.
  3. Fully Connected Layers: Thực hiện dự đoán dựa trên các đặc trưng đã trích xuất.

Cách CNN xử lý ảnh

Convolution

  • Áp dụng một kernel (ma trận nhỏ, ví dụ 3×3) trượt trên ảnh đầu vào.

  • Mỗi bước trượt (stride) tạo ra một giá trị mới trong feature map.

  • Kết quả là một tập hợp các feature map biểu diễn các đặc trưng như đường viền, góc cạnh.

Pooling

  • Max pooling lấy giá trị lớn nhất trong vùng nhỏ (ví dụ 2×2).

  • Giúp giảm kích thước dữ liệu và số tham số, đồng thời làm mạng chống overfitting.

Fully Connected

  • Các layer Dense truyền thống “học” cách kết hợp các đặc trưng để phân loại.

Chuẩn bị dữ liệu

Dataset và link tải

📥 Dogs vs Cats Kaggle dataset:
https://www.kaggle.com/competitions/dogs-vs-cats/data

Tải file train.zip, giải nén thành thư mục train/ gồm hai nhóm dogscats.

Đọc và xử lý dữ liệu

!pip install tensorflow matplotlib

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_dir = '/content/train'
validation_dir = '/content/validation'

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(
    train_dir, target_size=(150, 150), batch_size=20, class_mode='binary')

Xây dựng CNN đơn giản với Keras

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.Conv2D(128, (3,3), activation='relu'),
    layers.MaxPooling2D(2,2),
    layers.Flatten(),
    layers.Dense(512, activation='relu'),
    layers.Dense(1, activation='sigmoid')
])

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

model.summary()

Huấn luyện mô hình

history = model.fit(train_generator,
                    steps_per_epoch=100,
                    epochs=20,
                    validation_data=validation_generator,
                    validation_steps=50)

Đánh giá và trực quan hóa kết quả

import matplotlib.pyplot as plt

acc = history.history['accuracy']
val_acc = history.history['val_accuracy']

plt.plot(acc, label='Training Accuracy')
plt.plot(val_acc, label='Validation Accuracy')
plt.title('Training and Validation Accuracy')
plt.legend()
plt.show()

CNN hoạt động thế nào bên trong?

  1. Các lớp convolution học từ đặc trưng đơn giản (đường, góc) đến phức tạp (hình dạng).
  2. Pooling giảm chiều dữ liệu nhưng giữ thông tin quan trọng.
  3. Layer fully connected kết hợp tất cả đặc trưng để phân loại.

Kết luận

CNN là một kiến trúc mạnh mẽ cho xử lý ảnh, với khả năng trích xuất đặc trưng tự động mà không cần thiết kế thủ công. Qua bài viết, bạn đã hiểu cơ bản về cách CNN hoạt động và cách triển khai mô hình phân loại ảnh đơn giản bằng TensorFlow/Keras.

Hướng tiếp theo, bạn có thể thử nghiệm với kiến trúc sâu hơn như VGG16, ResNet để cải thiện độ chính xác hoặc áp dụng cho các bài toán phức tạp hơn như nhận diện nhiều lớp.

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!