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ễ
Trang 1TRƯỜ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
Hà Nội - Năm 2020
Trang 2TRƯỜ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
Hà Nội - Năm 2020
Trang 3Hà 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ệnbiể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
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Trang 4MỤ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 3
CHƯƠNG 2 MẠNG NƠ-RON NHÂN TẠO VÀ MẠNG NƠ-RON TÍCH CHẬP 4
2.1 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 NHẬN DIỆN VẬT THỂ VỚI SINGLE SHOT MULTIBOX DETECTOR 24
3.1 Giới thiệu về SSD - Single Shot Detector 24
3.2 Hướng tiếp cận 25
3.3 Kiến trúc của SSD 26
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
Trang 53.4.3 Chọn kích thước và tỉ lệ cho default box 30
CHƯƠNG 4 SINGLE SHOT MULTIBOX DETECTOR VỚI MẠNG MOBILENET V2 32
4.1 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
Trang 66.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 TRIỂN KHAI VÀ KẾT LUẬN 63
7.1 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
Trang 7DANH 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
Trang 8DANH 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âu 34
Trang 9Hì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 40
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
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
Trang 10Hì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 78
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
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
Trang 11DANH 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
Trang 12CHƯƠ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ỗingà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àmviệ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ộccá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ĩnhvực trong đời sống, giúp máy tính có thể làm được những việc tưởng chừngkhô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ụ chonhững mục đích khác nhau Mạng nơ-ron tích chập(CNN - ConvolutionalNeural Networks) thường dùng cho xử lý phân loại ảnh, Mạng nơ-ron hồiquy(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 ramộ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 giaohưởng hay những thứ tương tự thế Nhận thấy mạng nơ-ron tích chập(CNN)
Trang 13phù 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àyrất nguy hiểm và có thể gây ra những hậu quả nghiêm trọng như là tai nạngiao thông
Do đó, em quyết định lựa chọn đề tài “Nghiên cứu về mạng Nơ ron tíchchậ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ấphì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ênbiể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ựngvă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ậndiệ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 trungvào 1 tình huống giao thông nào đó mà không quan sát được biển báo
Trang 141.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 giaothô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ểnbáo giao thông” Bài toán này thuộc lĩnh vực thị giác máy tính – ComputerVision, 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ậttoá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 chomáy tính có thể nhìn được như con người, “nhìn” ở đây có nghĩa là hiểu đượchì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ênbiể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àitoá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ơ-rontích chập,…
Trang 15CHƯƠNG 2 MẠNG NƠ-RON NHÂN TẠO VÀ MẠNG
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 MachineLearning cũng như Deep Learning, đó cũng chính là nội dung được trình bàytrong 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ánthị 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 theocá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ênkế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ữ
Trang 16liệ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, outputlayer, 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 đềukết nối đầy đủ đến các node thuộc layer trước nó Mỗi node thuộc hiddenlayer 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ôngviệ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ênngoài và tính toán chúng, sau đó lan truyền sang layer sau
Trang 17(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
Trang 182.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ạngnơ-roncủa dù
lớp thìvẫn sẽ
đầ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ạngtrở 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ảnggiá trị xác định, do đó thường được gọi là các hàm bẹp (squashing) Các hàmkí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 đầuvà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ấnluyệ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
Trang 19chỉnh giá trị các trọng số liên kết trong mạng Trong quá trình này, giá trị cáctrọng số được điều chỉnh sao cho với các vector x đầu vào, mô hình sẽ cho racá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 (Supervisedlearning), học không giám sát (Unsupervised learning), học bán giám sát(Semi-Supervised 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ựatrê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ợpbiế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:
y i ≈f(x i ), ∀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ệuvào X mà không biết nhãn Y tương ứng
Trang 20Những thuật toán loại này được gọi là học không giám sát vì khônggiố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ộtphần trong chúng được gán nhãn được gọi là học bán giám sát Những bàitoá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 thuthập từ internet Thực tế cho thấy rất nhiều các bài toán Machine Learningthuộ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ớigá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.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àngphát triển và đạt được nhiều thành tựu vượt bậc Điển hình như chức năngnhậ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,…
Trang 21Mộ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ôngthường Mạng nơ-ron bình thường chuyển đổi đầu vào thông qua hàng loạtcá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ả đạidiệ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àntoà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ốicù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
Trang 222.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ậndạ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 giangiữ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ử x ij làm trung tâm (đây là lý do vì saokí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
Trang 23Ví dụ khi tính tại x 22 (ô khoanh đỏ trong hình), ma trận A cùng kích
thước với W, có x 22 làm trung tâm có màu nền da cam như trong hình Sau đótính
y 11 =sum(A⊗W)=x 11 ×w 11 +x 12 ×w 12 +x 13 ×w 13 +x 21 ×w 21 +x 22 ×w 22 +
x 23 ×w 23 +x 31 ×w 31 +x 32 ×w 32 +x 33 ×w 33 =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ư x 11 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
Trang 24Hì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
Trang 25Như ở 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ử x 1+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:
Trang 26(2.0)Stride thường dùng để giảm kích thước của ma trận sau phép tínhconvolution.
Ý 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 ]
Trang 272.2.2 Chi tiết về mạng nơ-ron tích chập
Hình 2.10 Minh họa phép tích chập trên ảnh màu RGB
Định nghĩa kernel có cùng độ sâu với biểu diễn ảnh, rồi sau đó thựchiện di chuyển khối kernel tương tự như khi thực hiện trên ảnh xám
Trang 28Hình 2.11 Phép tính tích chập trên 3 channel R,G,B
Tensor X, W 3 chiều được viết dưới dạng 3 ma trận.
Khi biểu diễn ma trận ta cần 2 chỉ số hàng và cột: i và j, thì khi biểu diễn ở dạng tensor 3 chiều cần thêm chỉ số độ sâu k Nên chỉ số mỗi phần tử trong tensor là xijk.
Trang 29được nhiều thuộc tính của ảnh Vì mỗi kernel cho ra output là 1 matrix nên k
kernel sẽ cho ra k output matrix Ta kết hợp k output matrix này lại thành 1tensor 3 chiều có chiều sâu k
Hình 2.12 Kết quả của ảnh số sau khi đi qua convolutional layer
Output của convolutional layer đầu tiên sẽ thành input củaconvolutional layer tiếp theo Output của các lớp tích chập được gọi là
“feature maps”
Convolutional layer tổng quát
Giả sử input của 1 convolutional layer tổng quát là tensor kích thước làH*W*D
Kernel có kích thước F×F×D (kernel luôn có depth bằng depth của input và F là số lẻ), stride: S, padding: P.
Convolutional layer áp dụng K kernel.
=> Output của layer là tensor 3 chiều có kích thước:
(2.0)
Trang 30Hình 2.13 Kích thước của ảnh số sau khi đi qua Convolutional layer
Lưu ý:
Output của convolutional layer sẽ qua hàm activation function trước
khi trở thành input của convolutional layer tiếp theo
Tổng số parameter của layer: Mỗi kernel có kích thước F×F×D và có 1
hệ số bias, nên tổng parameter của 1 kernel là F×F×D + 1 Mà convolutional layer áp dụng K kernel
=> Tổng số parameter trong layer này là: K×(F×F×D + 1).
Pooling Layer
Pooling layer thường được dùng giữa các convolutional layer, để giảmkích thước dữ liệu nhưng vẫn giữ được các thuộc tính quan trọng Kích thước
dữ liệu giảm giúp giảm việc tính toán trong model
Gọi pooling size kích thước K×K Input của pooling layer có kích thước H×W×D, ta tách ra làm D ma trận kích thước H×W Với mỗi ma trận, trên vùng kích thước K×K trên ma trận ta tìm maximum hoặc average của dữ
liệu rồi viết vào ma trận kết quả Quy tắc về stride và padding áp dụng nhưphép tính tích chập trên ảnh
Trang 31Hình 2.14 Max pooling layer với size=(3,3), stride=1, padding=0
Có 2 loại pooling layer phổ biến là: max pooling và average pooling
Hình 2.15 Ví dụ về pooling layer
Trong một số model, người ta dùng convolutional layer với stride > 1
để giảm kích thước dữ liệu thay cho pooling layer
Trang 32Fully connected layer
Sau khi ảnh được truyền qua nhiều convolutional layer và pooling layerthì model đã học được tương đối các đặc điểm của ảnh (ví dụ mắt, mũi, khungmặt,…) thì tensor của output của layer cuối cùng, kích thước H×W×D, sẽđược chuyển về 1 vector kích thước (H×W×D)
Hình 2.16 Fully Connected LayerSau đó ta dùng các fully connected layer để kết hợp các đặc điểm củaảnh để ra được output của model
Hình 2.17 Biểu diễn trực quan mô hình mạng nơ-ron tích chập
Trang 332.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 Các bài toán phổ biến sẽ được trình bày bao gồm: Phân loại ảnh, định
vị vật thể, phát hiện đối tượng, phân đoạn ảnh[CITATION Phạ201 \l 1033 ]
Phân loại ảnh (Image Classification): Dự đoán nhãn của một đối tượng
trong một hình ảnh
Input: Một hình ảnh với một đối tượng, chẳng hạn như một bứcảnh
Output: Lớp đối tượng (ví dụ: con chó, con mèo,…)
Định vị vật thể (Object Localization): Bài toán phân lớp trả lời câu hỏi
trong ảnh chứa gì? Thì bài toán định vị vật thể sẽ xác định thêm vị trí của đốitượng đang quan tâm trong ảnh thông qua một hình chữ nhật bao quanh đốitượng (bounding box) Như vậy “định vị vật thể” sẽ trả lời câu hỏi đối tượngquan tâm ở đâu trong bức hình, ví dụ biển báo “cấm đỗ xe” ở đâu trong bứchình?
Hình 2.18 Phân loại ảnh và định vị vật thể
Trang 34Phát hiện đối tượng (Object Detection): Xác định vị trí hiện diện của
các đối tượng trong bounding box và nhãn của các đối tượng nằm trong mộthình ảnh Khác với bài “định vị vật thể” xác định vị trí của một đối tượngtrong hình, bài toán phát hiện đối tượng sẽ xác định vị trí tất cả các đối tượng
Phân đoạn ảnh (Image Segmentation): Phân đoạn ảnh không những
chỉ ra vị trí mà còn chỉ rõ đối tượng bằng cách vẽ ra đường biên bao quanhđối tượng Cụ thể hơn, phân đoạn ảnh là quá trình xác định – gán nhãn chotừng điểm ảnh trong ảnh sao cho các pixel có cùng nhãn thì thuộc về mộtnhóm
Hình 2.19 Các bài toán phổ biến trong thị giác máy tính
Trang 35Các thuật toán object detection
Các thuật toán Region Proposal: R-CNN, Fast R-CNN vàFaster R-CNN[ CITATION Kai15 \l 1033 ] Nhìn chung, cácthuật toán đề xuất vùng (Regional Proposal) này đều phảithực hiện 2 bước rồi mới đưa ra được kết quả
o Bước 1: Lấy ra các boundary box Chính là việc Lấy racác vùng có thể chứa đối tượng trong ảnh
o Bước 2: Lấy ra các class Đưa các vùng ảnh đó vàoCNN để thực hiện phân lớp
SSD(Single Shot Multibox Detector): Thực hiện dự đoánboundary box và class đồng thời cùng nhau Nội dung này sẽđược trình bày ở chương 4
Trang 36CHƯƠNG 3 NHẬN DIỆN VẬT THỂ VỚI SINGLE SHOT
MULTIBOX DETECTOR
Thuật toán nhận diện vật thể - Single Shot Multibox Detector(SSD),Bản thân tên của thuật toán - Single Shot MultiBox Detector cũng nói lênđược rằng thuật toán sử dụng nhiều khung hình với tỷ lệ khác nhau nhằmnhận diện vùng vật thể và phân loại vật thể, giảm thiểu được bước tạo các
“vùng đề xuất” so với các thuật toán “đề xuất vùng”(Region Proposal) nêntăng tốc độ xử lý lên nhiều lần mà độ chính xác xử lý vẫn được đảm bảo Cácnội dung sẽ trình bày dưới đây bao gồm: Hướng tiếp cận của bài toán, kiếntrúc mạng SSD dựa trên mạng VGG16 và cách huấn luyện mạng
3.1 Giới thiệu về SSD - Single Shot Detector
Đặc điểm chính của SSD[CITATION Wei16 \l 1033 ][CITATIONTrọ19 \l 1033 ] Tại mỗi vị trí trên các feature maps, SSD đặt các defaultbounding boxes với kích thước, tí lệ khác nhau Trong quá trình xử lí, SSD sẽđánh giá và tìm đối tượng trên các bounding box này nhằm tìm ra box phùhợp nhất với đối tượng cần tìm kiếm Thêm vào đó, bằng việc tìm kiếm trêncác feature maps khác nhau, SSD có thể tìm kiếm các đối tượng với kíchthước khác nhau mà không cần thay đổi kích thước của các bounding box.Thực nghiệm cho thấy, SSD đạt 74.3% mAP trên tập test của VOC2007, đạt
59 FPS khi sử dụng Nvidia Titan X với kích thước ảnh đầu vào 512 x 512,nhanh hơn Faster R-CNN[ CITATION Kai15 \l 1033 ]
Trang 373.2 Hướng tiếp cận
Hình 3.20 Hướng tiếp cận của SSD
Ý tưởng chính của SSD[CITATION Wei16 \l 1033 ] đến từ việc sửdụng các bounding box, bằng việc khởi tạo sẵn các box tại mỗi vị trí trênfeature map, SSD sẽ tính toán và đánh giá thông tin tại mỗi vị trí xem vị trí đó
có vật thể hay không, nếu có thì là vật thể nào, và dựa trên kết quả của các vịtrí gần nhau, SSD sẽ tính toán được một box phù hợp nhất bao trọn vật thể
Hình 3.21 Kết quả nhận diện vật thể với SSD
Trang 38Ngoài ra, bằng việc tính toán bounding box trên các feature maps khácnhau, tại mỗi tầng feature map, một box sẽ ôm trọn một phần hình ảnh với cáckích thước khác nhau Như trên ví dụ trên, con mèo và con chó có thể đượcphát hiện ở 2 tầng feature maps khác nhau, với 2 kích thước và tỉ lệ khácnhau Thay vì sử dụng 1 box và thay đổi kích thước box cho phù hợp với vậtthể, thì SSD sử dụng nhiều box trên nhiều tầng, từ đó tổng hợp ra vị trí và
kích thước box kết quả Bằng việc loại trừ các đề xuất vùng - region proposal,
SSD có thể đạt được tốc tộ xử lí cao hơn Faster R-CNN
3.3 Kiến trúc của SSD
Hình 3.22 Kiến trúc mạng SSD dựa trên VGG16[CITATION Wei16 \l 1033 ]
Trên hình là kiến trúc SSD dựa trên backbone là mạng VGG16, có thểthấy các lớp fully-connected đã được bỏ đi, thay vào đó là các lớp phụ trợđược dùng để dự đoán đối tượng Theo như hình vẽ, các lớp dùng để dự đoánđối tượng là: Conv4_3, Conv7, Conv8_2, Conv9_2, Conv10_2, Conv11_2
3.3.1 Convolutional predictors for detection
SSD sử dụng VGG16(có thể là các mạng khác như MobileNetV2,…)
để trích xuất các đặc trưng ảnh - features, tại các tầng feature maps được sử
dụng để phát hiện vật thể, SSD sử dụng các filter có kích thước 3×3×p trên
các layer dùng để dự đoán các box chứa vật thể và nhãn của vật thể tương ứng
Trang 393.3.2 Multi-scale feature maps for detection
Bằng việc sử dụng các filter, kích thước của các feature maps sẽ giảmdần theo độ sâu của mạng, hỗ trợ cho việc phát hiện vật thể ở các kích thước
và tỉ lệ khác nhau
3.3.3 Default boxes
Trên một feature map kích cỡ m×n, tại mỗi vị trí cell hay tại mỗi pixel,
khởi tạo các default bounding box, các box này có vai trò giống nhưcác anchor của Faster R-CNN[CITATION Kai15 \l 1033 ] Tuy nhiên, vì vịtrí mỗi cell cố định nên các box này cũng sẽ được cố định Tại mỗi cell, giả sửkhởi tạo k box, SSD tính toán phân loại c class và đồng thời tính toán xem
hình dáng của box như thế nào như toạ độ (c x ,c y ), dài và rộng (w,h) Vậy tổng
Trong quá trình training, ta tiến hành tìm các default box trên các
feature maps phù hợp với groundtruth bằng cách tìm các box có jaccard
overlap cao Công thức tính jaccard overlap dựa trên tỉ lệ giữa diện tích
vùng trùng nhau giữa 2 tập và diện tích hợp lại của
cả 2 tập
(3.0)
Trang 40Hình 3.23 Intersect over UnionCác box được lọc có chỉ số jaccard overlap lớn hơn mức threshold: 0.5.