Deep Learning (học sâu) · Bước 3/8 · 9 phút
CNN cho hình ảnh
Bạn hiểu vì sao mạng tích chập hợp với ảnh và cách tận dụng một model đã huấn luyện sẵn.
Vấn đề của layer thông thường
Một bức ảnh màu nhỏ 224 x 224 điểm ảnh đã có khoảng 150.000 con số. Nối từng số với mọi nơ-ron trong một layer thông thường cần hàng triệu trọng số, và mạng phải học riêng rằng con mèo ở góc trên cũng chính là con mèo ở giữa ảnh.
Tích chập: một bộ lọc nhỏ, trượt khắp nơi
Layer tích chập (convolution) học các bộ lọc (filter) nhỏ, thường 3 x 3 điểm ảnh. Mỗi bộ lọc trượt khắp bức ảnh và phản ứng ở bất cứ chỗ nào có mẫu của nó, chẳng hạn một cạnh dọc. Vài trọng số ấy được dùng lại ở mọi vị trí. Nhờ vậy CNN (mạng nơ-ron tích chập) vừa hiệu quả vừa tự nhiên giỏi tìm một mẫu dù nó nằm ở đâu.
Sau đó các layer pooling hoặc tích chập có bước nhảy (stride) thu nhỏ ảnh dần. Mỗi tầng nhìn được vùng rộng hơn, nên mạng xây từ cạnh, đến kết cấu, đến bộ phận, rồi đến cả vật thể.
Transfer learning là cách làm bình thường
Hiếm khi bạn huấn luyện model ảnh từ đầu. Bạn lấy một mạng đã học trên hàng triệu ảnh, như ResNet hay EfficientNet, thay layer cuối bằng layer cho các lớp của bạn, rồi fine-tune (tinh chỉnh) trên dữ liệu của mình. Vài trăm ảnh có nhãn cho mỗi lớp có thể là đủ. Cách này gọi là transfer learning (học chuyển giao).
Vision transformer chia ảnh thành các mảnh (patch) và dùng attention, nay đã ngang hoặc vượt CNN ở nhiều bài toán, nhất là khi có nhiều dữ liệu. CNN vẫn phổ biến, nhanh, và là nơi tốt để bắt đầu học.
Thử ngay
Nhìn vào bên trong một CNN
- 1.Mở CNN Explainer tại poloclub.github.io/cnn-explainer trên trình duyệt.
- 2.Bấm vào một bộ lọc ở layer đầu tiên và xem nó làm sáng phần nào của ảnh.
- 3.Theo dõi một bức ảnh đi qua các layer cho đến điểm số của từng lớp ở cuối.
- 4.Sau đó hỏi chatbot bằng câu lệnh bên dưới để kiểm tra mình đã hiểu chưa.
Giải thích trong năm câu ngắn vì sao một layer tích chập cần ít trọng số hơn nhiều so với một layer kết nối đầy đủ (fully connected) cho ảnh 224x224. Dùng một ví dụ có con số cụ thể.