“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:
Đặt kernel lên vùng 3×3 pixel
Nhân từng phần tử rồi cộng lại
Trượt kernel sang vị trí khác (stride)
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”.