Convolutional Neural Network (CNN) là gì? Ứng dụng trong nhận diện ảnh

Tác giả: AI VIET NAM (Convolutional Neural Network (CNN) là gì? Ứng dụng trong nhận diện ảnh)

Keywords: CNN là gì

Câu hỏi kiểu “Convolutional Neural Network (CNN) là gì, khác gì mạng nơ-ron thường, và dùng để nhận diện ảnh như thế nào?” xuất hiện liên tục trong inbox tụi mình.
Câu trả lời ngắn: CNN là một kiến trúc Deep Learning được thiết kế riêng cho dữ liệu dạng ảnh/lưới, cực mạnh trong các bài toán nhận diện & hiểu nội dung hình ảnh.

Trong bài này, mình sẽ cùng bạn:

  • Giải thích CNN ở mức trực quan cho người không chuyên Toán.
  • Trả lời câu hỏi “khi nào nên dùng CNN, khi nào không cần?”.
  • Mô tả pipeline nhận diện ảnh đơn giản.

CNN là gì nếu không giỏi Toán?

Hiểu ngắn gọn về CNN

Nếu bỏ qua công thức, bạn có thể tạm hiểu:

  • Ảnh số là một “tấm lưới” pixel (vd: 224×224).
  • CNN là một loại mạng nơ-ron:
    • Không nhìn từng pixel riêng lẻ, mà nhìn từng “miếng nhỏ” (patch).
    • Dùng các filter/kernel trượt trên ảnh để phát hiện cạnh, góc, pattern…

Càng lên cao, CNN học đặc trưng càng trừu tượng:

  • Lớp dưới: cạnh ngang, cạnh dọc.
  • Lớp giữa: mắt, mũi, tai.
  • Lớp cao: “mặt mèo”, “bánh xe”, “chiếc áo đỏ”…

Nói dễ hiểu: CNN giống như nhiều lớp “kính lọc”, mỗi lớp giúp model nhìn rõ hơn một đặc trưng.

Vì sao CNN là “mặc định” cho bài toán ảnh?

Vì CNN:

  • Tận dụng cấu trúc không gian của ảnh.
  • Dùng chung trọng số → giảm tham số rất nhiều.
  • Nhận ra cùng một pattern ở nhiều vị trí.
  • Học feature tự động thay vì phải hand-craft.

Không dùng MLP cho ảnh được à?

Về lý thuyết: được. Nhưng thực tế có 3 vấn đề:

Số tham số khổng lồ

Ảnh 224×224×3 → hơn 150K giá trị.
Flatten rồi đưa qua MLP → hàng trăm triệu tham số, khó train và dễ overfit.

Không tận dụng cấu trúc ảnh

MLP coi mỗi pixel là độc lập → bỏ qua mối quan hệ không gian.

Kém hiệu quả

Trong hầu hết trường hợp, CNN vượt trội hơn MLP trong bài toán ảnh.


CNN hoạt động như thế nào ở mức trực quan?

“Convolution” là gì?

  • Có một ảnh (ma trận pixel).
  • Có một filter nhỏ (vd: 3×3).
  • Filter trượt từng vị trí, nhân-và-cộng để tạo ra feature map.

Nếu filter học được “cạnh ngang”, feature map sẽ sáng ở vùng có cạnh ngang.
Mỗi filter học một pattern: cạnh dọc, họa tiết, góc tròn…

Pooling layer làm gì?

  • Chia feature map thành các ô nhỏ (vd: 2×2).
  • Lấy max hoặc average trong mỗi ô.

Giúp:

  • Giảm kích thước.
  • Bớt nhạy với dịch chuyển nhỏ.
  • Giảm chi phí tính toán.

Activation & Fully-Connected

Pipeline đơn giản: Conv → ReLU → Pooling → lặp vài lần → Flatten → FC → Output


Khi nào nên dùng CNN trong thực tế?

Những bài toán “chuẩn bài”

Dữ liệu dạng ảnh:

  • Ảnh chụp, ảnh sản phẩm, tài liệu scan
  • Ảnh y tế
  • Frame video

CNN phù hợp cho:

  • Phân loại ảnh
  • Object Detection (YOLO, Faster R-CNN…)
  • Segmentation
  • OCR
  • Kiểm tra lỗi sản xuất

Khi nào CNN không cần thiết?

Nếu dữ liệu là tabular (khách hàng, giao dịch, đơn hàng…), bạn không cần CNN.
Dùng ML truyền thống hoặc MLP đơn giản là đủ.


Newbie/Non-Tech cần gì trước khi học CNN?

Nên có các nền tảng:

Python cơ bản

Đọc file, list/dict, loop, function.

Numpy & Pandas

Hiểu array, shape, axis.

Kiến thức ML nền

Train/test split, overfitting, metrics.

Hiểu Deep Learning cơ bản

Feedforward, activation, loss, optimizer.

Bạn không cần giỏi toán, chỉ cần hiểu vector, ma trận và ảnh là tensor 3 chiều.


CNN trong chương trình AIO 1 năm

CNN nằm ở đâu trong lộ trình?

CNN xuất hiện sau khi học viên đã vững:

  • Python, Numpy, Pandas
  • ML cơ bản
  • MLP trên tabular

Trong module Computer Vision, học viên sẽ:

  • Hiểu trực quan về convolution, pooling, stride, padding
  • Xây CNN bằng PyTorch/TensorFlow
  • Làm bài tập từ MNIST/CIFAR → dữ liệu thực tế

Ví dụ dự án CNN trong AIO

  • Phân loại ảnh sản phẩm/quần áo
  • OCR đơn giản
  • Vision-Language hoặc tracking cầu thủ (giai đoạn sau)

Mục tiêu: làm được một pipeline CNN hoàn chỉnh để đưa vào portfolio.


Pipeline nhận diện ảnh cơ bản

Thu thập & gắn nhãn

Chuẩn bị ảnh cân bằng giữa các lớp.

Tiền xử lý & chia tập

Resize, chuẩn hóa pixel, chia train/val/test.

Data Augmentation

Lật, xoay, zoom, chỉnh sáng.

Xây CNN

Conv + ReLU + Pooling → Flatten → FC → Softmax.

Train & đánh giá

Dùng cross-entropy, Adam, theo dõi loss/accuracy.

Test & triển khai

Đóng gói API hoặc tool upload ảnh.


FAQ: Câu hỏi thường gặp về CNN & AIO

Không có GPU có học CNN được không?

Được. Model nhỏ vẫn train bằng CPU.
AIO thiết kế bài tập phù hợp máy tầm trung.

Không giỏi Toán có học được không?

Có.
Chỉ cần nắm toán nền tảng (vector, ma trận, đạo hàm ở mức ý tưởng).

Chỉ học CNN mà không học ML truyền thống được không?

Không nên nếu muốn đi nghề AI/DS nghiêm túc.

Sau 1 năm AIO có làm được dự án CNN không?

Nếu bạn cam kết thời gian và làm đủ bài tập → hoàn toàn được.


Tài nguyên học thêm

📌 Đây là một phần nội dung gắn với chương trình AIO – khóa học AI & Khoa học dữ liệu 1 năm của AI VIET NAM, dành cho Newbie & Non-Tech.

Nếu bạn muốn học AI bài bản từ 0 với mentor đồng hành, bạn có thể: