Tải bản đầy đủ (.docx) (103 trang)

Nghiên cứu về mạng nơ ron tích chập và xây dựng ứng dụng nhận diện biển báo giao thông

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (17 MB, 103 trang )

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

NGUYỄN THIÊN SƠN

NGHIÊN CỨU VỀ MẠNG NƠ-RON TÍCH CHẬP
VÀ XÂY DỰNG ỨNG DỤNG NHẬN DIỆN BIỂN BÁO GIAO THÔNG

Ngành/Chuyên nghành: Công nghệ Thông tin/Công nghệ phần mềm

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC


TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

NGUYỄN THIÊN SƠN

NGHIÊN CỨU VỀ MẠNG NƠ-RON TÍCH CHẬP
VÀ XÂY DỰNG ỨNG DỤNG NHẬN DIỆN BIỂN BÁO GIAO THÔNG

Ngành/Chuyên nghành: Công nghệ Thông tin/Công nghệ phần mềm

Giảng viên hướng dẫn:
TS. Nguyễn Đức Tuấn

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC


TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN



CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc

Hà Nội, ngày

tháng

năm 2020

NHIỆM VỤ CỦA ĐỒ ÁN TỐT NGHIỆP
Họ và tên: Nguyễn Thiên Sơn
Giới tính: Nam
Ngày sinh: 09/12/1998
Nơi sinh: Hà Nội
Chuyên ngành: Công nghệ phần mềm
Mã SV: 16A10010152
Lớp hành chính: 1610A06
1. TÊN ĐỀ TÀI
Nghiên cứu về mạng nơ-ron tích chập và xây dựng ứng dụng nhận diện
biển báo giao thông
2. NHIỆM VỤ VÀ NỘI DUNG
 Thu thập dữ liệu biển báo giao thông đường bộ tại Việt Nam
 Nghiên cứu, tìm hiểu về mạng nơ-ron tích chập để xây dựng model
nhận diện biển báo giao thông.
 Xây dựng model nhận diện biển báo có thể chạy được trên thiết bị di
động.
 Xây dựng ứng dụng phục vụ việc nhận diện biển báo giao thông.
3. NGÀY GIAO NHỆM VỤ: 24/08/2020
4. NGÀY HOÀN THÀNH NHIỆM VỤ: 21/11/2020

5. GIẢNG VIÊN HƯỚNG DẪN: TS. Nguyễn Đức Tuấn.
Nội dung và đề cương Đồ án đã được Hội đồng chuyên ngành thông qua.
Ngày
tháng năm 20..
GIẢNG VIÊN HƯỚNG DẪN
KHOA CÔNG NGHỆ THÔNG TIN


MỤC LỤC
CHƯƠNG 1.

GIỚI THIỆU VỀ ĐỀ TÀI..........................................................1

1.1.

Lý do chọn đề tài 1

1.2.

Phân loại bài toán 3

1.3.

Mục đích của đề tài

CHƯƠNG 2.
2.1.

3


MẠNG NƠ-RON NHÂN TẠO VÀ MẠNG NƠ-RON TÍCH CHẬP
4

Mạng nơ-ron nhân tạo

4

2.1.1. Giới thiệu về mạng nơ-ron..........................................................4
2.1.2. Các thành phần của mạng nơ-ron nhân tạo...............................5
2.1.3. Quá trình huấn luyện mạng........................................................7
2.2.

Mạng nơ-ron tích chập

9

2.2.1. Phép tính tích chập...................................................................10
2.2.2. Chi tiết về mạng nơ-ron tích chập.............................................15
2.2.3. Các loại bài toán phổ biến trong lĩnh vực thị giác máy tính......21
CHƯƠNG 3.
DETECTOR

NHẬN DIỆN VẬT THỂ VỚI SINGLE SHOT MULTIBOX
24

3.1.

Giới thiệu về SSD - Single Shot Detector

3.2.


Hướng tiếp cận

3.3.

Kiến trúc của SSD 26

24

25

3.3.1. Convolutional predictors for detection.....................................26
3.3.2. Multi-scale feature maps for detection....................................27
3.3.3. Default boxes............................................................................27
3.4.

Huấn luyện SSD

27

3.4.1. Tìm các box phù hợp.................................................................27


3.4.2. Hàm mất mát............................................................................28
3.4.3. Chọn kích thước và tỉ lệ cho default box..................................30
CHƯƠNG 4.
V2
4.1.

