1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

107 296 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 107
Dung lượng 17,51 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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

Hà Nội - Năm 2020

Trang 2

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

Hà Nội - Năm 2020

Trang 3

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ệ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 4

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 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 5

3.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 6

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 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 7

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

Trang 8

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âu 34

Trang 9

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 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 10

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 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 11

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

Trang 12

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ỗ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 13

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à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 14

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 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 15

CHƯƠ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 16

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, 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 18

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ạ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 19

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á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 20

Nhữ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 21

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ô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 22

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ậ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 23

Ví 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 24

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

Trang 25

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ử 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 27

2.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 28

Hì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 30

Hì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 31

Hì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 32

Fully 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 33

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 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 34

Phá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 35

Cá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 36

CHƯƠ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 37

3.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 38

Ngoà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 39

3.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 40

Hì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.

Ngày đăng: 21/11/2020, 10:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w