Hình 2.11. Một mô hình CNN với các thành phần cơ bản
Phát biểu một cách tổng quan đơn giản nhất khi quan sát hình trên, ta có thể thấy bài toán nhận dạng hình ảnh với mô hình CNN [5] thực hiện một số bước như sau :
- Phân giải hình ảnh thành một ma trận. - Rút trích các đặc trưng trong ảnh.
- Tìm các đặc trưng tổng quát giữ lại, giảm mẫu, thu nhỏ số chiều. - Đưa kết quả sau khi giảm mẫu vào một mạng nơ-ron để dự đoán.
- Ba bước trên có thể thực hiện nhiều lần tùy theo độ phức tạp của mô hình. - Trả về kết quả phân lớp của ảnh theo thứ tự độ thuộc với từng phân lớp (Tức là phân lớp có trọng số càng cao thì khả năng hình ảnh sẽ thuộc về phân lớp đó và ngược lại với các phân lớp có trọng số nhỏ dần).
Ở hình ta thấy từ hình ảnh đầu vào qua nhiều tầng xử lý khác nhau sẽ cho kết quả xử lý cuối cùng là các bản đồ đặc trưng và phân lớp ảnh. Hình 17 thể hiện 02 giai đoạn có trong một mô hình CNN là học đặc trưng (feature learning) và phân lớp dữ liệu (classification). Công việc trích xuất các đặc trưng của hình ảnh với mô hình CNN là hoàn toàn tự động, việc trích xuất sẽ có nhiều kết quả khác nhau dựa vào cấu hình và số lượng của các tầng xử lý trong giai đoạn huấn luyện đặc trưng. Sau đó các đặc trưng tổng quát cuối cùng sẽ được liên kết với nhau và đưa về những phân lớp kết quả đầu ra. Không như các kỹ thuật phân lớp truyền thống tiến hành
việc phân lớp dựa trên các đặc trưng ảnh được rút trích thủ công, mô hình CNN thực hiện việc rút trích đặc trưng ảnh này một cách tự động [5]. Đầu vào đơn giản là hình ảnh mà bạn cần phân lớp, mô hình CNN sẽ thực hiện mọi thứ cho bạn và trả về kết quả phân lớp mà bạn mong muốn. Việc này tiết kiệm được khá nhiều thời gian, công sức cho người sử dụng, nhưng tất nhiên đổi lại cần phải có máy tính có cấu hình tốt để giải quyết công việc xử lý, tính toán.
Cũng trên hình ta thấy những khái niệm ta cần quan tâm đối với một mô hình CNN có thể kế đến là Convolution, ReLu, Pooling, Flatten, Fully Connected, Softmax. Trong đó Convolution, Pooling, Fully Connected có thể nói là các tầng xử lý chính còn ReLu, Flatten, Softmax là các kỹ thuật để hỗ trợ quá trình xử lý.
Tầng Convolution
Convolution có nghĩa là tích chập. Trong toán học, tích chập là một phép toán thực hiện với hai hàm số f và g, kết quả cho ra một hàm số thứ 3. Trong lĩnh vực xử lý ảnh, tích chập được sử dụng khá rộng rãi và hết sức quan trọng. Ví dụ : đối với yêu cầu làm mờ ảnh, phép tích chập giữa ma trận lọc và ảnh gốc sẽ cho ra kết quả ảnh đã được làm mờ (xóa nhiễu).
Công thức tích chập giữa hàm ảnh f (x, y) và bộ lọc k (x, y) (k là ma trận có kích thước mxn) như sau :
𝑓(𝑥, 𝑦) ∗ 𝑘(𝑥, 𝑦) = ∑ ∑ 𝑘(𝑢, 𝑣)𝑓(𝑥 − 𝑢, 𝑦 − 𝑣) 𝑛 2 𝑣=−𝑛2 𝑚 2 𝑢=−𝑚2 (2.11)
Tầng tích chập là một tầng ẩn trong mô hình CNN được dùng để phát hiện và trích xuất đặc trưng của hình ảnh. Giống như các tầng ẩn khác, tầng tích chập nhận dữ liệu của tầng đầu vào (ở đây là ma trận biểu diễn ảnh cần phân lớp), tiến hành các phép biến đổi (tích chập) để tạo ra dữ liệu đầu vào cho tầng tích chập ẩn kế tiếp. Số lượng tầng tích chập là do nhà thiết kế mô hình xây dựng. Phép biến đổi được sử dụng là phép tính tích chập. Mỗi tầng tích chập chứa một hoặc nhiều bộ lọc hay bộ phát hiện đặc trưng (filter - feature detector) tùy theo người thiết kế mô hình cho phép phát hiện và trích xuất các đặc trưng của hình ảnh.
Đặc trưng ảnh là những chi tiết xuất hiện trong ảnh, từ đơn giản như góc, cạnh, hình dạng, chữ viết, chữ số tới đối tượng phức tạp hơn như đôi mắt, khuôn mặt, hoặc đối tượng cụ thể như con chó, mèo, chiếc xe, đèn giao thông, …
Bộ lọc hay bộ phát hiện đặc trưng là các Kernel được biểu diễn dưới dạng ma trận vuông (phổ biến nhất là ma trận 3x3 hay 5x5). Khái niệm Kernel là một thường xuất hiện trong lĩnh vực thị giác máy tính thường dùng để biến đổi hình ảnh với một mục đích nào đó. Mục đích của chúng trong mô hình CNN là giúp tăng cường, phát hiện và trích xuất các loại đặc trưng của ảnh, có thể là bộ lọc góc, cạnh, đường chéo, hình tròn, hình vuông...
Ảnh gốc
Áp dụng Kernel để phát hiện cạnh
Áp dụng Kernel làm sắc nét ảnh
Hình 2.12. Một số bộ lọc Kernel trong xử lý ảnh
Như đã thảo luận về việc CNN giải quyết được vấn đề hình ảnh có kích thước lớn trong deep learning thì tầng tích chập này là bước để thực hiện điều đó. Ngay tại tầng này, các bộ lọc sẽ áp vào từng điểm ảnh, vùng ảnh và trượt đến toàn bộ hình ảnh theo thứ tự từ trái qua phải, từ trên xuống dưới. Mỗi lần áp một bộ lọc vào một vùng trong ảnh, phép tính tích chập giữa bộ lọc và giá trị điểm ảnh trong vùng ảnh đó sẽ được thực hiện. Sau phép tích chập này, kích thước ảnh sẽ bị giảm nhỏ lại.
Hình 2.13. Tích chập bộ lọc vào ảnh với stride = 1
Để xác định bộ lọc sẽ trượt qua các vùng ảnh như thế nào, ta có thêm tham số bước trượt (Stride). Bước trượt là khoảng cách giữa 2 bộ lọc khi nó quét qua toàn ảnh. Với stride = 1, bộ lọc sẽ quét 2 điểm ảnh ngay cạnh nhau, nhưng với stride = 2, bộ lọc sẽ quét điểm số 1 và số 3, bỏ qua điểm số 2 ở giữa. Có thể thấy ở hình trên với một ảnh có kích thước 5x5, sau khi áp dụng bộ lọc 3x3 với bước trượt là 1 thì
ảnh trích xuất ra sẽ giảm kích thước còn 3x3. Ta chọn bước trượt và bộ lọc càng lớn thì ảnh đầu ra của ảnh sẽ càng giảm nhỏ. Nếu muốn giữ nguyên kích thước của ảnh sau khi áp dụng bộ lọc thì ta có thể thêm vùng đệm (Padding). Bộ đệm này sẽ tạo thêm một vùng ảnh trống bao quanh ảnh gốc, các điểm ảnh trống này có giá trị là 0, do đó nó không làm ảnh hưởng đến kết quả tích chập ảnh với bộ lọc mà chỉ giúp giữ nguyên kích thước của ảnh sau khi chập.
Hình 2.14. Tích chập bộ lọc vào ảnh với stride = 1 có thêm padding
Nếu chú ý ta có thể thấy một số bộ lọc mang giá trị âm, việc tích chập các bộ lọc này với ảnh gốc sẽ tạo nên một số điểm có giá trị âm. Trên thực tế ảnh màu thường được thể hiện và lưu trữ theo chuẩn RGB. Chuẩn màu RGB với 3 kênh màu, mỗi kênh màu nhận giá trị dương từ 0 đến 255 (màu đen sẽ có dạng {0,0,0}, màu trắng {255,255,255}, màu đỏ {255,0,0}, …) Để giải quyết các giá trị âm sau khi tích chập, người ta sử dụng thêm các hàm kích hoạt (activation function) như sigmoid, relu, elu… Một hàm kích hoạt điển hình là relu được sử dụng khá phổ biến với nhiệm vụ chuyển tất cả các điểm ảnh giá trị âm về 0, lúc này đây các điểm ảnh này sẽ có màu đen và những điểm ảnh khác được chạy qua bộ lọc sẽ được hiện rõ hơn. Trong toán học, ReLu được gọi là một hàm phi tuyến tính.
Cuối cùng sau tất cả các tính toán, kết quả đầu ra của các tầng tích chập là một biểu đồ đặc trưng (feature map) và tập đặc trưng này là một bản scan của đầu vào ban đầu, nhưng được trích xuất ra các đặc trưng trừu tượng hơn.
Tầng Pooling
Tầng này có chức năng gần giống như một phần của tầng tích chập đó là làm giảm kích thước của hình ảnh đầu vào. Ở đây toàn bộ các điểm ảnh đều được quét qua với bước trượt tương tự định nghĩa ở hàm tích chập. Nhưng ở đây phép biến đổi chỉ là so sánh và chọn điểm ảnh tiêu biểu để đại diện cho một vùng chọn chứ không phải áp dụng một bộ lọc để làm thay đổi giá trị của từng điểm ảnh đó. Đôi khi trong các nghiên cứu khác người ta đặt tên cho tầng này là subsampling (lấy mẫu nhỏ) hay downsampling (giảm mẫu) với cùng một tính năng.
Ở tầng tích chập, mặc dù các bộ lọc làm giảm kích thước của hình ảnh nhưng mỗi liên kết giữa những điểm ảnh cạnh nhau dường như vẫn được giữ lại. Nhưng ở tầng pooling, việc giảm kích thước của hình ảnh dựa vào đặc trưng cục bộ vùng đang xét duyệt, nó sẽ quyết định chọn một giá trị đại diện và loại bỏ các giá trị khác trong phạm vi vùng đó. Tùy vào mục đích, yêu cầu của bài toán người ta sẽ sử dụng tiêu chí để chọn giá trị đại diện bằng các hàm min pooling (lấy giá trị nhỏ nhất đại diện), max pooling (lấy giá trị nhỏ nhất đại diện), average pooling (trung bình cộng các giá trị làm đại diện),… Thông thường với mục tiêu tăng cường đặc trưng cho ảnh để tiếp tục đưa vào huấn luyện ở các tầng kế tiếp, người ta thường sử dụng hàm max pooling.
Hình 2.15. Minh họa tầng Pooling với pooling window = 2 và stide = 2 Thông thường trong một mô hình mạng CNN, tầng Pooling được nối trực tiếp ngay sau tầng tích chập. Mục đích giúp hạn chế tham số mà ta cần phải tính toán, từ đó giảm thời gian tính toán, tránh việc so sánh quá khớp (overfitting).
Tầng Fully Connected
Tầng FC là tầng cuối cùng của mô hình CNN, ở tầng này ta sẽ biết được cơ sở để đưa ra quyết định về phân lớp của hình ảnh. Tầng FC sẽ sử dụng kết quả của các tầng tích chập và pooling và chuyển thành một vector giá trị có độ dài là N, với
N tương ứng với số lớp cần phân lớp hay nhận diện. Ví dụ với bộ dữ liệu MNIST có 10 loại ký tự từ 0-9 nên tại tầng FC sẽ xuất ra một vector có chiều dài N = 10 với giá trị đầu tiên của vector thể hiện cho phân lớp ký tự “0”, giá trị cuối cùng của vector thể hiện cho phân lớp ký tự “9” và thứ tự này do chúng ta sắp xếp từ đầu trước khi đưa tập dữ liệu vào huấn luyện. Cụ thể hơn với ví dụ bên dưới, tầng FC trả về vector với 4 phân lớp theo thứ tự “dog”, “cat”, “boat”, “bird” với giá trị {0.01 ; 0.04 ; 0.94 ; 0.02}. Với kết quả này thì phân lớp thứ 3 “boat” có giá trị cao nhất 0.94, do đó kết quả hình ảnh đầu vào sẽ được dự đoán vào phân lớp “boat”.
Hình 2.16. Mô hình CNN với tầng FC cho kết quả dự đoán 4 phân lớp
Các đặc trưng đã được rút trích ở tầng tích chập và pooling được thực tế biểu diễn ở dạng các ma trận nhiều chiều. Để FC có thể dùng được các đặc trưng này phải thông qua một hàm đó là Flatten (làm phẳng), hàm này đã biến các ma trận đặc trưng thành một vector. Ta có thể nhận thấy tầng FC có cấu trúc như một mô hình NN đã được giới thiệu ở phần trước với nhiệm vụ lấy các thông tin đặc trưng đầu vào và trả về phân lớp của hình ảnh. Tùy theo mô hình, tầng FC có thể được thực hiện nhiều lần, mỗi lần như thế các đặc trưng của ảnh lại càng được trừu tượng hơn, giống như một đặc trưng tổng quát mang tính đại diện cho từng phân lớp. Ví dụ với hình ảnh con chó thì, từng điểm ảnh trong đó là những đặc trưng cấp thấp, sau khi tổng hợp tạo thành những đặc trưng cấp cao hơn như lỗ tai, mũi, miệng, … Chính những đặc trưng cấp cao này cho ta biết đây là hình ảnh của một con chó.
Nhưng thực tế lúc này đây, đầu ra của các tầng FC vẫn là một vector giá trị, và thường nhiều hơn số lượng phân lớp ta cần phân chia. Ngay sau tầng FC, vector giá trị sẽ được chuẩn hóa lần cuối bằng hàm Softmax (một hàm chuẩn hóa theo cơ số
mũ etrong toán học) để trả về phân bố xác suất với N phân lớp.