SINGLE SHOT MULTIBOX DETECTOR VỚI MẠNG MOBILENET

32

Tích chập 2 chiều thông thường và tích chập tách biệt chiều sâu 32
4.1.1. Tích chập 2 chiều thông thường...............................................32
4.1.2. Tích chập tách biệt chiều sâu (Depthwise Separable
Convolution)..............................................................................................
33
4.1.3. Sự khác nhau giữa 2 loại tích chập...........................................35

4.2.

Khối phần dư (Residual Block) 36
4.2.1. Vanishing Gradient....................................................................36
4.2.2. Khối dư trong mạng Resnet......................................................38

4.3.

MobileNetV2

39

4.3.1. Tổng quan về mạng MobileNetV2.............................................39
4.3.2. Kiến trúc mạng..........................................................................41
4.3.3. Nhận diện vật thể với Single Shot Multibox Detector trên mạng
MobileNetV2.........................................................................................42
CHƯƠNG 5.

BIỂN BÁO GIAO THÔNG TẠI VIỆT NAM..............................43

5.1.


Biển báo giao thông tại Việt Nam

43

5.2.

Các nhóm biển báo giao thông đường bộ tại Việt Nam

43

5.2.1. Nhóm biển báo cấm..................................................................43
5.2.2. Nhóm biển báo nguy hiểm và cảnh báo...................................44
5.2.3. Nhóm biển hiệu lệnh................................................................44
5.2.4. Nhóm biển báo chỉ dẫn.............................................................44
5.2.5. Nhóm biển phụ.........................................................................45
CHƯƠNG 6.

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG...................................46


6.1.

Phân tích hệ thống về chức năng

46

6.1.1. Phân tích hệ thống về chức năng..............................................46
6.1.2. Phân tích dữ liệu.......................................................................58
6.2.


Thiết kế hệ thống 59

CHƯƠNG 7.
7.1.

TRIỂN KHAI VÀ KẾT LUẬN..................................................63

Công nghệ sử dụng

63

7.1.1. Model nhận diện báo giao thông..............................................63
7.1.2. Server Backend..........................................................................64
7.1.3. Ứng dụng Mobile......................................................................64
7.1.4. Các công cụ sử dụng.................................................................64
7.2.

Xây dựng model nhận diện biển báo 65
7.2.1. Thu thập dữ liệu........................................................................65
7.2.2. Xây dựng và huấn luyện model nhận diện biển báo giao thông. .
...................................................................................................70
7.2.3. Kiểm thử model........................................................................76

7.3.

Xây dựng Server xử lý

80


7.4.

Xây dựng ứng dụng

81

7.4.1. Giải pháp thực hiện...................................................................81
7.4.2. Kết quả......................................................................................83
7.5.

KẾT LUẬN 87

TÀI LIỆU THAM KHẢO.................................................................................88


DANH MỤC BẢNG BIỂU
Bảng 4.1. Kiến trúc mạng MobileNetV2
41
Bảng 6.1. Gom nhóm chức năng
47
Bảng 6.2. Đặc tả bảng dữ liệu BienBao
58
Bảng 7.1. Số lượng các biển báo được gán nhãn trong tập dữ liệu.
66
Bảng 7.2. Số lượng biển báo sau khi chuyển đổi để đưa vào huấn luyện
67
Bảng 7.3. So sánh về độ chính xác của 2 mạng theo độ đo Average Precision
tại IOU = 0.5 trên tập dữ liệu huấn luyện
73
Bảng 7.4. So sánh về độ chính xác của 2 mạng theo độ đo Average Precision

tại IOU = 0.5 trên tập dữ liệu kiểm thử

74


