Convolutional Neural Network (CNN) trực giác hoạt động như thế nào trên ảnh?

Tác giả: AI VIET NAM (cnn là gì)

Keywords: cnn là gì

“Convolutional Neural Network (CNN) hoạt động như thế nào trên ảnh? Kernel, filter, feature map là gì?”
Tóm gọn: CNN dùng các bộ lọc trượt qua ảnh để phát hiện cạnh – hình dạng – pattern, rồi qua nhiều tầng, mô hình dần nhận ra từ đường nét → bộ phận → đối tượng hoàn chỉnh.

Bài này giúp bạn – đặc biệt Newbie & Non-Tech:

  • Hiểu “ảnh” trong máy tính trông như thế nào
  • Nắm trực giác về convolution, filter, feature map, pooling
  • Biết CNN nằm ở đâu trong pipeline phân loại ảnh và trong lộ trình AIO

Ảnh trong máy tính trông như thế nào?

Ảnh không phải “hình”, mà là ma trận số.

Một bức ảnh màu được lưu dưới dạng tensor 3 chiều:

  • Chiều cao (height)
  • Chiều rộng (width)
  • Kênh màu (channels: R, G, B)

Ví dụ ảnh 128×128×3:

  • Tổng số điểm ảnh = 128 × 128 × 3
  • Mỗi pixel là bộ 3 số (R, G, B) từ 0–255

Nhiệm vụ của CNN:
Nhìn vào “đống số” và trả lời: đây là con mèo hay con chó?


Convolution là gì? Vì sao cần kernel “quét” qua ảnh?

Nếu dùng fully-connected (MLP), vấn đề gì xảy ra?

Ảnh 128×128×3 → flatten thành vector ~49.000 phần tử.
Một layer 1.000 neuron → gần 49 triệu tham số → dễ overfit, chậm, không tận dụng cấu trúc 2D của ảnh.

Convolution layer giải quyết ra sao?

Thay vì kết nối toàn bộ, CNN dùng kernel (filter) – ma trận nhỏ:

  • 3×3, 5×5, 7×7…

Cách hoạt động:

  1. Đặt kernel lên vùng 3×3 pixel
  2. Nhân từng phần tử rồi cộng lại
  3. Trượt kernel sang vị trí khác (stride)
  4. Lặp lại cho đến hết ảnh

Kết quả:
Bạn thu được feature map – bản đồ thể hiện “mức độ xuất hiện” của pattern mà filter đang học.

Trực giác

  • Filter A học nhận cạnh dọc → sáng ở vùng có cạnh
  • Filter B học cạnh ngang
  • Filter C học texture

Nhiều filter → nhiều feature map → nhiều kiểu đặc trưng được phát hiện.


Feature map là gì? Vì sao mỗi filter “nhìn” ảnh khác nhau?

Giả sử input là ảnh mèo.

Layer convolution đầu có 32 filter → tạo 32 feature map.

Mỗi feature map là “kết quả nhìn ảnh theo một kiểu riêng”.

Trực giác:

  • Filter 1: nhạy với cạnh dọc
  • Filter 2: nhạy với đường chéo
  • Filter 3: nhạy vùng tối/sáng

Tầng sâu hơn:

  • Layer thấp: cạnh & góc
  • Layer giữa: mắt mèo, tai mèo, bánh xe
  • Layer cao: gương mặt, toàn bộ con mèo

Đây là lý do CNN học đặc trưng theo tầng bậc (hierarchical representation).


Pooling là gì? Tại sao cần giảm kích thước?

Vấn đề khi không dùng pooling

Feature map sau 2–3 layer vẫn lớn.
Flatten → số tham số “phình to”.

Pooling giúp gì?

Pooling (Max/Average):

  • Lấy vùng 2×2
  • MaxPooling → lấy giá trị lớn nhất
  • AvgPooling → lấy trung bình

Kết quả:

  • Kích thước giảm 1 nửa mỗi chiều: 64×64 → 32×32 → 16×16
  • Giảm số tham số
  • Bớt nhạy với dịch chuyển nhỏ của vật thể
  • Giữ vùng nổi bật (max)

Pipeline CNN xử lý ảnh trông thế nào?

Ví dụ bài toán: phân loại chó/mèo.

Pipeline:

  1. Input: ảnh 128×128×3
  2. Conv + ReLU + Pooling 1
    • Học cạnh, texture cơ bản
  3. Conv + ReLU + Pooling 2
    • Học part phức tạp (tai, mắt, mũi…)
  4. Conv layer 3
    • Học object-level features
  5. Flatten
  6. Fully-connected + Dropout
  7. Output (sigmoid cho chó/mèo)

Train = mô hình tự học các trọng số trong filter + FC layer để giảm loss.


Một số câu hỏi người mới hay hỏi về CNN

CNN có nhất thiết cần GPU?

  • Mô hình nhỏ → CPU vẫn chạy
  • Mô hình lớn → nên dùng GPU
  • Trong AIO → dùng Colab hoặc hạ tầng GPU tương đương

CNN chỉ dùng cho ảnh 2D?

Không.
CNN còn dùng cho:

  • 1D: audio, time-series
  • 3D: video, ảnh y tế (CT/MRI)

CNN dùng cho dữ liệu bảng được không?

Lý thuyết: có.
Thực tế: XGBoost/LightGBM/MLP phù hợp hơn.

Dùng MLP cho ảnh có ổn không?

Có thể, nhưng:

  • Tham số khổng lồ
  • Không tận dụng cấu trúc 2D
    → Kết quả tệ hơn CNN rất nhiều.

CNN được dạy như thế nào trong lộ trình AIO 1 năm?

CNN xuất hiện ở giai đoạn Deep Learning sau khi bạn đã có nền:

  • Python + Toán AI
  • SQL + Pandas + EDA
  • ML cơ bản (Regression, Classification, Tree-based, XGBoost…)

Nội dung CNN trong AIO

Bạn được học:

  • Convolution, kernel, stride, padding, pooling, feature map
  • Phân loại ảnh cơ bản (chó/mèo hoặc dataset đơn giản)
  • Các project nâng cao:
    • OCR: nhận dạng chữ trong ảnh
    • Tracking object trong video (football tracking)
    • Vision-Language (caption ảnh, Q&A dựa trên ảnh)

AIO không chỉ cho chạy code, mà còn:

  • Giải thích vì sao chọn kiến trúc
  • Dạy data augmentation
  • Hướng dẫn đọc loss/accuracy, tránh overfitting

Newbie & Non-Tech cần chuẩn bị gì trước khi học CNN?

  • Python + Numpy cơ bản
  • Hiểu cách train model ML cơ bản
  • Biết khái niệm vector, ma trận đơn giản
  • Không cần toán nặng

CNN trong AIO chỉ được đưa vào sau khi bạn đã sẵn sàng.


FAQ – Tóm tắt những câu hay hỏi về CNN

Em phải hiểu CNN rất sâu mới làm được CV?

Không.
Ở mức ứng dụng chỉ cần trực giác + biết train/debug.

CNN có lỗi thời vì Transformer?

Không.
ViT mạnh nhưng CNN vẫn cực kỳ phổ biến và hiệu quả.
Newbie nên bắt đầu bằng CNN trước.

Làm project gì sau khi học CNN?

  • 1 project phân loại ảnh đơn giản
  • 1 project OCR hoặc detection
  • Nếu theo lộ trình AIO → thêm tracking hoặc vision–language

Quan trọng: giải thích được pipeline và biết cách cải thiện model.


📌 Tài nguyên AI VIET NAM