Mạng nơron tích chập Convolutional neural network – CNN là một mô hình DL có độ chính xác cao, được triển khai nhiều trong các ứng dụng, đặc biệt là trong nhận dạng ảnh [1] [4].. Trong t
Trang 2LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ
Người hướng dẫn khoa học:
TS Nguyễn Phương Huy
TS Phạm Văn Thiêm
THÁI NGUYÊN - 2023
Trang 3CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn: Nguyễn Thị Hà
Đề tài luận văn: “Triển khai mạng nơ ron tích chập trên nền tảng FPGA và
Thái Nguyên, ngày 30 tháng 05 năm 2023
CHỦ TỊCH HỘI ĐỒNG
Trang 4
- Đại học Thái Nguyên
Hiện đang công tác tại: Khoa Điện tử - Trường Cao đẳng Công nghệ Việt - Hàn Bắc Giang
Xin cam đoan: Đề tài “Triển khai mạng nơron tích chập trên nền tảng
FPGA và ứng dụng trong nhận dạng ảnh” do Thầy giáo TS Nguyễn Phương
Huy và TS Phạm Văn Thiêm hướng dẫn là công trình nghiên cứu của riêng tôi
Tất cả tài liệu tham khảo đều có nguồn gốc, xuất xứ rõ ràng
Tác giả xin cam đoan tất cả những nội dung trong luận văn đúng như nội dung trong đề cương và yêu cầu của thầy giáo hướng dẫn Nếu sai tôi hoàn toàn chịu trách nhiệm trước hội đồng khoa học và trước pháp luật
Thái Nguyên, ngày 30 tháng 05 năm 2023
Tác giả luận văn
Nguyễn Thị Hà
Trang 5LỜI CẢM ƠN
Sau một thời gian nghiên cứu và làm việc nghiêm túc, được sự động viên,
giúp đỡ và hướng dẫn tận tình của Thầy giáo hướng dẫn TS Nguyễn Phương Huy và
TS Phạm Văn Thiêm, luận văn với đề tài “Triển khai mạng nơron tích chập trên
nền tảng FPGA và ứng dụng trong nhận dạng ảnh” đã hoàn thành
Tôi xin bày tỏ lòng biết ơn sâu sắc đến:
Các thầy giáo hướng dẫn: TS Nguyễn Phương Huy và TS Phạm Văn Thiêm đã tận tình chỉ dẫn, giúp đỡ tôi hoàn thành luận văn này
Trường Đại học Kỹ thuật Công nghệp và đặc biệt là các Thầy, cô trong Khoa Điện tử đã giúp đỡ tôi trong quá trình học tập cũng như thực hiện luận văn
Tôi xin chân thành cảm ơn bạn bè, đồng nghiệp và gia đình đã động viên, khích lệ, tạo điều kiện giúp đỡ tôi trong suốt quá trình học tập, thực hiện và hoàn thành luận văn này
Thái Nguyên, ngày 30 tháng 05 năm 2023
Tác giả luận văn
Nguyễn Thị Hà
Trang 6DANH MỤC BẢNG BIỂU ix
MỞ ĐẦU 1
1.Tính khoa học và cấp thiết của đề tài 1
2.Mục tiêu và đối tượng nghiên cứu của đề tài 2
3.Phạm vi nghiên cứu 3
4.Phương pháp nghiên cứu 3
5.Nội dung và bố cục của luận văn 3
CHƯƠNG 1 MẠNG CNN VÀ ỨNG DỤNG TRONG NHẬN DẠNG ẢNH 5
1.1.Giới thiệu chương 1 5
1.2.Bài toán nhận dạng ảnh số 5
1.2.1.Ảnh số 5
1.2.2.Nhận dạng ảnh số 6
1.2.3.Hệ thống nhận dạng hình ảnh 7
1.2.4.Các hướng tiếp cận chính trong nhận dạng ảnh 9
1.2.5.Ứng dụng của nhận dạng ảnh 11
1.3.Tổng quan về mạng CNN 11
1.3.1.Mạng nơron sinh học 11
1.3.2.Mạng nơron nhân tạo 13
1.3.3.Phép tích chập trong xử lý ảnh 15
1.3.4.Mạng nơron CNN 18
1.3.5.Kiến trúc mạng CNN 19
1.4.Ứng dụng của mạng CNN trong nhận dạng ảnh 23
1.4.1.Trường tiếp nhận cục bộ (Local receptive fields) 23
1.4.2.Trọng số chia sẻ và độ lệch (Shared weights and biases) 27
Trang 71.4.3.Lớp chứa hay lớp tổng hợp (Pooling layer) 27
1.4.4 Cách chọn tham số cho CNN 29
1.5.Cập nhật các nghiên cứu ứng dụng mạng CNN trong nhận dạng ảnh 29
1.5.1.Các nghiên cứu trên thế giới 30
1.5.2 Các nghiên cứu trong nước 31
1.6.Kết luận chương 1 33
CHƯƠNG 2 THỰC THI MẠNG CNN TRÊN NỀN TẢNG FPGA 35
2.1.Giới thiệu chương 35
2.2.Tổng quan về công nghệ FPGA 35
2.2.1 Giới thiệu về FPGA 35
2.2.2.Kiến trúc cơ bản của chip FPGA 37
2.2.3.Quá trình lập trình FPGA 39
2.2.4.Công cụ phát triển và ngôn ngữ lập trình: 40
2.3.Thực thi mạng CNN trên nền tảng FPGA 41
2.3.1.Xây dựng trực tiếp các modul dựa trên ngôn ngữ mô tả phần cứng 41
2.3.2 Xây dựng mạng CNN dựa trên các công cụ tổng hợp mức cao 42
2.4.Thực thi thiết kế FPGA bằng công cụ HLS trên kit NB2DSK01 45
2.4.1.Giới thiệu về NB2DSK01 45
2.4.2.Giới thiệu phần mềm Altium Designer 48
2.4.3 Các bước thực hiện 49
2.5 Kết luận chương 55
CHƯƠNG 3 XÂY DỰNG MÔ HÌNH THỬ NGHIỆM 57
3.1 Giới thiệu chương 57
3.2 Mô tả bài toán thực thi mạng CNN cho nhận dạng chữ số viết tay MNIST 57
3.3.Lựa chọn kiến trúc và tìm kiếm tham số tối ưu của mạng CNN cho bài toán nhận dạng chữ viết tay MNIST 59
3.3.1.Lựa chọn kiến trúc mạng CNN 59
3.3.2.Tìm kiếm tham số tối ưu của mạng CNN 60
Trang 8TÀI LIỆU THAM KHẢO 70
I.PHỤ LỤC 73
A Phụ lục 1 Mô tả chi tiết các bước thực thi trên FPGA theo tiếp cận HLS 73
B.Phụ lục 2 Mô tả chi tiết chương trình Pythone tìm kiếm tham số tối ưu cho mạng CNN 87
C.Phụ lục 3 Chương trình C thực thi mạng CNN trên KitNB2DSK01 89
Trang 9DANH MỤC CÁC TỪ VIẾT TẮT
Từ hoặc
AI Artificial Intelligence Trí tuệ nhân tạo
ANN Artificial Neural Network Mạng nơron nhân tạo
ASIC Application-Specific Integrated
Circuit Vi mạch tích hợp chuyên dụng
CV Computer Vision Thị giác máy tính
CLB Configurable Logic Block Khối logic có thể lập trình
CNN Convolutional Neural Network Mạng nơron tích chập
DL Deep Learning Học sâu
FPGA Field Programmable Gate Array Mảng cổng có thể lập trình được
HDL Hardware Description Language Ngôn ngữ mô tả phần cứng
HLS High Level Synthesis Công cụ tổng hợp mức cao
MLP Multilayer Neural Network Mạng nơron nhiều lớp
MNIST
Modified National Institute of
Standards and Technology
database
Cơ sở dữ liệu về chữ số viết tay
ReLU Rectified Linear Units Hàm tinh chỉnh các đơn vị tuyến tính
Trang 10Hình 1.8 Ma trận đầu ra Y khi chập ảnh X với kernel W 16
Hình 1.9 Stride=1, padding=1 16
Hình 1.10 Stride=2, padding=1 17
Hình 1.11 Một số bộ lọc Kerne1 trong xử lý ảnh 18
Hình 1.12 Cách máy tính “nhìn” một hình 18
Hình 1.13 Mạng nơron thông thường (trái) và CNN (phải) 20
Hình 1.14 Kiến trúc mạng CNN 20
Hình 1.15 Ví dụ về max pooling và average pooling kích thước 2×2 22
Hình 1.16 Lớp kết nối đầy đủ 23
Hình 1.17 Lớp input gồm 28x28 nơron cho nhận dạng dữ liệu MNIST 23
Hình 1.18 Kết nối vùng 5x5 nơron input với nơron lớp ẩn 24
Hình 1.19 Vị trí bắt đầu của trường tiếp nhận cục bộ 24
Hình 1.20 Vị trí thứ 2 của trường tiếp nhận cục bộ và nơron lớp ẩn 25
Hình 1.21 Trường tiếp nhận cục bộ với ba bản đồ đặc trưng 25
Hình 1.22 Trường tiếp nhận cục bộ với 20 bản đồ đặc trưng 26
Hình 1.23 Ví dụ về Max pooling 2x2 27
Hình 1.24 Max pooling với ba bản đồ đặc trưng 28
Hình 1.25 Ví dụ về một kiến trúc mạng CNN cho nhận dạng ảnh MNIST 29
Hình 2.1 Quá trình hình thành và phát triển của FPGA 36
Hình 2.2 Cấu trúc cơ bản của FPGA 37
Hình 2.3 Minh họa cấu trúc bên trong của chip FPGA 39
Hình 2.4 Lược đồ các bước thực thi trên FPGA 40
Hình 2.5 Quy trình thiết kế Vivado HLS [1] 44
Hình 2.6 Bo mạch FPGA Nanoboard NB2 45
Hình 2.7 Thành phần và phân cấp các file trong Altium FPGA Project 50
Hình 2.8 Kiến trúc hệ thống được mô tả trên file OpenBus 50
Hình 2.9 File nguyên lý mô tả các thiết bị sẽ được sử dụng 51
Hình 2.10 Tạo và thiết lập các đặc tính cho project nhúng 52
Hình 2.11 Kiến trúc software platform cần thiết 53
Hình 2.12 Tạo các ràng buộc cho project 54
Hình 2.13 Mô tả quá trình biên dịch, tổng hợp và nạp vào kit NB2DSK01 55
Trang 11Hình 3.1 Chữ viết tay số “5” từ bộ dữ liệu MNIST 58
Hình 3.2 Kiến trúc mạng CNN được lựa chọn 59
Hình 3.3 Chi tiết các thông số của mô hình mạng CNN 61
Hình 3.4 Kết quả huấn luyện mạng 61
Hình 3.5 Kiến trúc open bus của mô hình thực nghiệm 62
Hình 3.6 Sơ đồ nguyên lý mô tả việc kết nối thiết bị cho mô hình thực nghiệm 63
Hình 3.7 Kiến trúc thư viện software platform của mô hình thực nghiệm 64
Hình 3.8 Kết quả chạy thực trên Kit NB2DSK01 65
Hình 3.9 Kết quả chạy thực trên Raspberry Pi 4 66
Hình I.1 Các thao tác để tạo project mới trong Atium Designer 73
Hình I.2 Các thao tác để add file chương trình Openbus 73
Hình I.3 Các linh kiện Openbus 74
Hình I.4 Các thao tác để tạo file chương trình Openbus 74
Hình I.5 Chọn bộ nhớ lõi của chip TSK3000 75
Hình I.6 Chọn file hardware.h 75
Hình I.7 Phân vùng bộ nhớ cho vi điều khiển 76
Hình I.8 Thao tác kiểm tra chương trình Openbus xem có lỗi hay không 76
Hình I.9 Giao diện thao tác tạo mạch nguyên lý mới trong Altium Designer 77
Hình I.10 Tạo liên kết giữa mạch nguyên lý và Openbus 77
Hình I.11 Thư viện FPGA trong Altium Designer 78
Hình I.12 Sơ đồ nguyên lý hoàn chỉnh 78
Hình I.13 Tạo file Embedded Project 79
Hình I.14 Tạo file C 79
Hình I.15 Mở Options for Embedded Project 80
Hình I.16 Chỉnh sửa các thông số Stack/Heap 80
Hình I.17 Chỉnh sửa bộ nhớ 81
Hình I.18 Tích hợp dự án nhúng trong FPGA 81
Hình I.19 Tạo file Software platform 82
Hình I.20 Xây dựng đầu ra và ngăn xếp 82
Hình I.21 Tạo ràng buộc Constraint File 85
Hình I.22 Kết nối NanoBoard với PC 86
Hình I.23 Đổ chương trình vào Kit FPGA NB2DSK01 86
Trang 13MỞ ĐẦU
1 Tính khoa học và cấp thiết của đề tài
Học sâu (Deep Learning - DL) là kỹ thuật dựa trên một số ý tưởng từ não bộ tới việc tiếp thu nhiều tầng biểu đạt, cả cụ thể lẫn trừu tượng, qua đó làm rõ nghĩa của các loại dữ liệu Học sâu được ứng dụng trong nhận diện hình ảnh, nhận diện giọng nói, xử lý ngôn ngữ tự nhiên Những năm gần đây, ta đã chứng kiến được nhiều thành tựu vượt bậc của DL trong ngành Thị giác máy tính, các tập đoàn lớn như Facebook, Google hay Amazon đã, và đang sự dụng DL như một phần không thể thiếu trong sản phẩm của mình, đó có thể là nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay giao hàng tự động,…Chính những thứ đó đã góp phần giúp cho cuộc sống của chúng ta hiện nay ngày càng tiện nghi, thoải mái hơn
Mạng nơron tích chập (Convolutional neural network – CNN) là một mô hình
DL có độ chính xác cao, được triển khai nhiều trong các ứng dụng, đặc biệt là trong nhận dạng ảnh [1] [4]
Để đạt được độ chính xác theo yêu cầu đặt ra, mô hình mạng CNN thông thường phải thực hiện một lượng lớn các phép toán với kiểu dữ liệu dấu chấm động Chính
vì điều đó, mạng CNN thường yêu cầu phần cứng phức tạp với tốc độ xử lý nhanh và không gian bộ nhớ lớn để huấn luyện và thực thi tác vụ nhận dạng Mạng CNN bao gồm nhiều lớp được tổ chức liên tiếp nhau gồm lớp tích chập, lớp tổng hợp và lớp kết nối đầy đủ Khối lượng tính toán của mạng CNN chủ yếu nằm ở các phép toán tích chập (convolution), gồm phép nhân và phép cộng dồn, để trích đặc trưng các đối tượng ảnh ngõ vào [12] [7]
Trong tác vụ nhận dạng ảnh được thực thi bởi các mạng CNN, phép tích chập giữa một phần của ảnh ngõ vào và bộ lọc (kernel) có thể thực hiện bằng phép nhân
ma trận trên từng phần tử [12] [7] Để đạt được tỉ lệ nhận dạng ảnh cao, thông thường mạng CNN được tạo bởi nhiều lớp tích chập ghép liền nhau trong đó các trọng số huấn luyện được biểu diễn với dữ liệu dấu chấm động Việc thực hiện phép toán tích chập với phép nhân và cộng dồn trên các dữ liệu dấu chấm động yêu cầu phải cần một phần cứng tính toán phức tạp và công suất tiêu thụ lớn [3]
Trang 14cứu trên thế giới [15] [18] cũng như trong nước [19] [22] đề xuất nhằm thực hiện hai mục tiêu, vừa tăng tốc độ tính toán khi xử lý ảnh để đáp ứng yêu cầu thời gian thực, vừa tối ưu năng lượng tiêu thụ
Để đánh giá hiệu quả của mạng CNN trong bài toán nhận dạng ảnh, từ đó đưa
ra các khuyến nghị cho các nghiên cứu tiếp sau, chúng ta cần dựa trên các bộ cơ sở
dữ liệu lớn về ảnh được cộng đồng quốc tế công nhận Một trong đó đó là cơ sở dữ liệu MNIST (Modified National Institute of Standards and Technology database) Đây là một bộ dữ liệu lớn chứa các chữ số viết tay thường được dùng trong việc huấn luyện các hệ thống xử lý hình ảnh khác nhau được đông đảo cộng đồng khoa học cùng quan tâm ngiên cứu [4] , [16]
Từ các phân tích trên, được sự gợi hướng của giảng viên hướng dẫn, học viên
đề xuất đề tài luận văn tốt nghiệp là “Triển khai mạng nơron tích chập trên nền
tảng FPGA và ứng dụng trong nhận dạng ảnh” với định hướng xây dựng một kiến
trúc mạng CNN hiệu quả cho bài toán nhận dạng chữ số viết tay từ bộ mẫu MNIST
và thực thi mạng CNN này trên chip FPGA phù hợp
Đề tài nhằm nghiên cứu thử nghiệm việc triển khai mạng CNN trên nền FPGA cho bài toán nhận dạng chữ số viết tay Các kết quả có được của đề tài sẽ làm cơ sở để triển khai thực thi các mạng học sâu khác được ứng dụng nhiều hiện nay (như LSTM, DE, Tranformer ) cho bài toán nhận dạng ảnh, tiếng nói, video nói chung
2 Mục tiêu và đối tượng nghiên cứu của đề tài
Mục tiêu nghiên cứu
- Nghiên cứu huấn luyện mạng CNN để tìm kiếm cấu trúc phù hợp ứng dụng cho bài toán nhận dạng ảnh
Trang 15- Thực thi của mạng CNN trên Chip FPGA phù hợp
Đối tượng nghiên cứu
Luận văn có hai đối tượng nghiên cứu chính
- Mạng CNN và ứng dụng cho bài toán nhận dạng ảnh
- Phương pháp thực thi mạng CNN trên nền tảng công nghệ FPGA
3 Phạm vi nghiên cứu
Phạm vi của việc ứng dụng mạng CNN trong nhận dạng ảnh là rất rộng Vì vậy, đối với một luận văn thạc sĩ chuyên ngành Kỹ thuật Điện tử, đề tài chỉ giới hạn trong phạm vi: Nghiên cứu lý thuyết và tìm kiếm cấu trúc mạng CNN phù hợp cho nhận dạng chữ số viết tay từ bộ mẫu MNIST và thực thi mạng CNN này trên chip FPGA Cyclone II EP2C35F672C8 thuộc Kit phát triển NB2DSK01 của hãng Altium Designer
4 Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết: Tổng hợp, nghiên cứu các tài liệu về bài toán nhận dạng ảnh; Nghiên cứu về kiến trúc mạng CNN; Ứng dụng của CNN trong bài toán nhận dạng ảnh đặc biệt là nhận dạng chữ số viết tay với bộ mẫu MNIST; Nghiên cứu cài đặt các thuật toán trong mạng CNN dùng ngôn ngữ mô
tả phần cứng và các giải pháp thực thi trên Chip FPGA
- Phương pháp nghiên cứu thực nghiệm: Sau khi nghiên cứu lý thuyết, luận văn
đề xuất kiến trúc mạng CNN, triển khai luyện mạng để tìm kiếm tham số tối ưu cho kiến trúc mạng, thực thi mạng trên Chip FPGA Cyclone II EP2C35F672C8 thuộc Kit phát triển NB2DSK 01 của hàng Altium Designer
- Phương pháp trao đổi khoa học: Tìm kiếm, kế thừa các nghiên cứu mở trên Internet ([24] [25] Thảo luận, xemina, lấy ý kiến chuyên gia
5 Nội dung và bố cục của luận văn
Ngoài phần mở đầu, kết luận và hướng phát triển, luận văn được bố cục thành
ba chương chính như sau:
Trang 16trong việc thực thi mạng CNN trên nền tảng FPGA đó là xây dựng trực tiếp các modul dựa trên ngôn ngữ mô tả phần cứng và hướng xây dựng dựa trên các công cụ tổng hợp mức cao Đồng thời, nội dung chương cũng trình bày chi tiết cách thức triển khai một hệ thống trên Kit phát triển FPGA NB2DSK01 sử dụng
phần mềm Altium Designer
bước triển khai cụ thể nhằm xây dựng phần cứng cũng như phần mềm cho mô hình nhận dạng chữ số viết tay MINST sử dụng mạng CNN trên nền tảng FPGA của Kit NB2DSK01, đánh giá hiệu quả hoạt động về mặt thời gian so với việc triển khai mạng CNN trên PC cũng như trên vi điều khiển Raspberry
Trang 17CHƯƠNG 1 MẠNG CNN VÀ ỨNG DỤNG TRONG NHẬN DẠNG ẢNH 1.1 Giới thiệu chương 1
Mục tiêu chính của chương 1 là làm rõ cách thức mà mạng CNN hoạt động đối với bài toán nhận dạng hình ảnh Chính vì vậy, phần đầu chương sẽ giới thiệu về bài toán nhận dạng ảnh số, các khâu quan trọng trong hệ thống nhận dạng ảnh, các hướng tiếp cận chính trong nhận dạng ảnh (bao gồm các kỹ thuật trích, chọn đặc trưng và phân loại) Phần tiếp theo của chương trình bày các kiến thức tổng quan về mạng CNN Bắt đầu từ ý tưởng hình thành mạng CNN cho đến việc triển khai kiến trúc của mạng CNN nhằm thực thi hai tác vụ quan trọng trong bài toán nhận dạng (trích rút đặc trưng và phân lớp) Phần kế tiếp của chương sẽ mô tả cụ thể cách thức hoạt động của mạng CNN trong bài toán nhận dạng ảnh Phần cuối chương sẽ cập nhật các kết quả nghiên cứu trong và ngoài nước về việc ứng dụng mạng CNN trong nhận dạng hình ảnh
1.2 Bài toán nhận dạng ảnh số
1.2.1 Ảnh số
Hình 1.1 Ảnh số trắng đen và ảnh màu Như chỉ ra trong Hình 1.1, một hình ảnh số (đen trắng) có thể được định nghĩa
là hàm hai chiều, f (x, y), trong đó x và y là tọa độ không gian (mặt phẳng) và biên
độ của f tại bất kỳ cặp tọa độ (x, y) nào được gọi là cường độ hoặc mức độ màu xám của hình ảnh tại điểm đó Khi x, y và các giá trị cường độ của f đều là các đại lượng hữu hạn, rời rạc, chúng ta gọi hình ảnh là hình ảnh kỹ thuật số" Có thể hiểu một cách
Trang 181.2.2 Nhận dạng ảnh số
Nhận dạng ảnh số (hay phân loại ảnh số) là một trong những tác vụ của thị giác máy tính, ở đó thuật toán xem xét và dán nhãn cho hình ảnh từ một tập danh mục được xác định và huấn luyện trước
Hình 1.2 Minh họa hệ thống nhận dạng ảnh Chó/Mèo
Ví dụ, như mô tả trong Hình 1.2, với một tập các hình ảnh, mỗi hình ảnh mô tả một con mèo hoặc một con chó, thuật toán sẽ “quan sát” toàn bộ dữ liệu và dựa trên hình dạng, màu sắc để hình thành giả thuyết liên quan đến nội dung của ảnh Kết quả thu được là từ tập dữ liệu ban đầu, các hình ảnh chó/mèo đã được phân loại một cách
tự động
Thực tế, thị giác góp phần tạo nên 80-85% nhận thức của con người về thế giới Hàng ngày, mỗi người phải thực hiện nhận dạng trên bất kỳ dữ liệu hình ảnh nào mà chúng ta bắt gặp
Do đó, mô phỏng nhiệm vụ nhận dạng ảnh với sự trợ giúp của mạng nơron (và gần đây là mạng nơron CNN) là một trong những ứng dụng đầu tiên của thị giác máy tính mà các nhà nghiên cứu nghĩ đến
Trang 191.2.3 Hệ thống nhận dạng hình ảnh
Nhiệm vụ của hệ thống nhận dạng hình ảnh là xử lý tự động thông tin từ các ảnh để tìm ra độ tương tự giữa chúng và đưa ra quyết định về tính đồng nhất giữa chúng Cấu trúc của hệ thống nhận dạng hình ảnh được thể hiện như Hình 1.3 và gồm các khâu chức năng sau:
- Tiền xử lý (Pre-Processing): Bước này nhằm mục đích lọc nhiễu, nâng cao chất
lượng ảnh để chuẩn hóa ảnh cần tìm giúp cho việc tìm kiếm được hiệu quả hơn Các công việc trong bước tiền xử lý có thể là: Chuẩn hóa kích cỡ giữa ảnh trong
cơ sở dữ liệu và ảnh cần tìm, hiệu chỉnh độ sáng, tối của ảnh; lọc nhiễu, chuẩn hóa về vị trí
- Trích chọn đặc trưng (FE): Tìm ra các đặc trưng chính của ảnh, từ các đặc
trưng này hình thành các vector đặc trưng, các vector này sẽ được sử dụng để đối sánh sự giống nhau giữa ảnh cần tìm và ảnh trong cơ sở dữ liệu
Hình 1.3 Cấu trúc tổng quát của hệ thống nhận dạng hình ảnh
- Nhận dạng/Phân loại: Bước nhận dạng (recognition) hay phân loại
(classification), tức là xác định danh tính (identity) hay nhãn (label) của ảnh
- Dữ liệu hệ thống nhận dạng: Dữ liệu hệ thống nhận dạng được chia làm 3 tập
gồm tập dữ liệu huấn luyện (training set), tập dữ liệu đánh giá (validation data)
và tập dữ liệu thử nghiệm (testing data) Tập huấn luyện được sử dụng để xây dựng thuật toán nhận dạng Các nhà khoa học dữ liệu sẽ cung cấp dữ liệu đầu vào cho thuật toán, tương ứng với đầu ra dự kiến Dựa trên đó, mô hình sẽ đánh giá dữ liệu nhiều lần để tìm hiểu thêm về đặc tính của dữ liệu và tiếp tục tự điều
Trang 20hình, nhằm xác nhận hiệu quả của thuật toán Nếu dữ liệu đào tạo và dữ liệu đánh giá đều đi kèm các nhãn nhằm theo dõi các chỉ số hiệu suất thì dữ liệu thử nghiệm phải được bỏ nhãn Điều này nhằm đưa mô hình vào môi trường kiểm tra thực tế và xác nhận lần cuối rằng nó có thể hoạt động hiệu quả
Hình 1.4 Phân chia dữ liệu cho hệ thống nhận dạng
Hệ thống nhận dạng hình ảnh cần đảm bảo các yêu cầu:
- Độ chính xác nhận dạng có thể chấp nhận được đối với yêu cầu của bài toán nhận dạng
- Tốc độ vận hành cao đối với các cơ sở dữ liệu lớn và số lượng các yêu cầu có thể giải quyết được
- Đơn giản trong việc cài đặt, lựa chọn thiết bị và vận hành, an toàn với người sử dụng
Trang 211.2.4 Các hướng tiếp cận chính trong nhận dạng ảnh
Như trong phần 1.2.3 đã trình bày, hệ thống nhận dạng ảnh gồm ba khâu chính (tiền xử lý, trích chọn đặc trưng, phân loại) Mỗi một khâu đều có tác động đến độ chính xác của hệ thống Tuy nhiên, hai khâu quan trọng nhất vẫn là trích chọn đặc trưng và phân loại (ra quyết định) Chính vì vậy, qua khảo sát các công trình nghiên cứu liên quan đến nhận dạng hình ảnh, ta có thể thấy các công trình công bố đều chủ
yếu tập trung vào cải tiến hai bước chính là trích chọn đặc trưng và phân loại
1.2.4.1 Các kỹ thuật trích chọn đặc trưng
Trích chọn đặc trưng là tìm ra điểm đặc trưng của đối tượng so với đối tượng khác tuỳ theo mục đích nhận dạng trong quá trình xử lí ảnh Ví dụ như ta muốn phân biệt đâu là ảnh cà chua chín thì dựa vào màu sắc chẳng hạn Có thể dựa vào một số đặc điểm sau:
- Đặc điểm không gian: Phân bố mức xám, phân bố xác suất, biên độ, điểm
uốn
- Đặc điểm biến đổi: Các đặc điểm loại này được trích chọn bằng việc thực hiện
lọc vùng (zonal filtering) Các bộ vùng được gọi là “mặt nạ đặc điểm” (feature mask) thường là các khe hẹp với hình dạng khác nhau (chữ nhật, tam giác, cung tròn v v )
- Đặc điểm biên và đường biên: Đặc trưng cho đường biên của đối tượng và do
vậy rất hữu ích trong việc trích trọn các thuộc tính bất biến được dùng khi nhận dạng đối tượng Các đặc điểm này có thể được trích chọn nhờ toán tử gradient, toán tử la bàn, toán tử Laplace, toán tử “chéo không” (zero crossing) v v Việc trích chọn hiệu quả các đặc điểm giúp cho việc nhận dạng các đối tượng ảnh chính xác, với tốc độ tính toán cao và dung lượng nhớ lưu trữ giảm xuống
1.2.4.2 Các kỹ thuật nhận dạng ảnh
Có nhiều thuật toán khác nhau được ứng dụng trong việc phân loại hình ảnh Các thuật toán này được chia thành hai nhóm chính là Học có giám sát và Học không giám sát
- Học có giám sát
Trang 22Trong quá trình đánh giá, các đặc điểm của ảnh thử nghiệm được thu thập và tái phân loại Hệ thống lúc này đã có thể nhận biết các đặc điểm điển hình của mọi lớp hình ảnh mà nó được huấn luyện
Các phương pháp phân loại phổ biến dựa trên học có giám sát bao gồm:
- Học máy véc tơ hỗ trợ (Support Vector Machines)
- Cây quyết định (Decision Trees)
- Thuật toán K láng giềng gần nhất (K Nearest Neighbors)
- Mạng nơron nhân tạo (Neural Network)
Gần đây, các mạng nơron học sâu thường được sử dụng để phân loại hình ảnh
có giám sát bao gồm AlexNet, ResNet, DenseNet và Inception Đây chính là hướng chuyên sâu nghiên cứu của luận văn
- Học không giám sát
Trong học không giám sát, thuật toán chỉ sử dụng dữ liệu thô để huấn luyện Các nhãn phân loại thường không xuất hiện trong kiểu học này và mô hình học bằng cách nhận dạng các mẫu trong tập dữ liệu huấn luyện
Giống như phân loại có giám sát, các phương pháp dựa trên không giám sát cũng liên quan đến bước trích xuất đặc điểm với các thông tin chi tiết nhất về hình ảnh Các đặc điểm này sau đó được xử lý bằng các phương pháp phân cụm tham số (Gaussian Mixture Models) và phi tham số (K-means) hoặc các thuật toán học không giám sát khác
Các thuật toán và kỹ thuật phân loại của thị giác máy tính không chỉ giới hạn trong dữ liệu hình ảnh 2D đơn giản mà còn mở rộng ra dưới dạng video và ảnh 3D
Trang 231.2.5 Ứng dụng của nhận dạng ảnh
Công nghệ nhận dạng hình ảnh trí tuệ nhân tạo ngày càng được sử dụng rộng rãi trong các ngành công nghiệp khác nhau và xu hướng này được dự đoán sẽ tiếp tục trong tương lai gần Một số ngành sử dụng nhận dạng hình ảnh rất tốt là:
Ngành an ninh: Các ngành công nghiệp an ninh sử dụng rộng rãi công nghệ
nhận dạng hình ảnh để phát hiện và nhận dạng khuôn mặt Hệ thống an ninh thông minh sử dụng hệ thống nhận dạng khuôn mặt để cho phép hoặc từ chối sự xâm nhập của mọi người Hơn nữa, điện thoại thông minh có một công cụ nhận dạng khuôn mặt tiêu chuẩn giúp mở khóa điện thoại hoặc ứng dụng Khái niệm về nhận dạng khuôn mặt, nhận dạng và xác minh bằng cách tìm sự phù hợp với cơ sở dữ liệu là một khía cạnh của nhận dạng khuôn mặt
Công nghiệp ô tô: Nhận dạng hình ảnh giúp ô tô tự lái và ô tô tự lái hoạt động
tốt nhất Với sự trợ giúp của camera phía sau, cảm biến và LiDAR, hình ảnh tạo ra được so sánh với tập dữ liệu bằng phần mềm nhận dạng hình ảnh Nó giúp phát hiện chính xác các phương tiện khác, đèn giao thông, làn đường, người đi bộ, v.v
Ngành Bán lẻ: Ngành công nghiệp bán lẻ đang mạo hiểm trong lĩnh vực nhận
dạng hình ảnh vì gần đây họ mới thử nghiệm công nghệ mới này Tuy nhiên, với sự trợ giúp của các công cụ nhận dạng hình ảnh, nó đang giúp khách hàng hầu như thử sản phẩm trước khi mua
Ngành chăm sóc sức khỏe: Ngành công nghiệp chăm sóc sức khỏe có lẽ là
ngành hưởng lợi lớn nhất của công nghệ nhận dạng hình ảnh Công nghệ này đang giúp các chuyên gia chăm sóc sức khỏe phát hiện chính xác các khối u, tổn thương, đột quỵ và cục u ở bệnh nhân Nó cũng đang giúp những người khiếm thị tiếp cận nhiều hơn với thông tin và giải trí bằng cách trích xuất dữ liệu trực tuyến bằng các quy trình dựa trên văn bản
1.3 Tổng quan về mạng CNN
1.3.1 Mạng nơron sinh học
Não bộ con người là một mạng lưới khoảng 1011 tế bào thần kinh hay còn gọi
là nơron Chúng có cấu trúc và chức năng tương đối đồng nhất Các nhà nghiên cứu
Trang 24Hình 1.5 Cấu trúc cơ bản của nơron sinh học Cấu trúc của một nơron được chia thành 3 phần chính: Phần thân, hệ thống dây thần kinh tiếp nhận và sợi trục thần kinh ra Hệ thống dây thần kinh tiếp nhận tạo thành một mạng lưới dày đặc xung quanh thân tế bào (chiếm diện tích khoảng 0.25
mm2) Chúng là đầu vào để đưa các tín hiệu điện đến thân tế bào Thân tế bào có nhân bên trong sẽ tổng hợp các tín hiệu vào và sẽ làm thay đổi điện thế của bản thân nó Khi điện thế này vượt quá một mức ngưỡng thì nhân tế bào sẽ kích thích đưa một xung điện ra sợi trục thần kinh ra Sợi trục thần kinh ra có thể dài một vài centimet đến vài met Nó có thể phân thành nhiều nhánh theo dạng hình cây để nối với các dây thần kinh vào của nhiều tế bào khác hoặc có thể nối trực tiếp đến thân tế bào của duy
nhất một nơron Việc kết nối này được thực hiện nhờ các khớp nối Số khớp nối của
mỗi nơron có thể lên tới hàng trăm ngàn Người ta tính toán rằng mạng lưới dây thần kinh ra và các khớp nối chiếm khoảng 90% diện tích bề mặt nơron Các tín hiệu điện truyền trên các sợi dây thần kinh cũng như hiệu điện thế của nhân tế bào là kết quả của quá trình phản ứng và giải phóng của các chất hữu cơ được đưa ra từ các khớp nối dẫn đến dây thần kinh vào Xung điện đưa ra sợi trục axon sẽ truyền tới các khớp nối với đầu vào của các nơron khác và sẽ kích thích giải phóng các chất truyền điện
Thân nơron thần kinh
Khớp (Synapse)
Nhánh
hình cây
(dendrites
Trang 25Tuỳ theo việc tăng hay giảm hiệu điện thế mà người ta chia thành hai loại khớp nối
là khớp nối kích thích và khớp nối ức chế Cường độ tín hiệu mà một tế bào thần kinh nhận được phụ thuộc chủ yếu vào mức độ liên kết của khớp nối Các nghiên cứu chỉ
ra rằng quá trình học của mạng nơron sinh học chính là việc thay đổi mức độ liên kết của các khớp nối Chính cấu trúc mạng nơron và mức độ liên kết của các khớp nối đã tạo nên hức năng của hệ thần kinh con người Quá trình phát triển của hệ thần kinh là
một quá trình “học” liên tục Ngay từ khi chúng ta sinh ra, một số cấu trúc thần kinh
đơn giản đã được hình thành Sau đó các cấu trúc khác lần lượt được xây dựng thêm nhờ quá trình học Do đó cấu trúc mạng nơron liên tục biến đổi để ngày càng phát triển hoàn thiện
Một vấn đề đặt ra là dựa trên những kết quả nghiên cứu về hệ thần kinh con người chúng ta có thể mô phỏng, xây dựng lên các hệ thần kinh nhân tạo nhằm phục
vụ cho một chức năng nào đó không Nghiên cứu trả lời câu hỏi này đã đưa ra một hướng phát triển mới: Mạng nơron nhân tạo (Artificial neural networks - ANN)
1.3.2 Mạng nơron nhân tạo
1.3.2.1 Nơron nhân tạo
Hình 1.6 Nơron nhân tạo Nơron nhân tạo là sự rút gọn hết sức đơn giản của nơron sinh học Nó có thể thực hiện nhờ chương trình máy tính hoặc bằng mạch phần cứng Mỗi nơron thực hiện hai chức năng là chức năng đầu vào và chức năng kích hoạt đầu ra Do đó ta có
thể coi mỗi nơron như là một đơn vị xử lý Nó được xây dựng mô phỏng theo cấu
trúc của các nơron sinh học Mỗi nơron có một số đầu vào giống như các dây thần kinh tiếp nhận Các đầu vào này làm nhiệm vụ tiếp nhận thông tin từ các nơron khác
Trang 26nơron sẽ làm nhiệm vụ tổng hợp các tín hiệu đầu vào xử lý để đưa một tín hiệu ra đầu
ra của nơron Quá trình xử lý, tính toán này sẽ được đề cập cụ thể ở phần sau Đầu ra của nơron nhân tạo tương tự như sợi trục axon của nơron sinh học Tín hiệu ra cũng
có thể tách ra thành nhiều nhánh theo cấu trúc hình cây để đưa đến đầu vào của các nơron khác
1.3.2.2 Mạng nơron nhân tạo
Các nơron nhân tạo được tổ chức thành ANN Các nơron thường được sắp xếp
trong mạng thành từng lớp Đầu ra của mỗi nơron sẽ được nối đến đầu vào của một
số nơron khác theo một cấu trúc phù hợp Tuy nhiên cấu trúc ANN chưa thể đạt được
độ phức tạp như mạng nơron sinh học ANN hiện chỉ mới là sự mô phỏng hết sức đơn giản cấu trúc của mạng nơron sinh học
Giữa ANN và mạng nơron sinh học có 3 điểm chung là
- Mạng được xây dựng bằng các phần tử tính toán đơn giản liên kết lại với nhau một cách phức tạp và hoạt động theo nguyên tắc song song
- Chức năng của mạng được xác định qua cấu trúc mạng, quá trình xử lý bên trong các phần tử và mức độ liên kết giữa các phần tử
- Mức độ liên kết giữa các phần tử được xác định thông qua quá trình học của mạng (hay còn gọi là quá trình huấn luyện mạng)
Điểm khác nhau về căn bản giữa ANN và mạng nơron sinh học là ở tốc độ tính toán, độ phức tạp và tính song song Tuy xét về tốc độ xử lý của các máy tính hiện đại là cao hơn rất nhiều so với tốc độ xử lý của não bộ con người nhưng bộ não lại có thể đồng thời kích hoạt toàn bộ các nơron để làm nhiều công việc khác nhau Điều này mạng nơron nhân tạo không thể thực hiện được Với sự phát triển nhanh chóng
Trang 27của khoa học như hiện nay thì ta có thể hi vọng sẽ có những bước đột phá mới trong lĩnh vực mô phỏng mạng nơron sinh học
1.3.3 Phép tích chập trong xử lý ảnh
Phép tích chập (Convolution) là kỹ thuật quan trọng trong xử lý ảnh, được sử dụng chính yếu trong các phép toán trên ảnh như: đạo hàm ảnh, làm trơn ảnh, trích xuất biên cạnh trong ảnh…Kí hiệu phép tính convolution là : Y X W
Theo toán học, tích chập là phép toán tuyến tính, cho ra kết quả là một hàm bằng việc tính toán dựa trên hai hàm đã có (X và W) Để cho dễ hình dung mình sẽ lấy ví
dụ trên ảnh xám, tức là ảnh được biểu diễn dưới dạng ma trận X kích thước mxn Công thức tích chập giữa hàm ảnh X(x, y) và bộ lọc W(x, y) (kích thước mxn):
Ta định nghĩa kernel là một ma trận vuông kích thước kxk trong đó k là số lẻ
k có thể bằng 1, 3, 5, 7, 9,… Ví dụ kernel kích thước 3x3 như (1.2)
(1.2)
Với mỗi phần tử x ijtrong ma trận X lấy ra một ma trận có kích thước bằng kích thước của kernel W có phần tử x ijlàm trung tâm (đây là vì sao kích thước của kernel thường lẻ) gọi là ma trận A Sau đó tính tổng các phần tử của phép tính element-wise của ma trận A và ma trận W, rồi viết vào ma trận kết quả Y
Hình 1.7 minh hoạ việc thực hiện phép tích chập trong xử lý ảnh số khi tính tại
22
x (ô khoanh đỏ trong hình), ma trận A cùng kích thước với W, có x22làm trung tâm
có màu nền da cam Sau đó tính y11:
Trang 28Hình 1.7 Minh họa phép tích chập trong xử lý ảnh
Hình 1.8 Ma trận đầu ra Y khi chập ảnh X với kernel W Làm tương tự với các phần tử còn lại trong ma trận ta thu được kết quả là ma trận Y đầu ra (Hình 1.8) Ma trận Y này có kích thước nhỏ hơn ma trận X Kích thước của ma trận Y là (m-k+1) x (n-k+1)
Padding
Hình 1.9 Stride=1, padding=1 Như đã phân tích ở trên, mỗi lần thực hiện phép tính convolution xong, kích thước ma trận Y đều nhỏ hơn X Nếu muốn ma trận Y thu được có kích thước bằng
ma trận X ta phải thêm giá trị 0 ở viền ngoài ma trận X Phép tính này gọi là
Trang 29convolution với padding=1 Padding=k nghĩa là thêm k vector 0 vào mỗi phía của ma trận (Hình 1.9)
Stride
Như ở trên ta thực hiện tuần tự các phần tử trong ma trận X, thu được ma trận
Y cùng kích thước ma trận X, ta gọi là stride=1 Tuy nhiên, nếu stride=k (k > 1) thì
ta chỉ thực hiện phép tính convolution trên các phần tử x1 * ,1i k j k* Hình 1.10 minh họa trường hợp stride=2
Hình 1.10 Stride=2, padding=1 Hiểu đơn giản là bắt đầu từ vị trí x11 sau đó nhảy k bước theo chiều dọc và ngang cho đến hết ma trận X Kích thước của ma trận Y lúc này là 3x3 đã giảm đi đáng kể so với ma trận X Tổng quát cho phép tính convolution của ma trận X kích thước mxn với kernel kích thước kxk, stride = s, padding = p ra ma trận Y với kích
Ý nghĩa của phép tính convolution
Mục đích của phép tính convolution trên ảnh là làm mờ, làm nét ảnh; xác định các đường;…Đó chính là các đặc trưng của ảnh cần trích chọn Mỗi kernel khác nhau thì
sẽ phép tính convolution sẽ có ý nghĩa khác nhau Hình 1.11 minh họa một số bộ lọc Kernel được xử dụng trong các thao tác xử lý ảnh như làm nét ảnh, xác định biên ảnh, làm mờ ảnh
Trang 31Mặc dù máy tính nhìn nhận theo cách khác con người, chúng ta vẫn có thể dạy máy tính nhận diện các mẫu như con người Điều quan trọng là chúng ta cần nghĩ về hình ảnh theo một cách khác đi
Để dạy thuật toán nhận diện đối tượng trong hình ảnh, ta sử dụng một loại mạng ANN, đó là CNN Tên của nó được dựa trên phép tính quan trọng được sử dụng trong mạng- tích chập (đã được trình bày trong mục 1.3.3)
Mạng CNN lấy cảm hứng từ não người Nghiên cứu trong những thập niên 1950
và 1960 của D.H Hubel và T.N Wiesel trên não của động vật đã đề xuất một mô hình mới cho việc cách mà động vật nhìn nhận thế giới Trong báo cáo, hai ông đã diễn tả
2 loại tế bào nơron trong não và cách hoạt động khác nhau: tế bào đơn giản (simple cell – S cell) và tế bào phức tạp (complex cell – C cell)
Các tế bào đơn giản được kích hoạt khi nhận diện các hình dáng đơn dản như đường nằm trong một khu vực cố định và một góc cạnh của nó Các tế bào phức tạp
có vùng tiếp nhận lơn hơn và đầu ra của nó không nhạy cảm với những vị trí cố định trong vùng
Trong thị giác, vùng tiếp nhận của một nơron tương ứng với một vùng trên võng mạc nơi mà sẽ kích hoạt nơron tương ứng
Năm 1980, Fukushima đề xuất mô hình mạng nơron có cấp bậc gọi là neocognitron Mô hình này dựa trên khái niệm về S cell và C cell Mạng neocognitron
có thể nhận diện mẫu dựa trên việc học hình dáng của đối tượng
Sau đó vào năm 1998, mạng CNN được giới thiệu bởi Bengio, Le Cun, Bottou
và Haffner Mô hình đầu tiên của họ được gọi tên là LeNet-5 Mô hình này có thể nhận diện chữ số viết tay Các mô hình sau đó được phát triển cho nhận dạng hình ảnh và các ứng dụng tương tự
1.3.5 Kiến trúc mạng CNN
Mạng CNN có kiến trúc khác với mạng nơron thông thường Mạng ANN bình thường chuyển đổi đầu vào thông qua hàng loạt các tầng ẩn Mỗi tầng là một tập các nơron và các tầng được liên kết đầy đủ với các nơron ở tầng trước đó Và ở tầng cuối cùng sẽ là tầng kết quả đại diện cho dự đoán của mạng
Trang 32Hình 1.13 Mạng nơron thông thường (trái) và CNN (phải) Với CNN, đầu tiên, mạng được chia thành ba chiều: rộng, cao, và sâu Kế đến, các nơron trong mạng không liên kết hoàn toàn với toàn bộ nơron tiếp theo mà chỉ liên kết tới một vùng nhỏ Cuối cùng, một tầng đầu ra được tối giản thành véc-tơ của giá trị xác suất
Mạng CNN gồm hai thành phần:
Phần tầng ẩn hay phần rút trích đặc trưng: trong phần này, mạng sẽ tiến
hành tính toán hàng loạt phép tích chập và phép hợp nhất (pooling) để phát hiện các đặc trưng Ví dụ: nếu ta có hình ảnh con ngựa vằn, thì trong phần này mạng sẽ nhận diện các sọc vằn, hai tai, và bốn chân của nó
Phần phân lớp: tại phần này, một lớp với các liên kết đầy đủ sẽ đóng vai trò
như một bộ phân lớp các đặc trưng đã rút trích được trước đó Tầng này sẽ đưa ra xác suất của một đối tượng trong hình
Hình 1.14 Kiến trúc mạng CNN
1.3.5.1 Trích rút đặc trưng
Lớp tích chập
Trang 33Tích chập là một khối quan trọng trong CNN Thuật ngữ tích chập được dựa trên một phép hợp nhất toán học của hai hàm tạo thành hàm thứ ba Phép toán này kết hợp hai tập thông tin khác nhau
Trong trường hợp CNN, tích chập được thực hiện trên giá trị đầu vào của dữ liệu và kernel/filter (thuật ngữ này được sử dụng khác nhau tùy tình huống) để tạo ra một bản đồ đặc trưng (feature map)
Ta thực hiện phép tích chập bằng cách trượt kernel/filter theo dữ liệu đầu vào Tại mỗi vị trí, ta tiến hành phép nhân ma trận và tính tổng các giá trị để đưa vào bản
đồ đặc trưng
Trong thực tế, đối với bài toán nhận dạng hình ảnh, tích chập được thực hiện hiện trên không gian ba chiều Vì mỗi hình ảnh được biểu diễn dưới dạng ba chiều: rộng, cao, và sâu Chiều sâu ở đây chính là giá trị màu sắc của hình (RGB) Điều này
là tương tự đối với các tín hiệu khác khi được đưa về ba chiều không gian
Ta thực hiện phép tích chập trên đầu vào nhiều lần khác nhau Mỗi lần sử dụng một kernel/filter khác nhau Kết quả ta sẽ thu được những bản đồ đặc trưng khác nhau Cuối cùng, ta kết hợp toàn bộ bản đồ đặc trưng này thành kết quả cuối cùng của tầng tích chập
Lớp ReLU
Tương tự như mạng nơron thông thường, ta sử dụng một hàm kích hoạt (activate function) để có đầu ra dưới dạng phi tuyến Trong trường hợp CNN, đầu ra của phép tích chập sẽ đi qua hàm kích hoạt nào đó ví dụ như hàm tinh chỉnh các đơn vị tuyến tính (Rectified linear units - ReLU)
Trong quá trình trượt kernel/filter trên dữ liệu đầu vào, ta sẽ quy định một bước nhảy (stride) với mỗi lần di chuyển Thông thường ta lựa chọn thường chọn bước nhảy là 1 Nếu kích thước bước nhảy tăng, kernel/filter sẽ có ít ô trùng lắp
Bởi vì kích thước đầu ra luôn nhỏ hơn đầu vào nên ta cần một phép xử lí đầu vào để đầu ra không bị co giãn Đơn giản ta chỉ cần thêm một lề nhỏ vào đầu vào Một lề (padding) với giá trị 0 sẽ được thêm vào xung quanh đầu vào trước khi thực hiện phép tích chập
Trang 34Hình 1.15 Ví dụ về max pooling và average pooling kích thước 2×2 Thông thường, sau mỗi tầng tích chập, ta sẽ cho kết quả đi qua một tầng hợp nhất (pooling layer) Mục đích của tầng này là để nhanh chóng giảm số chiều Việc này giúp giảm thời gian học và hạn chế việc overfitting
Một phép hợp nhất đơn giản thường được dùng đó là max pooling, phép này lấy giá trị lớn nhất của một vùng để đại diện cho vùng đó Kích thước của vùng sẽ được xác định trước để giảm kích thước của bản đồ đặc trưng nhanh chóng nhưng vẫn giữ được thông tin cần thiết Bên cạnh đó, ta có thể sử dụng kỹ thuật Average pooling bằng cách lấy giá trị trung bình của một vùng (Hình 1.15)
Như vậy, khi thiết kế phần rút trích đặc trưng của mạng CNN, ta cần chú ý đến bốn siêu tham số quan trọng là: Kích thước kernel/filter, Số lượng kernel/filter, Kích thước bước nhảy (stride), Kích thước lề (padding)
1.3.5.2 Phân lớp
Trong phần phân lớp, ta sử dụng một vài tầng 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 Tầng cuối cùng trong mạng CNN là một tầng liên kết đầy đủ, phần này hoạt động tương tự như mạng nơron thông thường
Trang 35Kế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 1.16 Lớp kết nối đầy đủ
1.4 Ứng dụng của mạng CNN trong nhận dạng ảnh
Mạng CNN được dùng phổ biến cho nhận dạng hình ảnh Trước tiên, đối với mỗi điểm ảnh trong ảnh đầu vào, ta mã hóa cường độ của điểm ảnh là giá trị của nơron tương ứng trong tầng đầu vào
Ví dụ đối với bài toán nhận dạng chữ số viết tay từ tập dữ liệu MNIST, mỗi bức ảnh kích thước 28x28 điểm ảnh Do vậy, mạng có 784 (28x28) nơron đầu vào (Hình 1.17) Sau đó ta huấn luyện trọng số (weight) và độ lệch (bias) để đầu ra của mạng như ta mong đợi là xác định chính xác ảnh các chữ số 0, 1, 2 8, 9
Mạng tích chập sử dụng ba ý tưởng cơ bản: các trường tiếp nhận cục bộ (local receptive field), trọng số chia sẻ (shared weights) và tổng hợp (pooling) Chúng ta hãy xem xét lần lượt từng ý tưởng
1.4.1 Trường tiếp nhận cục bộ (Local receptive fields)
Hình 1.17 Lớp input gồm 28x28 nơron cho nhận dạng dữ liệu MNIST
Trang 36ảnh đầu vào Vì vậy, đối với một nơron ẩn cụ thể, chúng ta có thể có các kết nối như Hình 1.18 Vùng đó trong tín hiệu đầu vào được gọi là vùng tiếp nhận cục bộ cho nơron
ẩn Đó là một cửa sổ nhỏ trên các điểm ảnh đầu vào Mỗi kết nối sẽ học một trọng số và nơron ẩn cũng sẽ học một độ lệch (overall bias) Ta có thể hiểu rằng, nơron lớp ẩn cụ thể học để phân tích trường tiếp nhận cục bộ cụ thể của nó
Hình 1.18 Kết nối vùng 5x5 nơron input với nơron lớp ẩn Sau đó chúng ta trượt trường tiếp nhận cục bộ trên toàn bộ tín hiệu Đối với mỗi trường tiếp nhận cục bộ, có một nơron ẩn khác trong tầng ẩn đầu tiên Để minh họa điều này một cách cụ thể, chúng ta hãy bắt đầu với một trường tiếp nhận cục bộ ở góc trên bên trái (Hình 1.19)
Hình 1.19 Vị trí bắt đầu của trường tiếp nhận cục bộ
Trang 37Sau đó, chúng ta trượt trường tiếp nhận cục bộ trên bởi một điểm bên phải (tức
là bằng một nơron), để kết nối với một nơron ẩn thứ hai (Hình 1.20):
Hình 1.20 Vị trí thứ 2 của trường tiếp nhận cục bộ và nơron lớp ẩn
Cứ như vậy, ta sẽ xây dựng các lớp ẩn đầu tiên Lưu ý rằng nếu chúng ta có một tín hiệu đầu vào 28x28 và 5x5 trường tiếp nhận cục bộ thì ta sẽ có 24x24 nơron trong lớp ẩn Có được điều này là do chúng ta chỉ có thể di chuyển các trường tiếp nhận cục bộ ngang qua 23 nơron (hoặc xuống dưới 23 nơron), trước khi chạm với phía bên phải (hoặc dưới) của tín hiệu đầu vào
Với bài toán nhận dạng ảnh, người ta thường gọi ma trận lớp ẩn đầu vào là bản
đồ đặc trưng (feature map), thông số xác định các đặc trưng được gọi là trọng số chia
sẻ là (shared weight) và độ lệch xác định một bản đồ đặc trưng là shared bias Như
vậy đơn giản nhất là qua các bước trên chúng ta chỉ có một feature map Tuy nhiên trong nhận dạng tín hiệu chúng ta cần nhiều hơn một feature map
Hình 1.21 Trường tiếp nhận cục bộ với ba bản đồ đặc trưng
Trong ví dụ ở Hình 1.21, có ba bản đồ đặc trưng Mỗi bản đồ đặc trưng được xác định bởi một tập 5x5 trọng số chia sẻ, và một độ lệch chia sẻ duy nhất Kết quả
Trang 38đây sử dụng lớp tích chập với 20 và 40 bản đồ đặc trưng
Hình 1.22 thể hiện 20 vùng tín hiệu tương ứng với 20 bản đồ đặc trưng khác nhau (hay còn gọi là bộ lọc, hay là nhân) Mỗi bản đồ được thể hiện là một hình khối kích thước 5x5, tương ứng với 5x5 trọng số trong trường tiếp nhận cục bộ Khối trắng có nghĩa là một trọng số nhỏ hơn, vì vậy các bản đồ đặc trưng đáp ứng
ít hơn để tương ứng với điểm ảnh tín hiệu vào Khối sẫm màu hơn có nghĩa là trọng số lớn hơn, do đó, các bản đồ đặc trưng đáp ứng nhiều hơn với các điểm tín hiệu đầu vào tương ứng
Hình 1.22 Trường tiếp nhận cục bộ với 20 bản đồ đặc trưng
Có thể thấy rằng, trường tiếp nhận cục bộ thích hợp cho việc phân tách tín hiệu, giúp chọn ra những vùng tín hiệu có giá trị nhất cho việc đánh giá phân lớp
Trang 391.4.2 Trọng số chia sẻ và độ lệch (Shared weights and biases)
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau Tất cả các nơron trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác nhau trong hình ảnh đầu vào Chúng ta gọi việc map từ input layer sang hidden layer là một bản đồ đặc trưng Ta cần tìm ra mối quan hệ giữa số lượng bản đồ đặc trưng với
số lượng tham số
Chúng ta thấy mỗi bản đồ đặc trưng cần 25 = 5×5 shared weight và 1 shared bias Như vậy mỗi bản đồ đặc trưng cần 5×5+1 = 26 tham số Như vậy nếu có 10 feature map thì có 10×26 = 260 tham số Chúng ta xét lại nếu layer đầu tiên có kết nối đầy đủ nghĩa là chúng ta có 28×28=784 neuron đầu vào như vậy ta chỉ có 30 neuron ẩn Như vậy ta cần 28x28x30 shared weight và 30 shared bias Tổng số tham
số là 28x28x30+30 tham số lớn hơn nhiều so với ANN Ví dụ vừa rồi chỉ mô tả để thấy được sự ước lượng số lượng tham số chứ chúng ta không so sánh được trực tiếp
vì 2 mô hình khác nhau Nhưng điều chắc chắn là nếu mô hình có số lượng tham số
ít hơn thì nó sẽ chạy nhanh hơn.a
1.4.3 Lớp chứa hay lớp tổng hợp (Pooling layer)
Ngoài các lớp tích chập vừa mô tả, mạng nơron tích chập cũng chứa các lớp pooling Lớp pooling thường được sử dụng ngay sau lớp tích chập Những gì các lớp pooling làm là đơn giản hóa các thông tin ở đầu ra từ các lớp tích chập
Ví dụ, mỗi đơn vị trong lớp pooling có thể thu gọn một vùng 2x2 nơron trong lớp trước Một thủ tục pooling phổ biến là max-pooling Trong maxpooling, một đơn
vị pooling chỉ đơn giản là kết quả đầu ra kích hoạt giá trị lớn nhất trong vùng đầu vào 2x2, như minh họa trong sơ đồ sau:
Hình 1.23 Ví dụ về Max pooling 2x2
Trang 40Hình 1.24 Max pooling với ba bản đồ đặc trưng Chúng ta có thể hiểu max-pooling như là một cách cho mạng để hỏi xem một đặc trưng nhất được tìm thấy ở bất cứ đâu trong một khu vực của ảnh Sau đó nó bỏ
đi những thông tin định vị chính xác Trực giác là một khi một đặc trưng đã được tìm thấy, vị trí chính xác của nó là không quan trọng như vị trí thô của nó so với các đặc trưng khác Một lợi ích lớn là có rất nhiều tính năng gộp ít hơn, và vì vậy điều này sẽ giúp giảm số lượng các tham số cần thiết trong các lớp sau
Max-pooling không phải là kỹ thuật duy nhất được sử dụng để pooling Một phương pháp phổ biến khác được gọi là L2 pooling Ở đây, thay vì lấy giá trị kích hoạt tối đa (maximum activation) của một vùng 2x2 nơron, chúng ta lấy căn bậc hai của tổng các bình phương của kích hoạt trong vùng 2x2 Trong khi các chi tiết thì khác nhau, nhưng về trực giác thì tương tự như max-pooling: L2 pooling là một cách
để cô đọng thông tin từ các lớp tích chập Trong thực tế, cả hai kỹ thuật đã được sử dụng rộng rãi Và đôi khi người ta sử dụng các loại pooling khác như average pooling Như vậy, chúng ta có thể đặt tất cả những ý tưởng lại với nhau để tạo thành một mạng tích chập hoàn chỉnh Nó tương tự như kiến trúc chúng ta phân tích ở trên, nhưng có thêm một lớp 10 nơron đầu ra, tương ứng với 10 lớp chữ số