DANH MỤC HÌNH VẼ
Hình 2.1. Kiến trúc mạng nơ-ron nhân tạo 5
Hình 2.2. Một nơ-ron trong mạng
6
Hình 2.3. Sự khác biệt về cấu trúc giữa mạng nơ-ron thông thường
10
Hình 2.4. Biểu diễn phép tính tích chập giữa 1 ma trận và 1 kernel
11
Hình 2.5. Kết quả của phép tính tích chập trên 1 ma trận 12
Hình 2.6. Padding trong phép tính tích chập 12
Hình 2.7. stride=1, padding=1 13
Hình 2.8. padding=1, stride=2 13
Hình 2.9. Các kernel khác nhau khi áp dụng lên ảnh [5]. 14
Hình 2.10. Minh họa phép tích chập trên ảnh màu RGB 15
Hình 2.11. Phép tính tích chập trên 3 channel R,G,B
16
Hình 2.12. Kết quả của ảnh số sau khi đi qua convolutional layer
17
Hình 2.13. Kích thước của ảnh số sau khi đi qua Convolutional layer 18
Hình 2.14. Max pooling layer với size=(3,3), stride=1, padding=0
19
Hình 2.15 Ví dụ về pooling layer
19
Hình 2.16. Fully Connected Layer
20

Hình 2.17. Biểu diễn trực quan mô hình mạng nơ-ron tích chập 20
Hình 2.18. Phân loại ảnh và định vị vật thể 21
Hình 2.19. Các bài toán phổ biến trong thị giác máy tính 22
Hình 3.1. Hướng tiếp cận của SSD
25
Hình 3.2. Kết quả nhận diện vật thể với SSD 25
Hình 3.3. Kiến trúc mạng SSD dựa trên VGG16 [8]
26
Hình 3.4. Intersect over Union 28
Hình 3.5. Hình ảnh chạy thử nghiệm SSD 31
Hình 4.1. Minh họa phép tích chập 2 chiều thông thường 32
Hình 4.2. Minh họa phép tích chập chiều sâu34
Hình 4.3. Minh họa phép tích chập điểm
35
Hình 4.4. Training error và test error trong quá trình huấn luyện mạng 37
Hình 4.5. Hiện tượng Vanishing Gradient 37
Hình 4.6. Khối phần dư 38
Hình 4.7. Sự khác biệt giữa một khối thông thường và khối phần dư trong
mạng
38
Hình 4.8. Khối dư trong mạng [7]
39
Hình 4.9. Kiến trúc khối dư ngược trong mạng MobileNetV2
Hình 4.10. Khối phần dư và khối dư ngược 40
Hình 4.11. Các “lớp ẩn” trong khối dư ngược/bottleneck 42
Hình 4.12. Kiến trúc mạng SSD với MobileNetV2 42
Hình 5.1. Nhóm biển báo cấm 43

40



Hình 5.2. Nhóm biển cảnh báo nguy hiểm 44
Hình 5.3. Nhóm biển hiệu lệnh 44
Hình 5.4. Nhóm biển báo chỉ dẫn
45
Hình 5.5. Nhóm biển báo phụ 45
Hình 6.1. Sơ đồ phân rã chức năng
49
Hình 6.2. DFD mức khung cảnh
52
Hình 6.3. DFD mức đỉnh 53
Hình 6.4. DFD mức dưới đỉnh tiến trình “Tra cứu thông tin biển báo” 54
Hình 6.5. DFD mức dưới đỉnh tiến trình “Nhận diện biển báo theo thời gian
thực”
54
Hình 6.6. DFD mức dưới đỉnh tiến trình “Quản trị model nhận diện biển báo”
55
Hình 6.7. DFD tiến trình “Tiền huấn luyện” 56
Hình 6.8. DFD tiến trình “Huấn luyện model”
56
Hình 6.9. DFD tiến trình “Hậu huấn luyện” 57
Hình 6.10. Giao diện Menu
59
Hình 6.11. Giao diện màn hình cài đặt 60
Hình 6.12. Giao diện chức năng Tra cứu thông tin biển báo
61
Hình 6.13. Giao diện camera màn hình chức năng nhận diện biển báo theo
thời gian thực
62
Hình 7.1. Kiến trúc ứng dụng 63

Hình 7.2. Công cụ LabelImg dùng để gán nhãn dữ liệu 65
Hình 7.3. Hình ảnh biển báo được chụp vào buổi đêm
68
Hình 7.4. Hình ảnh được chụp vào ban ngày, trời nắng 69
Hình 7.5. Hình ảnh được chụp vào ban ngày, trời mưa
69
Hình 7.6. Kết quả hàm loss tổng sau khi huấn luyện
71
Hình 7.7. Kết quả hàm Regression Loss – Hồi quy vị trí các khung chứa biển
báo
71
Hình 7.8. Kết quả hàm Confidence Loss – Hàm mất mát phân loại biển báo
72
Hình 7.9. Tùy chọn chức năng 76
Hình 7.10. Kết quả nhận diện biển báo bằng hình ảnh
77
Hình 7.11. Kết quả nhận diện biển báo theo thời gian thực
Hình 7.12. VGG16-SSD trên Google Colab 79
Hình 7.13. VGG16-SSD trên máy tính cá nhân
79
Hình 7.14. MobileNetV2 SSD Lite trên Google Colab
79
Hình 7.15. MobileNetV2 SSD Lite trên máy tính cá nhân 79
Hình 7.16. So sánh giữa giao thức HTTP và WebSocket 80

