7 8 9 a b c d e f i h g f e d c b a g h i = + + + + + + + +
Nếu mặt nạ tích chập đối xứng theo chiều dọc và ngang thì phép tích chập là:
, , 1 1 * n m i j i j i j K I K I = = = å (2.3)
Trong xử lý ảnh, một Kernel được sử dụng với kích thước thơng thường là 3x3, 5x5, 7x7,… và mỗi hình ảnh lại có một kích thước bất kỳ. Do đó, việc tính tốn tích chập được di chủn Kernel trên tồn bộ hình ảnh bắt đầu từ góc trên bên trái. Sau đó, mặt nạ
Kernel được dịch chuyển sang phải một điểm ảnh (pixel) và một giá trị tích chập mới
được tính. (Lưu ý: vùng ảnh tính tích chập và mặt nạ Kernel có cùng kích thước). Khi
dịch chuyển Kernel từ góc trên bên trái đến tồn bộ hình ảnh để tính tích chập, một ánh xạ đặc trưng hay còn gọi là bản đồ đặc trưng (feature map) được tạo ra.
Hình 2.7: Minh họa tích chập ảnh đầu vào và kết quả Bảng đồ đặc trưng
Mặt nạ kernel trong hình vẽ được sử dụng để dị cạnh của đối tượng, các giá trị dương trong feature map mơ tả các đặc tính có thể nhìn thấy được, các giá trị zero có nghĩa là khơng có giá trị đặc trưng và các giá trị âm mô tả các đặc trưng dưới dạng âm bản của các đặc tính dương. Kết quả feature map đầu ra nhỏ hơn kích thước của ảnh ban đầu sau khi đã thực hiện phép tốn tích chập. Nếu sử dụng một kernel càng lớn hơn thì feature map sẽ càng nhỏ hơn. Giả sử một kernel có kích thước là n m thì ảnh đầu vào sẽ giảm kích thước là(n− 1) (m−1). Để feature map đầu ra có cùng kích thước với ảnh đầu vào, ta cần phải thêm các giá trị cho ảnh đầu vào (thường là giá trị 0). Ví dụ như nếu ảnh đầu vào có kích thước là 12 12 và kernel có kích thước là 5 5 thì ta phải thêm 4 dịng (cột) cho ảnh đầu vào, hoặc có thể thêm 2 dòng và 2 cột cho mỗi cạnh bên của ảnh đầu vào.
Việc thực hiện phép tốn tích chập này tương tự như tính toán các nơ-ron nhưng kết nối không đầy đủ (nghĩa là mỗi nơ-ron khơng kết nối với tồn bộ nơ-ron ở lớp trước đó). Theo như ví dụ trên, ảnh đầu vào có kích thước là 8 8 được thực hiện tích chập với kernel 3 3 và cho kết quả là feature map có kích thước 6 6 , nghĩa là đầu vào là 64 nút, đầu ra tương ứng với 36 nơ-ron, mỗi nơ-ron này chỉ kết nối với một nhóm các nơ- ron trước đó dựa trên phép tích chập (trong trường hợp trên là 9 kết nối). Các kết nối này được thực hiện cùng một cách dựa trên việc trượt mặt nạ kernel trên ảnh ban đầu để tính tích chập.
Trong thực nghiệm, mỗi lớp tích chập dựa trên nhiều mặt nạ kernel khác nhau và được xem như là một mạng nơ-ron nhân tạo với trọng số là các giá trị trong kernel và giá trị bias được tạo ra tương ứng với các feature map khác nhau. Ví dụ như hình trên nhưng lớp tích chập có 5 kernel, mỗi kernel có kích thước là 3 3 , với 36 đầu ra cho mỗi kernel (theo cơ chế share weight), khi đó số nơ-ron đầu ra là 36 5 180 = . Mỗi nhóm nơ-ron chia sẻ các trọng số, do đó ta có 45 trọng số trong 5 nhóm kernel và 5 giá trị bias cho toàn mạng trong trường hợp này.
Nếu áp dụng mạng tích chập cho ảnh màu thì các nơ-ron đầu ra là ba chiều theo không gian màu RGB, mỗi chiều là một dãy các feature map theo từng màu sắc. Tại mỗi điểm ( , )x y , cơng thức tích chập có thể được mơ tả lại như sau:
( ) ( ) ( ) , , , , 1, 1 1 1 1 * , 1.. d n m f f f y x l i j l y i x j l i j K I K I + − + − b f z = = = = + = å (2.4)
Ví dụ: có hình ảnh 32x32x3 và sử dụng bộ lọc có kích thước 5x5x3 (lưu ý rằng độ sâu của bộ lọc tích chập khớp với độ sâu của hình ảnh, cả hai đều là 3). Khi bộ lọc ở một vị trí cụ thể, nó sẽ bao phủ một lượng nhỏ đầu vào và thực hiện phép tốn tích chập được mơ tả ở trên. Tiến hành trượt bộ lọc qua đầu vào như trên và thực hiện phép tích chập ở mọi vị trí tổng hợp kết quả trong một bản đồ đặc trưng. Bản đồ đặc trưng này có kích thước 32x32x1, được hiển thị dưới dạng lát màu đỏ ở bên phải Hình 2.8.
Hình 2.8: Minh họa q trình tích chập nhiều lớp
Nếu sử dụng 10 bộ lọc khác nhau, thì sẽ có 10 bản đồ đặc trưng có kích thước 32x32x1 và xếp chúng dọc theo kích thước chiều sâu sẽ cho kết quả cuối cùng của lớp tích chập: một khối lượng có kích thước 32x32x10, được hiển thị dưới dạng hộp lớn màu xanh lam ở bên phải. Lưu ý rằng chiều cao và chiều rộng của bản đồ đặc trưng là không thay đổi và vẫn là 32, đó là do có lớp đệm.
Hình 2.9 dưới đây, ta có thể thấy cách hai bản đồ đặc trưng được xếp chồng lên nhau dọc theo chiều sâu. Thao tác tích chập cho mỗi bộ lọc được thực hiện độc lập và các bản đồ tính năng kết quả là rời rạc.
Hình 2.9: Minh họa bảng đồ đặc trưng xếp chồng lên nhau
* Lớp tích chập như là bộ phát hiện đặc trưng (feature detector)
Lớp tích chập có chức năng chính là phát hiện các đặc trưng cụ thể của bức ảnh. Những đặc trưng này bao gồm đặc trưng cơ bản là góc, cạnh, màu sắc, hoặc đặc trưng phức tạp hơn như texture của ảnh. Vì bộ lọc qt qua tồn bộ bức ảnh, nên những đặc trưng này có thể nằm ở vị trí bất kì trong bức ảnh, cho dù ảnh bị xốy trái/phải thì những đặc trưng này vẫn bị phát hiện.
2.3.2. Hàm kích hoạt ReLU
Hàm kích hoạt được xây dựng để đảm bảo tính phi tuyến của mơ hình h́n luyện sau khi đã thực hiện một loạt các phép tính tốn tuyến tính qua các lớp tích chập, với đầu ra là một ảnh mới có kích thước giống với ảnh đầu vào, để đạt được điều này bằng cách chủn tổng trọng số các đầu vào của nó thơng qua một hàm kích hoạt, các giá trị điểm ảnh cũng hoàn toàn tương tự, trừ các giá trị âm đã bị loại bỏ.
Các hàm kích hoạt phi tuyến như ReLU hoặc sigmoid, tanh… để giới hạn phạm vi biên độ cho phép của giá trị đầu ra. Trong số các hàm kích hoạt này, hàm ReLU (ReLU
activation function) định nghĩa là f(x) = max(0,x) thường được chọn do cài đặt đơn giản,
tốc độ xử lý nhanh mà vẫn đảm bảo được tính tốn hiệu quả.
Hình 2.10: Các hàm kích hoạt
Hàm ReLU về cơ bản là nhằm hiệu chỉnh giá trị các nút trong mạng, nó có vai trị quan trọng trong quá trình xử lý của mạng CNN nhằm loại bỏ những phần tử âm và thay thế tất cả các phần tử âm bởi giá trị không (0).
2.3.3. Lớp lấy mẫu (Pooling)
Lớp lấy mẫu thường đi liền sau lớp tích chập và hàm kích hoạt ReLU để làm giảm kích thước ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng của ảnh đầu vào. Việc giảm kích thước dữ liệu có tác dụng làm giảm số lượng tham số, tăng hiệu quả tính toán và tránh được quá khớp dữ liệu (overfitting). Lớp lấy mẫu cũng sử dụng một cửa sổ trượt để qt tồn bộ các vùng trong ảnh như lớp tích chập, và thực hiện phép lấy mẫu thay vì phép tích chập, sẽ chọn lưu lại một giá trị duy nhất đại diện cho tồn bộ thơng tin của vùng ảnh đó. Các phương thức lấy mẫu thường được sử dụng nhất hiện nay, đó là Max Pooling (lấy giá trị điểm ảnh lớn nhất) và Avarage Pooling (lấy giá trị trung bình của các điểm ảnh trong vùng ảnh cục bộ). Thông thường kỹ thuật được sử dụng là Max Pooling với cửa sổ phép lọc là 2 2 và bước nhảy stride = 2.
Như vậy, với mỗi ảnh đầu vào được đưa qua lấy mẫu sẽ thu được một ảnh đầu ra tương ứng, có kích thước giảm xuống đáng kể nhưng vẫn giữ được các đặc trưng cần thiết cho q trình tính tốn và nhận dạng.
Hình 2.11: Minh họa việc lấy mẫu con
2.3.4. Lớp kết nối đầy đủ
Lớp cuối cùng trong mơ hình CNN là lớp kết nối đầy đủ (fully connected layer), được thiết kế tương tự như trong mạng nơ-ron truyền thống, tất cả các điểm ảnh được kết nối đầy đủ với node trong lớp tiếp theo. Fully connected là cách kết nối các nơ-ron ở hai lớp với nhau trong đó lớp sau kết nối đẩy đủ với các nơ-ron ở lớp trước nó. Đây cũng là dạng kết nối thường thấy ở ANN, trong CNN lớp này thường được sử dụng ở các lớp phía cuối của kiến trúc mạng.
Hãy nhớ rằng đầu ra của cả hai lớp tích chập và lấy mẫu đều là khối lượng 3D, nhưng một lớp được kết nối đầy đủ sẽ mong đợi một vectơ 1D là các số. Vì vậy, san phẳng đầu ra của lớp lấy mẫu cuối cùng thành một vector và đó trở thành đầu vào cho lớp được kết nối đầy đủ.
Làm phẳng chỉ đơn giản là sắp xếp khối lượng 3D của các con số thành một vector 1D chứa xác suất của các đối tượng cần được dự đoán.
Hàm truyền đặt ở lớp cuối cùng trong mạng được sử dụng để phân lớp, ta có thể sử dụng hàm sigmoid để có đầu ra trong miền giá trị (0, 1) tương ứng với các giá trị phân bố xác xuất là 0% và 100%. Tuy nhiên, để có tổng xác xuất của các đầu ra là 100% thì cần phải được thực hiện chuẩn hóa các đầu ra bằng cách sử dụng hàm SoftMax với miền giá trị (0, 1).
Hàm truyền SoftMax sẽ so sánh kết quả dự đoán của mạng với nhãn thực sự đã có. Hàm có giá trị bé nếu kết quả dự đoán trùng với nhãn và ngược lại.
Trong đó, y là véc-tơ đầu ra, C là số lượng nhãn, c là nhãn đã biết.
Quá trình huấn luyện nhằm cập nhật các trọng số để tối thiểu hóa tổn hao, kỹ thuật lan truyền ngược được sử dụng cho quá trình huấn luyện.
* Phân lớp dữ liệu
Trong phần phân lớp, ta sử dụng một vài lớp với kết nối đầy đủ để xử lí kết quả của phần tích chập. Vì đầu vào của mạng liên kết đầy đủ là 1 chiều, ta cần làm phẳng đầu vào trước khi phân lớp. Lớp cuối cùng trong mạng CNN là một lớp liên kết đầy đủ, phần này hoạt động tương tự như mạng nơ-ron thông thường. Kết quả thu được cuối cùng cũng sẽ là một véc-tơ với các giá trị xác suất cho việc dự đoán như mạng nơ-ron thơng thường.
Hình 2.12 mơ tả một ví dụ về mạng nơ-ron tích chập. Mạng gồm hai phần: phần tích chập và kết nối đầy đủ.
Phần tích chập rút trích tự động đặc trưng của dữ liệu đầu vào, lớp càng nhỏ thì học các đặc trưng thơ (mức thấp), lớp càng sâu thì học đặc trưng càng chi tiết (mức cao) của khái niệm cần học. Ví dụ trong hình cho thấy lớp đầu học các đặc trưng cạnh
(edge), các lớp kế tiếp học được đặc trưng các thành phần, rồi đến đặc trưng chi tiết của đối tượng học.
Hình 2.12: Một ví dụ về mơ hình học sâu dựa trên mạng nơ-ron tích chập
Các vùng sáng trong Hình 2.12 là vùng được “kích hoạt”, nghĩa là bộ lọc đã phát hiện ra mẫu mà nó đang tìm kiếm. Bộ lọc này dường như mã hóa một máy dò mắt và mũi. Khi đi sâu hơn vào mạng, các bản đồ đặc trưng trơng ít giống với hình ảnh gốc hơn và giống như một bản trình bày trừu tượng của nó. Lúc đầu có thể nhìn thấy được, nhưng sau đó nó trở nên không thể nhận ra. Lý do là bản đồ đặc trưng sâu hơn mã hóa các khái niệm cấp cao như “mũi” hoặc “tai” trong khi bản đồ đặc trưng cấp thấp hơn phát hiện các cạnh và hình dạng đơn giản. Đó là lý do tại sao bản đồ đặc trưng sâu hơn chứa ít thơng tin hơn về hình ảnh và nhiều thơng tin hơn về loại hình ảnh.
2.4. Kỹ thuật tối ưu mạng
Một trong những giải pháp nhằm tối ưu quá trình huấn luyện mạng được đề xuất là giảm số lượng các trọng số (weight) để tăng tốc độ tính tốn, giảm thời gian huấn luyện, tránh hiện tượng quá khớp khi mà lượng dữ liệu đầu vào là rất lớn như các bức ảnh màu, video…
Khi xây dựng được mạng CNN, ngoài kỹ thuật regularization và pooling ở lớp lấy mẫu để giảm kích thức ảnh sau khi tính tích chập để lấy các pixel đặc tính đặc trưng nhất, có thể thêm vào kỹ thuật dropout để tối ưu thời gian huấn luyện và tránh hiện tượng quá khớp (overfitting). Dropout cắt bớt số nơ-ron khi thực hiện thuật toán lan truyền ngược nhằm tăng tốc độ huấn luyện mạng. Dropout loại bỏ một cách ngẫu nhiên một số nơ-ron trong mạng bằng cách cho nó bằng 0 (bỏ kết nối). Có nghĩa là hệ thống sẽ quyết định ngõ ra trong khi thiếu thông tin [20].
Quá trình loại bỏ ngẫu nhiên các node được minh họa trong Hình 2.13. Ta sẽ xem xét ảnh hưởng của tỉ lệ này đến kết quả nhận dạng và phân loại ảnh trong phần thực nghiệm.
Hình 2.13: Mạng nơ-ron trước và sau q trình Dropout
2.5. Một sớ Kiến trúc mạng CNN phổ biến
Có một số kiến trúc mạng nơ-ron tích chập nổi tiếng và thơng dụng hiện nay. Một số thử nghiệm cho thấy chúng có hiệu śt tốt hơn. Vì vậy, đơi khi nhiều người sử dụng mạng được thiết kế sẵn thay vì tự thiết kế mạng. Hầu hết các mạng CNN đều được thiết kế theo nguyên tắc chung:
• Giảm dần kích thước output mỗi lớp
• Tăng dần số lượng feature map
Trong khi các mạng CNN trước đây hầu hết theo dạng chỉ đơn giản thiết kế theo lối nhiều lớp Convolution xếp chồng lên nhau thì nhiều mạng mới đây đã thiết kế sáng tạo hơn và cho kết quả hiệu quả hơn. Các kiến trúc mạng này đóng vai trò rất quan trọng và áp dụng cho những nhiệm vụ cụ thể trong Computer Vision. Các mạng này được dùng nhiều trong việc trích xuất các feature để phục vụ cho các nhiệm vụ chuyên biệt.
2.5. 1. Kiến trúc LeNet-5
Kiến trúc LeNet-5 [21] được tạo ra bởi Yann Lecun năm 1998, để nhận diện chữ viết tay. Mơ hình này là cơ sở thiết kế cho các mạng sau này. Model ban đầu khá đơn giản và chỉ bao gồm 2 convolutional layers + 3 fully-connected layers. Mặc dù đơn giản nhưng nó đã cho thấy ưu thế vượt trội so với các thuật toán machine learning trong phân loại chữ số viết tay.
Trong kiến trúc mạng nơ-ron đầu tiên, để giảm chiều dữ liệu, Yan Lecun sử dụng Sub-Sampling Layer là một Average-Pooling Layer (các layer nhằm mục đích giảm chiều dữ liệu mà không thay đổi đặc trưng chúng ta còn gọi là Sub-Sampling Layer). Kiến trúc này khá khó huấn luyện trọng số nên ngày nay rất hạn chế được sử dụng trong các mạng CNN. Thay vào đó là các layer Max-Pooling.
Đầu vào của mạng LeNet có kích thước 32x32 và ít layers nên số lượng tham số của nó chỉ khoảng 60 nghìn.
Cấu trúc như hình vẽ
Hình 2.14: Mơ hình Kiến trúc LeNet-5
2.5. 2. Kiến trúc AlexNet
Được phát triển bởi Alex Krizhevsky năm 2012 trong cuộc thi ImageNet 2012. Phá vỡ lối mòn sử dụng các đặc trưng thủ cơng từ các thuật tốn truyền thống như HOG, SIFT, SURF thay cho các đặc trưng được huấn luyện trong các tác vụ học có giám sát của thị giác máy tính. Với những cải tiến so với mơ hình mơ hình kiến trúc LeNet-5:
+ Tăng cường kích thước mạng sâu hơn. + Đầu vào có độ phân giải lớn hơn.
+ Sử dụng local normalization để chuẩn hóa các layer giúp cho quá trình hội tụ nhanh hơn.
Ngoài ra mạng cịn cải tiến trong quá trình optimizer như: