Trước tiên, chúng ta hãy tìm hiểu xem CNN là gì?. Cấu trúc như thế nào?…
CNN là gì?
CNN, viết tắt của Convolutional Neural Network (Mạng nơ-ron tích chập), là một trong những mô hình Deep Learning tiên tiến. CNN được sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh. Để tìm hiểu tại sao thuật toán này được sử dụng rộng rãi cho việc nhận dạng (detection), chúng ta hãy cùng tìm hiểu về thuật toán này.
Các lớp cơ bản của mạng CNN là gì?
Convolutional layer:
Đây chính là lớp đóng vai trò mấu chốt của CNN, khi layer này đảm nhiệm việc thực hiện mọi tính toán. Stride, padding, filter map, feature map là những yếu tố quan trọng nhất của convolutional layer.
- Cơ chế của CNN là tạo ra các filter áp dụng vào từng vùng hình ảnh. Các filter map này được gọi là ma trận 3 chiều, bên trong chứa các parameter dưới dạng những con số.
- Stride là sự dịch chuyển filter map theo pixel dựa trên giá trị từ trái sang phải.
- Padding là các giá trị 0 được thêm cùng lớp input.
- Feature map: Sau mỗi lần quét, một quá trình tính toán sẽ được thực hiện. Feature map sẽ thể hiện kết quả sau mỗi lần filter map quét qua input.
Relu layer:
Còn có tên gọi khác là activation function (hàm kích hoạt). Đúng như tên gọi của nó, đây là một hàm được kích hoạt trong neural network. Hàm này có tác dụng mô phỏng các neuron có tỷ lệ truyền xung qua axon. Trong activation function chúng còn có hàm nghĩa là: Relu, Tanh, Sigmoid, Maxout, Leaky,… Relu layer được ứng dụng phổ biến trong việc huấn luyện nơ-ron do sở hữu nhiều ưu điểm tiên tiến.
Pooling layer:
Khi nhận phải đầu vào quá lớn, các lớp pooling layer sẽ được xếp giữa những lớp Convolutional layer nhằm mục đích giảm parameter. Pooling layer được chia thành 2 loại phổ biến là max pooling và average.
Fully connected layer:
Khi 2 lớp convolutional layer và pooling layer nhận được ảnh truyền, lớp này sẽ có nhiệm vụ xuất kết quả. Khi ta nhận được kết quả là model đọc được thông tin ảnh, ta cần phải tạo sự liên kết để cho ra nhiều output hơn. Đây chính là lúc các lập trình viên sử dụng fully connected layer. Hơn nữa, nếu fully connected layer có dữ liệu về hình ảnh thì chúng sẽ chuyển thành mục chưa được phân chia chất lượng.
Dưới đây là hình ảnh mô tả các lớp trong mô hình CNN.
Chương trình tạo model AI bằng CNN
Hãy clone repository này về
https://github.com/tranhuuvinh1109/cnn.git
Hãy tải tệp dataset ở đây và giải nén nó ra.
Sau khi giải nén, chúng ta sẽ có được cấu trúc thư mục như hình dưới
Tiếp đến, hãy chạy lệnh: pip install -r requirements.txt để tải những package cần thiết
Thay đổi nhưng thông tin như save_name, dataset_path và save_path đúng với đường đẫn mà bạn chỉ định ở máy của bạn
Sau đó hãy chạy lệnh: python index.py
Như vậy là chúng ta đã tạo ra model CNN thành công. Tiếp theo chúng ta hãy test xem nó có phân loại đúng không nhé. Mình đã tạo ra file Colab để test model.
Truy cập Colab
Như hình trên, mình đã đưa 1 hình ảnh là xe oto và model AI đã phân loại ra đó là “Car” với confidence là hơn 76%.