78


Hình 7.17. Giao diện Menu của ứng dụng 83
Hình 7.18. Giao diện cài đặt của ứng dụng. 84

Hình 7.19. Giao diện chức năng “tra cứu thông tin biển báo bằng hình ảnh”
85
Hình 7.20. Giao diện chức năng “Nhận diện biển báo theo thời gian thực”.
86


DANH MỤC CÔNG THỨC
(2.1) Hàm kết hợp và hàm kích hoạt 6
(2.2) Công thức tính hàm kết hợp
6
(2.3) Các hàm kích hoạt thường sử dụng
7
(2.4) Tính kích thước ma trận sau phép tích chập 13
(2.5) Công thức tính kích thước tensor sau phép tính tích chập k kernel
17
(3.1) Công thức tính Jaccard Overlap 27
(3.2) Hàm mất mát trong SSD 28
(3.3) Localization Loss 29
(3.4) Smooth L1 29
(3.5) Confidence Loss 29
(3.6) Tính tỉ lệ của default boxes trên từng feature map 30
(3.7) Tính chiều dài và chiều rộng trên các default boxes 30
(3.8) Tính tỉ lệ của default boxes với aspect ratio = 1
30


CHƯƠNG 1.

GIỚI THIỆU VỀ ĐỀ TÀI


Trình bày lý do chọn đề tài và mục đích của đề tài. Chi tiết về lý do và mục
đích của đề tài sẽ được trình bày dưới đây.
1.1. Lý do chọn đề tài
Chúng ta đang sống trong thời đại bùng nổ công nghệ thông tin. Mỗi ngày,
con người chúng ta thực hiện được rất nhiều công việc từ giải trí, làm việc
đến nghiên cứu,... bằng máy tính. Và không ai trong số chúng ta có thể phủ
nhận được vai trò cực kỳ quan trọng của máy tính trong khoa học, kỹ thuật
cũng như đời sống. Máy tính hỗ trợ con người tối đa trong việc xử lý những
vấn đề tưởng chừng nan giải nhờ vào tốc độ xử lý, tính toán cực nhanh và
tính chính xác của nó.
Những năm gần đây, AI(Artificial Intelligence - trí tuệ nhân tạo), cụ thể hơn là
Machine Learning và Deep Learning nổi lên như bằng chứng của cuộc cách
mạng công nghiệp lần thứ 4. Trí tuệ nhân tạo đang len lỏi vào mọi lĩnh vực
trong đời sống, giúp máy tính có thể làm được những việc tưởng chừng
không thể như: Nhận dạng và phân loại vật thể, nhận dạng hành vi, xử lý
ngôn ngữ,...
Về Deep Learning, có rất nhiều mô hình mạng nơ-ron phục vụ cho những
mục đích khác nhau. Mạng nơ-ron tích chập(CNN - Convolutional Neural
Networks) thường dùng cho xử lý phân loại ảnh, Mạng nơ-ron hồi quy(RNN Recurrent Neural Networks) thường dùng cho các bài toán xử lý ngôn ngữ tự
nhiên như: Dịch máy, phân loại ngữ nghĩa, nhận dạng giọng nói, phân loại
video,... và GAN(Generative Adversarial Networks) được dùng để hướng tới
việc sinh ra dữ liệu mới sau quá trình học. GAN có thể tự sinh ra một khuôn
mặt mới, một con người, một đoạn văn, chữ viết, bản nhạc giao hưởng hay
những thứ tương tự thế. Nhận thấy mạng nơ-ron tích chập(CNN) phù hợp
với vấn đề mà đề tài đang gặp phải là phân loại ảnh, nên em quyết định tìm
hiểu và nghiên cứu về mạng nơ-ron tích chập.
Việc hiểu biết luật giao thông của một bộ phận người dân còn hạn chế, dẫn
đến tình trạng không tuân thủ tốt luật giao thông như là: không tuân thủ



