# Convolutional neural network ## Convolutional neural network - Giả sử ta có 1 tấm ảnh màu có kích thước $480 \times 480$, làm thế nào máy có thể nhận dạng được tấm ảnh này? - Input: $480 \times 480 \times 3 = 691200$ giá trị pixels $\Rightarrow$ kích thước quá lớn. - CNN giúp giảm số chiều đầu vào và vẫn giữ được các đặc trưng quan trọng của tấm ảnh. --- ## Convolutional neural network - Chúng ta phân biệt các vật thể khác nhau như thế nào? ![](https://amthuckheotay.com/wp-content/uploads/2015/09/qua-chuoi-banana.jpg =440x300) ![](https://trungtamtienghan.edu.vn/uploads/news/2019_07/cach-noi-qua-tao-bang-tieng-han_1.jpg =x300) --- ## Convolutional neural network - $\Rightarrow$ Các đặc trưng đường nét, cạnh, màu sắc, kích thước... - Làm thế nào để máy có thể hiểu 1 tấm ảnh? --- ## CNN giúp chúng ta giải quyết điều gì? - CNN giúp máy tính “nhìn” và “phân tích” 1 tấm ảnh tìm ra các đặc trưng của tấm ảnh. - CNN có 02 phần chính: Lớp trích xuất đặc trưng của ảnh (Conv, Relu và Pool) và Lớp phân loại (FC và softmax). --- ## CNN giúp chúng ta giải quyết điều gì? ![](https://miro.medium.com/max/1200/1*XbuW8WuRrAY5pC4t-9DZAQ.jpeg) --- ## Đầu vào (dữ liệu training): Input đầu vào là một bức ảnh được biểu diển bởi ma trận pixel với kích thước: [W x H x D] - W: chiều rộng - H: chiều cao - D: Là độ sâu, hay dễ hiểu là số lớp màu của ảnh. --- ## Đầu vào (dữ liệu training): - Ví dụ ảnh RGB sẽ là 3 lớp ảnh Đỏ, Xanh Dương, Xanh. ![](https://miro.medium.com/max/1000/1*15yDvGKV47a0nkf5qLKOOQ.png) --- ## Conv Layer: - Mục tiêu của các lớp tích chập là trích xuất các đặc trưng của ảnh đầu vào. - Đối với 1 kênh màu: ![](https://miro.medium.com/max/1000/1*GcI7G-JLAQiEoCON7xFbhg.gif =480x320) --- ## Conv Layer: - Lớp Conv so khớp bộ lọc (filter) với từng phần của tấm ảnh: ![](https://miro.medium.com/max/790/1*1VJDP6qDY9-ExTuQVEOlVg.gif) --- ## Conv Layer: - Đối với nhiều kênh màu: ![](https://i0.wp.com/nttuan8.com/wp-content/uploads/2019/03/conv.gif?w=1400&ssl=1) --- ### Conv Layer: - Vậy kích thước đầu ra của ảnh với mỗi layer được tính như thế nào? - Giả sử ảnh đầu ra là [W2 x H2 x D2] $H2*W2*D2=(\frac{H-F+2P}{S} + 1) * (\frac{W-F+2P}{S} + 1) * K$ - Trong đó: - [W1xH1xD1]: Kích thước đầu vào - F: Kích thước bộ lọc Kernel - S: giá trị Stride, K: Số lượng bộ lọc (Depth) - P: số khung zero-padding thêm vào viền ảnh --- ## Conv Layer: - Ví dụ về kích thước khi qua các layer ![](https://github.com/mbadry1/DeepLearning.ai-Summary/raw/master/4-%20Convolutional%20Neural%20Networks/Images/05.png) --- ## Pooling Layer: - Layer này giúp ta có thể giảm số chiều của đầu vào nhưng vẫn giữ được các đặc trưng cần thiết. - Ví dụ: Max pooling với bộ lọc 2x2. ![](https://miro.medium.com/max/1204/1*SmiydxM5lbTjoKWYPiuzWQ.png =520x230) --- ## Fully_Connected Layer (FC): - Khi kết thúc phần trích xuất, ta có thêm 1 lớp flatten, trải các ma trận thu được thành 1 vector đặc trưng. Vector này là input cho lớp fully connected layer. ![](https://miro.medium.com/max/1200/1*XbuW8WuRrAY5pC4t-9DZAQ.jpeg) ---
{"metaMigratedAt":"2023-06-15T09:20:28.081Z","metaMigratedFrom":"YAML","title":"Convolutional neural network","breaks":true,"contributors":"[{\"id\":\"b683ab44-e425-4d49-ab75-8b5d1906204e\",\"add\":10100,\"del\":6996}]"}
    515 views