biển báo giao thông, vạch kẻ đường, đi vào đường ngược chiều,... Điều này
rất nguy hiểm và có thể gây ra những hậu quả nghiêm trọng như là tai nạn
giao thông.
Do đó, em quyết định lựa chọn đề tài “Nghiên cứu về mạng Nơ ron tích chập
và xây dựng ứng dụng nhận diện biển báo giao thông”. Chỉ cần cung cấp hình
ảnh, ứng dụng sẽ phát hiện vùng chứa, phân loại biển báo và trả ra tên biển
báo cũng như công dụng của biển báo. Từ đó giúp tất cả chúng ta có nhận
thức hơn cũng như tuân thủ tốt luật lệ giao thông, góp phần xây dựng văn
hóa an toàn giao thông. Ngoài ra, ứng dụng hoạt động như một trợ lý, chỉ cần
bật ứng dụng và hướng camera về phía trước, ứng dụng sẽ tự động nhận
diện và nhắc tên biển báo. Giúp các tài xế khi tham gia giao thông không bị
bỏ sót biển báo, từ đó không bị mắc những lỗi không đáng do quá tập trung
vào 1 tình huống giao thông nào đó mà không quan sát được biển báo.


1.2. Phân loại bài toán
Sản phẩm đầu ra của đề tài là một ứng dụng nhận diện biển báo giao thông.
Do đó, bài toán mà em cần phải giải quyết là bài toán “nhận diện biển báo
giao thông”. Bài toán này thuộc lĩnh vực thị giác máy tính – Computer Vision,
cụ thể hơn là phát hiện vật thể - Object Detection. Trong khuôn khổ đồ án,
em sẽ sử dụng Deep Learning, cụ thể là mạng nơ-ron tích chập và thuật toán
Single Shot Multibox Detector để giải quyết bài toán. Các nội dung này sẽ
được trình bày chi tiết ở các chương sau của đồ án.
Thị giác máy tính là một lĩnh vực nghiên cứu xoay quanh cách làm cho máy
tính có thể nhìn được như con người, “nhìn” ở đây có nghĩa là hiểu được
hình ảnh, video từ đó có thể trả lời các câu hỏi như: có gì trong ảnh? Biển
báo ở đâu trong bức ảnh? Có bao nhiêu biển báo trong bức ảnh và biển báo
đó là biển báo gì?
1.3. Mục đích của đề tài
- Ứng dụng được xây dựng giúp người dùng có một cách tiếp cận nhanh

chóng về luật giao thông, cụ thể là công dụng của biển báo giao thông.
Ứng dụng giúp người dùng dễ dàng tra cứu thông tin biển báo
- Ứng dụng hoạt động như một trợ lý cho người lái xe, có thể nhận diện
biển báo thông qua camera của điện thoại theo thời gian thực và đọc
tên biển báo cho tài xế, giúp tránh trường hợp tài xế bỏ sót, không để
ý hoặc không quan sát được biển báo
- Sau khi thực hiện đề tài này, bản thân em sẽ hiểu rõ hơn về luật giao
thông cũng như có được kiến thức cũng như khả năng xử lý các bài
toán nâng cao hơn với các bài toán về thị giác máy tính, mạng nơ-ron
tích chập,…

CHƯƠNG 2.

MẠNG NƠ-RON NHÂN TẠO VÀ MẠNG NƠ-RON
TÍCH CHẬP

Trí tuệ nhân tạo (AI) ám chỉ đến việc máy móc có khả năng học hỏi và suy
luận giống như con người, Machine Learning là một tập con của AI, nó có khả
năng tự học hỏi dựa vào dữ liệu mà không cần phải được lập trình cụ thể.


Tiếp đó, những năm gần đây khi mà khả năng tính toán của các máy tính
được nâng lên một tầm cao mới và lượng dữ liệu khổng lồ được thu thập bởi
các hãng công nghệ lớn, Machine Learning đã tiến thêm một bước dài và
một lĩnh vực mới được ra đời gọi là Deep Learning. Mạng nơ-ron nhân tạo là
một mô hình lập trình lấy cảm hứng từ mạng nơ-ron thần kinh sinh học, nó là
công cụ rất mạnh mẽ và hiệu quả cho việc xây dựng lên các mô hình Machine
Learning cũng như Deep Learning, đó cũng chính là nội dung được trình bày
trong chương 2. Các nội dung được trình bày trong chương này sẽ bao gồm:
cấu tạo và cách hoạt động của mạng nơ-ron nhân tạo, hàm mất mát, cách để

tối thiểu hàm mất mát hay gọi là huấn luyện mạng nơ-ron. Tiếp theo, sẽ là
phần trình bày về phép tích chập và mạng nơ-ron tích chập trong các bài toán
thị giác máy tính, nhận dạng ảnh,…
2.1.

Mạng nơ-ron nhân tạo

2.1.1.
Giới thiệu về mạng nơ-ron
Định nghĩa: Mạng nơ-ron nhân tạo – Artificial Neural Network(ANN)
[ CITATION Lýt \l 1033 ] là một mô hình xử lý thông tin mô phỏng theo cách
thức xử lý thông tin của các hệ nơ-ron sinh học. Nó được tạo lên từ một số
lượng lớn các nơ-ron kết nối với nhau thông qua các liên kết (trọng số liên
kết) làm việc với nhau như một thể thống nhất để giải quyết một vấn đề cụ
thể nào đó. Một mạng nơ-ron nhân tạo được cấu hình cho một ứng dụng cụ
thể (nhận dạng mẫu, phân loại dữ liệu,…) thông qua một quá trình học từ các
dữ liệu huấn luyện. Về bản chất, quá trình học chính là quá trình điều chỉnh
trọng số liên kết giữa các nơ-ron
Mạng nơ-ron nhân tạo(ANN) gồm 3 loại layer: Input layer, output layer,
hidden layer. ANN hoạt đông theo hướng mô tả lại cách hoạt đ ông của hê
thần kinh với các nơ-ron được kết nối với nhau
Trong ANN, trừ input layer thì tất cả các node thuôc các layer khác đều kết
nối đầy đủ đến các node thuôc layer trước nó. Mỗi node thuôc hidden layer
nhân vào ma trân đầu vào từ layer trước và kết hợp với trọng số để ra được
kết quả.


Hình 2.1. Kiến trúc mạng nơ-ron nhân tạo
2.1.2.


Các thành phần của mạng nơ-ron nhân tạo

2.1.2.1.
Nơ-ron
Còn được gọi là nút(node) hoặc unit(đơn vị xử lý), thực hiện một công việc
rất đơn giản: nhận tín hiệu vào từ layer phía trước hoặc một nguồn bên
ngoài và tính toán chúng, sau đó lan truyền sang layer sau.

(2.0)
Hình 2.2. Một nơ-ron trong mạng
Trong đó:
 xi: các tín hiệu đầu vào
 wji: các trọng số tương ứng với các tín hiệu đầu vào
 θj: độ lệch (bias)
 aj: đầu ra của hàm kết hợp – net input


 g(aj): Hàm kích hoạt.
 zj: đầu ra của nơ-ron
Mỗi đơn vị j có thể có một hoặc nhiều đầu vào: x0, x1, x2, … xn, nhưng chỉ có
một đầu ra zj. Một đầu vào tới một đơn vị có thể là dữ liệu từ bên ngoài
mạng, hoặc đầu ra của một đơn vị khác, hoặc là đầu ra của chính nó
2.1.2.2.
Hàm kết hợp
Mỗi một nơ-ron trong mạng kết hợp các tín hiệu đầu vào với trọng số liên
kết, sinh
ra
một giá
trị
gọi là

net
input.
Hàm
thực
hiện
nhiệm
vụ này gọi là hàm kết hợp[ CITATION Lýt \l 1033 ].
(2.0)

2.1.2.3.
Hàm kích hoạt
Hàm kích hoạt – activation function[CITATION Shr18 \l 1033 ] thường là các
hàm phi tuyến. Nếu không có các hàm kích hoạt phi tuyến, thì mạng nơ-ron
của dù có nhiều lớp thì vẫn sẽ có kết quả đầu ra như một lớp tuyến tính, khi
này thì việc thiết kế các layer trong mạng trở nên vô nghĩa. Các hàm kích hoạt
thường ép giá trị đầu ra vào một khoảng giá trị xác định, do đó thường được
gọi là các hàm bẹp (squashing). Các hàm kích hoạt hay được sử dụng là:

(2.0)


2.1.3.
Quá trình huấn luyện mạng
Một mạng nơ-ron được huấn luyện sao cho với một tập các vector đầu vào
X, mạng có khá năng tạo ra tập các vector đầu ra Y. Đối với việc huấn luyện
mạng nơ-ron, tập X là tập dữ liệu huấn luyện, các phần tử x trong tập X
được gọi là mẫu huấn luyện. Quá trình huấn luyện bản chất là quá trình điều
chỉnh giá trị các trọng số liên kết trong mạng. Trong quá trình này, giá trị các
trọng số được điều chỉnh sao cho với các vector x đầu vào, mô hình sẽ cho ra
các vector y như mong muốn.[CITATION VuH16 \l 1033 ]

Có 4 phương pháp học phổ biến đó là học có giám sát (Supervised learning),
học không giám sát (Unsupervised learning), học bán giám sát (SemiSupervised Learning), học củng cố (Reinforcement Learning)
2.1.3.1.
Học có giám sát (Supervised learning)
Học có giám sát là thuật toán dự đoán đầu ra của một dữ liệu mới dựa trên
các cặp (dữ liệu, nhãn) đã biết từ trước. Học có giám sát là nhóm phổ biến
nhất trong các thuật toán Machine Learning.
Một cách toán học, Học có giám sát là khi chúng ra có một tập hợp biến đầu
vào X={x1,x2,…,xN} và một tập hợp nhãn tương ứng Y={y1,y2,…,yN} ,
trong đó xi,yi là các vector. Các cặp dữ liệu biết trước (xi,yi) ∈ X × Y được
gọi là tập training data (dữ liệu huấn luyện). Từ tập training data này, cần tạo
ra một hàm số ánh xạ mỗi phần tử từ tập X sang một phần tử (xấp xỉ) tương
ứng của tập Y:
yi≈f(xi), ∀i=1,2,…,N
Mục đích là xấp xỉ hàm số f thật tốt để khi có một dữ liệu x mới, có thể tính
được nhãn tương ứng của nó y=f(x).


2.1.3.2.
Học không giám sát (Unsupervised learning)
Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ có
dữ liệu đầu vào. Thuật toán học không giám sát sẽ dựa vào cấu trúc của dữ
liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm hoặc giảm số
chiều của dữ liệu để thuận tiện trong việc lưu trữ và tính toán.
Một cách toán học, Unsupervised learning là khi chỉ có dữ liệu vào X mà
không biết nhãn Y tương ứng.
Những thuật toán loại này được gọi là học không giám sát vì không giống
như học có giám sát, chúng ta không biết câu trả lời chính xác cho các dữ liệu
đầu vào.
2.1.3.3.

Học bán giám sát
Các bài toán khi chúng ta có một lượng lớn dữ liệu X nhưng chỉ một phần
trong chúng được gán nhãn được gọi là học bán giám sát. Những bài toán
thuộc nhóm này nằm giữa hai nhóm được nêu bên trên.
Một ví dụ điển hình của nhóm này là chỉ có một phần ảnh hoặc văn bản được
gán nhãn (ví dụ bức ảnh về người, động vật hoặc các văn bản khoa học, chính
trị) và phần lớn các bức ảnh/văn bản khác chưa được gán nhãn được thu
thập từ internet. Thực tế cho thấy rất nhiều các bài toán Machine Learning
thuộc vào nhóm này vì việc thu thập dữ liệu có nhãn tốn rất nhiều thời gian
và có chi phí cao. Rất nhiều loại dữ liệu thậm chí cần phải có chuyên gia mới
gán nhãn được (ví dụ: ảnh y học). Ngược lại, dữ liệu chưa có nhãn có thể
được thu thập với chi phí thấp từ internet.
2.1.3.4.
Học củng cố
Học củng cố là các bài toán giúp cho một hệ thống tự động xác định hành vi
dựa trên hoàn cảnh để đạt được lợi ích cao nhất. Hiện tại, Học củng cố Reinforcement learning chủ yếu được áp dụng vào Lý Thuyết Trò Chơi (Game
Theory), các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số
cao nhất.
2.2. Mạng nơ-ron tích chập
Có thể thấy được ngành thị giác máy tính(Computer Vision) ngày càng phát


triển và đạt được nhiều thành tựu vượt bậc. Điển hình như chức năng nhận
diện khuôn mặt khi mở khóa trên điện thoại thông minh, chức năng tự lái
trên xe điện Tesla,…
Một trong các ứng dụng quan trọng của mạng nơ-ron tích chập đó là cho
phép các máy tính có khả năng “nhìn” và “phân tích”[ CITATION ntt19 \l
1033 ]. Nôm na là mạng nơ-ron tích chập được sử dụng để nhận dạng hình
ảnh bằng cách đưa nó qua mạng nơ-ron với nhiều layer, mỗi layer là các bộ
lọc tích chập. Sau khi đi qua các layer này, ta có được đặc trưng và dùng nó

nhận dạng ra đối tượng.
Mạng nơ-ron tích chập có kiến trúc khác với mạng nơ-ron thông thường.
Mạng nơ-ron 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.
Đầu tiên, các thành phần trong mạng nơ-ron tích chập được bố trí thành 3
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 kế đến nhưng 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

Hình 2.3. Sự khác biệt về cấu trúc giữa mạng nơ-ron thông thường
và mạng nơ-ron tích chập

2.2.1.
Phép tính tích chập
Tích chập đóng một vai trò quan trọng và xuất hiện từ sớm trong lịch sử xử lý


tín hiệu số. Tích chập là một kỹ thuật quan trọng xử lý ảnh. Nó có mặt trong
hầu hết các thuật toán làm mờ, hay làm rõ các cạnh. Trong nhận dạng ảnh,
convolution layer là một tầng biến đổi ma trận đầu vào để làm rõ và tách ra
các đặc tính của hình ảnh mà vẫn bảo toàn tính tương quan không gian giữa
đầu ra và đầu vào.[ CITATION ntt19 \l 1033 ]
Phép tính tích chập:
Kernel là một ma trận vuông kích thước k×k trong đó k là số lẻ. k có thể bằng
1, 3, 5, 7, 9,… Ví dụ kernel kích thước 3×3

Kí hiệu phép tính convolution (⊗), kí hiệu Y=X⊗W.
Với mỗi phần tử xij trong 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ử xij làm trung tâm (đây là lý do 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 2.4. Biểu diễn phép tính tích chập giữa 1 ma trận và 1 kernel
Ví dụ khi tính tại x22 (ô khoanh đỏ trong hình), ma trận A cùng kích thước với
W, có x22 làm trung tâm có màu nền da cam như trong hình. Sau đó tính
y11=sum(A⊗W)=x11×w11+x12×w12+x13×w13+x21×w21+x22×w22+


x23×w23+x31×w31+x32×w32+x33×w33=4.
Tương tự với các phần tử còn lại trong ma trận.
Đối với phần tử ở viền ngoài như x11. Bình thường khi tính thì sẽ bỏ qua các
phần tử ở viền ngoài, vì không tìm được ma trận A ở trong X.

Hình 2.5. Kết quả của phép tính tích chập trên 1 ma trận

Padding:
Như đã trình bày ở trên, mỗi lần thực hiện phép tính tích chập xong thì kích
thước ma trận Y đều nhỏ hơn X. Tuy nhiên giờ ta muốn ma trận Y thu được
có kích thước bằng ma trận X => Thêm giá trị 0 ở viền ngoài ma trận X.


Hình 2.6. Padding trong phép tính tích chập
Ma trận X khi thêm viền 0 bên ngoài
Phép tính này gọi là convolution 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.



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.

Hình 2.7. stride=1, padding=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+i×k,1+j×k . Ví dụ k = 2.

Hình 2.8. padding=1, stride=2
Đơn giản là bắt đầu từ vị 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à 3×3 đã giảm đi đáng kể so với ma trận X.
Công thức tổng quát cho phép tính convolution của ma trận X kích thước
m×n với kernel kích thước k×k, stride = s, padding = p ra ma trận Y kích
thước:


(2.0)
Stride thường dùng để giảm kích thước của ma trận sau phép tính
convolution.
Ý nghĩa của phép tính tích chập:
Mục đích của phép tính tích chập trên ảnh là làm mở, làm nét ảnh; xác định
các đường;… Mỗi kernel khác nhau thì sẽ phép tính tích chập sẽ có ý nghĩa
khác nhau. Ví dụ:

Hình 2.9. Các kernel khác nhau khi áp dụng lên ảnh[ CITATION Wik \l 1033 ].


×