Sau một thời gian học tập và nghiên cứu thị trường trong lĩnh vực xử lý ảnh và mạng nơ ron học sâu nhân tạo, chúng em quyết định chọn đề tài cho công trình nghiên cứu đồ án lần này là ng
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
-
-ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI
NGHIÊN CỨU, THIẾT KẾ CHẾ TẠO XE TỰ HÀNH SỬ
DỤNG MẠNG HỌC SÂU NHÂN TẠO
Giáo viên hướng dẫn : TS TRẦN NGỌC TIẾN
Trang 5MỤC LỤC 0
DANH MỤC HÌNH ẢNH 0
DANH MỤC BẢNG BIỂU 0
LỜI NÓI ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO TRONG GIAO THÔNG 2
1.1 Lịch sử nghiên cứu 2
1.1.1 Tình hình nghiên cứu trên thế giới 2
1.1.2 Tình hình nghiên cứu trong nước 3
1.1.3 Sơ lược về hệ thống xe tự hành sử dụng mạng học sâu nhân tạo 5
1.1.3.1 Thuật toán phân cụm 6
1.2 Nội dung nghiên cứu 11
1.3 Mục đích của đề tài 11
1.4 Phương pháp nghiên cứu 12
1.5 Đối tượng, phạm vi và giới hạn của đề tài 13
1.5.1 Đối tượng nghiên cứu 13
1.5.2 Phạm vi nghiên cứu: 13
1.5.3 Giới hạn đề tài: 13
CHƯƠNG 2 TỔNG QUAN VỀ NGHIÊN CỨU, THIẾT CHẾ TẠO XE TỰ HÀNH SỬ DỤNG MẠNG HỌC SÂU NHÂN TẠO 14
2.1 Thuật toán phát hiện làn đường 14
2.1.1 Khái niệm và thiết lập 14
2.1.1.1 Khái niệm về phát hiện làn đường 14
2.1.2 Tìm làn đường 15
2.1.3 Làn đường cong vênh 15
2.1.4 Tìm làn đường cong 16
2.1.5 Tối ưu hóa đường cong 19
2.2 Thuật toán CNN 21
2.2.1 Giới thiệu CNN 21
2.2.2 Các lớp cơ bản trong CNN 23
2.2.2.1 Convolution layer 23
2.2.2.2 Lớp phi tuyến tính (ReLU layer) 26
2.2.2.3 Pooding Layer 27
2.2.2.4 Full connected layer 28
2.2.2.5 Cross-entropy loss 29
Trang 62.3 Thuật toán YOLO 29
2.3.1 Giới thiệu về YOLO 29
2.3.2 Thuật toán YOLO 31
2.3.2.1 Phát hiện hợp nhất 33
2.3.2.2 Anchor box 38
2.3.2.3 Dự đoán hộp giới hạn 39
2.3.2.4 IOU 43
2.3.2.5 Non-Max Suppression(NMS) 45
2.3.2.6 Hàm loss 46
2.3.2.7 Classifycation loss 46
2.3.2.8 Localization loss 47
2.3.2.9 Confidence loss 48
2.3.2.10 Total loss 48
2.3.3 Ứng dụng của YOLO 50
2.4 Tính toán khoảng cách từ vật đến camera 52
2.4.1 Khai thác thư viện OpenCV để hỗ trợ quá trình xử lý ảnh 52
2.4.2 Tính khoảng cách từ Camera đến một đối tượng với OpenCV 54
2.5 Truyền tín hiệu 57
2.5.1 Arduino Nano giao tiếp với máy tính bằng giao tiếp serial 57
2.5.2 Sử dụng Module NRF24L01 - Thu phát sóng vô tuyến 2.4GHz với Arduino 57 CHƯƠNG 3 TÍNH TOÁN, THIẾT KẾ HỆ THỐNG HOÀN CHỈNH 60
3.1 Tính toán, thiết kế xe tự hành 60
3.1.1 Thiết kế phần khung và vỏ cho xe tự hành 60
3.2 Nguyên lý hoạt động và tính toán, thiết kế hệ thống điều khiển 61
3.2.1 Nguyên lý hoạt động của hệ thống 61
3.2.2 Thiết kế hệ thống điều khiển xe tự hành 62
3.2.3 Phân tích chân của hệ thống điều khiển và truyền nhận tín hiệu 63
3.2.1 Thiết lập sơ đồ tín hiệu giao tiếp với xe tự hành 66
3.2.2 Thiết lập chế độ làm việc cho các linh kiện 67
3.2.2.1 Arduino Nano 67
3.2.2.2 Camera 68
3.2.2.3 Module thu phát sóng NRF24L01 69
3.2.2.4 Pin sac litium 18650 3,7v 69
Trang 73.2.2.6 Bánh xe 72
3.2.2.7 Module điều khiển động cơ L298 73
3.3 Lập trình điều khiển hệ thống 74
3.3.1 Đào tạo YOLO trên Colab 74
3.3.2 Lập trình trên môi trường PyCharm 76
3.3.3 Code lập trình cho toàn hệ thống 77
CHƯƠNG 4 CHẾ TẠO, THỰC NGHIỆM VÀ ĐÁNH GIÁ HOẠT ĐỘNG CỦA XE TỰ HÀNH 78
4.1 Chế tạo xe tự hành 78
4.2 Các kết quả thực nghiệm 79
4.3 Đánh giá và thảo luận 85
KẾT LUẬN, KIẾN NGHỊ 89
1 Kết luận 89
2 Kiến nghị 90
TÀI LIỆU THAM KHẢO 91
PHỤ LỤC 0
Trang 8Hình 1.1 Xe tự lái Google có thể đọc tín hiệu xin đường của xe đạp 2
Hình 1.2 Người dùng hoàn toàn có thể thư giãn khi VF31 vận hành dưới tốc độ 60km/h 4
Hình 1.3 Tháng 10/2017, chiếc xe ô tô thương mại đầu tiên tích hợp công nghệ xe tự hành do FPT nghiên cứu và phát triển đã thử nghiệm thành công trong khuôn viên của công ty 4
Hình 1.4 Qúa trình làm việc của hệ thống 5
Hình 1.5 Thuật toán phân cụm 6
Hình 1.6 Phân chia các mô hình học máy nông 8
Hình 1.7 Cấu trúc ANN đơn giản 8
Hình 1.8 Phân ngành của các mô hình học máy sâu 10
Hình 1.9 Cấu trúc mạng CNN 10
Hình 1.10 Cấu trúc RNN đơn giản 11
Hình 1.11 Sơ đồ máy học Extreme learning machine 11
Hình 2.1 Khái niệm về mô đun 14
Hình 2.2 Cung cấp phạm vi giá trị cần sử dụng để tìm làn đường 15
Hình 2.3 A imgThres B imgWarpPoints C imgWarp 16
Hình 2.4 Giá trị nhị phân của làn đường cong 17
Hình 2.5 Ba trường hợp mà phương pháp này nhận diện 17
Hình 2.6 Một số làn đặc biệt 18
Hình 2.7 Điều chỉnh đường tâm của làn đặc biệt 18
Hình 2.8 imgWarp imgHist 19
Hình 2.9 Giá trị trung bình của phần dưới cùng 20
Hình 2.10 Hiển thị trên máy tính 21
Hình 2.11 Tất cả các bước để xác định làn đường 21
Hình 2.12 Ảnh phân tích dữ liệu của chim 22
Hình 2.13 Mạng nơ ron học sâu phân tích xe ô tô 22
Hình 2.14 Lớp cơ bản trongCNN 23
Hình 2.15 Convolution layer 23
Hình 2.16Ma trận X khi thêm viên 0 bên ngoài 24
Hình 2.17 stride=1, padding=1 25
Hình 2.18 stride=2, padding=1 25
Hình 2.19 Bản đồ kích hoạt của lớp tích chập cuối cùng 26
Hình 2.20 Đồ thị mô tả hàm ReLU 26
Trang 9Hình 2.22 Max pooling layer với size=(3,3), stride=1, padding=0 27
Hình 2.23 Sau khi Pooding layer (2*2) 28
Hình 2.24 Ví dụ về pooding layer 28
Hình 2.25 Pooled feature Map chuyển sang Flattering 29
Hình 2.26 Ví dụ về phát hiện vật thể của YOLO 30
Hình 2.27 Tổng quan về thuật toán YOLO 31
Hình 2.28 Hệ thống phát hiện YOLO 32
Hình 2.29 Mô hình 35
Hình 2.30 Kiến trúc 36
Hình 2.31 Ví dụ về Anchor box 39
Hình 2.32 Trường hợp 2 anchor box bị trùng tâm 39
Hình 2.33 Công thức ước lượng hộp giới hạn từ anchor box [2 0 ] 40
Hình 2.34 Dự đoán hộp giới hạn 41
Hình 2.35 Ví dụ về lưới 3×3 42
Hình 2.36 Ô thứ nhất trong ví dụ lưới 3×3 42
Hình 2.37 Là một ô khác trong ví dụ về lưới 3×3 43
Hình 2.38 Công thức tính IOU 44
Hình 2.39 Ví dụ về IOU 44
Hình 2.40 Tính chỉ số IOU 44
Hình 2.41 Ví dụ trước và sau khi sử dụng NMS 45
Hình 2.42 Hiệu suất của từng phiên bản YOLO 49
Hình 2.43 Yolo phát hiện phương tiện 50
Hình 2.44 Yolo phát hiện động vật 51
Hình 2.45 Yolo phát hiện con người 51
Hình 2.46 Yolo phát hiện các đối tượng 51
Hình 2.47 Các module chính trong thư viện OpenCV 53
Hình 2.48 Không gian màu HSV 54
Hình 2.49 Khoảng cách từ camera đến một đối tượng 55
Hình 2.50 Khai báo biến số 56
Hình 2.51 Tính toán khoảng cách 56
Hình 2.52 Arduino nano 57
Hình 2.53 Module NRF24L01 58
Hình 2.54 Sơ đồ chân module NRF24L01 58
Trang 10Hình 3.2 Lưu đồ thuật toán của hệ thống 62
Hình 3.3 Module truyền dữ liệu của arduino và NRF24L01+ 62
Hình 3.4 Module nhận dữ liệu của motor, L298 và NRF24L01+ 63
Hình 3.5 Arduino Nano 63
Hình 3.6 Module NRF24L01 64
Hình 3.7 Module L298 65
Hình 3.8 Sơ đồ tín hiệu giao tiếp với mobie robot 66
Hình 3.9 Arduino Nano 68
Hình 3.10 Module NRF24L01 69
Hình 3.11 Pin sạc litium 18650 3,7v 70
Hình 3.12 Mạch sạc bảo vệ mạch 11.1V Li-ion BMS 7A 70
Hình 3.13 Động cơ DC Servo giảm tốc XD-25GA370 71
Hình 3.14 Bánh xe lớn 72
Hình 3.15 Bánh xe dẫn hướng 73
Hình 3.16.Module điều khiển động cơ L298 73
Hình 3.17 Hình ảnh cần gán nhãn 75
Hình 3.18 Hình ảnh được gán nhãn thủ công bằng tay 75
Hình 4.1 Bản vẽ thiết kế 78
Hình 4.2 Xe tự hành chế tạo hoàn chỉnh 78
Hình 4.3 Xe nhận diện làn đường 79
Hình 4.4 Yolo V3 tiny nhận diện đèn tín hiệu xanh, độ chính xác 0.9 79
Hình 4.5 Kết quả trả về khi gặp tín hiệu đèn xanh trên Terminal của Pycharm 80
Hình 4.6 Hình ảnh thu được qua camera khi gặp tín hiệu đèn xanh 80
Hình 4.7 Yolo V3 tiny nhận diện đèn tín hiệu đỏ, độ chính xác 0.9 80
Hình 4.8 Kết quả trả về khi gặp tín hiệu đèn đỏ trên Terminal của Pycharm 80
Hình 4.9 Hình ảnh thu được qua camera khi gặp tín hiệu đèn xanh 81
Hình 4.10 Yolo V3 tiny nhận diện đèn tín hiệu xanh và có người đi đường, độ chính xác 0.8 81
Hình 4.11 Kết quả trả về khi gặp tín hiệu đèn xanh và có người đi đường trên Terminal của Pycharm 81
Hình 4.12 Hình ảnh thu được qua camera khi gặp tín hiệu đèn xanh 82
Hình 4.13 Yolo V3 tiny nhận diện đèn tín hiệu đỏ và có người đi đường, độ chính xác 0.9 82
Hình 4.14 Kết quả trả về khi gặp tín hiệu đèn xanh trên Terminal của Pycharm 82
Trang 11Hình 4.16 Yolo V3 tiny nhận diện biển STOP, độ chính xác 0.9 83
Hình 4.17 Kết quả trả về khi gặp biển STOP trên Terminal của Pycharm 83
Hình 4.18 Hình ảnh thu được qua camera khi gặp biển STOP 84
Hình 4.19 Yolo V3 tiny nhận diện biển báo tốc độ 20, độ chính xác 0.9 84
Hình 4.20 Kết quả trả về khi gặp biển báo tốc độ 20 trên Terminal của Pycharm 84
Hình 4.21 Hình ảnh thu được qua camera khi gặp tín hiệu đèn xanh 84
Hình 4.22 Yolo V3 tiny nhận diện biển báo tốc độ 60, độ chính xác 0.9 85
Hình 4.23 Kết quả trả về khi gặp tín hiệu đèn xanh trên Terminal của Pycharm 85
Hình 4.24 Ảnh thu được qua camera khi gặp tín hiệu đèn xanh 85
Hình 4.25 Dữ liệu thể hiện độ tin cậy của hệ thống nhận diện với tốc độ 0.5m/s 86
Hình 4.26 Dữ liệu thể hiện độ tin cậy của hệ thống nhận diện với tốc độ 0.2m/s 86
Hình 4.27 Biểu đồ xung điều khiển hai động cơ dựa theo độ lệch tâm 87
Hình 4.28 Biểu đồ độ lệch tâm theo điều kiện ánh sáng 87
Trang 12Bảng 2.1 Thông số module NRF24L01 58
Trang 13LỜI NÓI ĐẦU
Hiện nay, cuộc cách mạng công nghiệp 4.0 đang diễn ra hết sức mạnh mẽ với
sự bùng nổ của khoa học công nghệ Trí tuệ nhân tạo (tiếng anh là Artificial Intelligence (AI)) còn được gọi là trí thông minh nhân tạo, là một lĩnh vực của khoa học máy tính, tập trung vào việc tạo ra những cỗ máy thông minh, có thể hoạt động và phản ứng như con người Vì những ý nghĩa to lớn đó nên việc được học tập trong ngành cơ điện tử là một điều tự hào đối với mỗi sinh viên chúng em, đặc biệt hơn khi được học tại trường Đại học Công nghiệp Hà Nội – một trong những ngôi trường kỹ thuật có chất lượng giảng dạy tốt nhất trong lĩnh vực cơ khí
Trong những năm qua, công nghệ xe tự lái trong nước đã có những tín hiệu phát triển tích cực và ngày càng phù hợp với ngành giao thông thế hệ mới Việt Nam đang từng bước gia nhập thị trường xe tự lái để đón đầu cuộc cách mạng 4.0 và chinh phục
“cơn lốc” phát triển công nghệ ô tô thế giới Hiện đã có rất nhiều tập đoàn sản xuất xe hơi và công nghệ lớn trên thế giới đã tham gia vào cuộc chạy đua phát triển xe hơi công nghệ tự lái thông minh mà không cần đến bàn tay can thiệp của con người, trong
đó có những tên tuổi nổi bật như Tesla, Daimler, Google,…
Đồ án tốt nghiệp là một phần hết sức quan trọng và không thể thiếu đối với mỗi sinh viên chúng em Đồ án này giúp chúng em đúc kết và tích lũy thêm những kiến thức cần thiết trước khi ra trường Sau một thời gian học tập và nghiên cứu thị trường trong lĩnh vực xử lý ảnh và mạng nơ ron học sâu nhân tạo, chúng em quyết định chọn
đề tài cho công trình nghiên cứu đồ án lần này là nghiên cứu, thiết kế chế tạo xe tự hành sử dụng mạng học sâu nhân tạo Chúng em nghĩ rằng đây là một đề tài hay và ý nghĩa, hi vọng qua đề tài này chúng em sẽ học được nhiều kinh nghiệm hơn trong phát triển xe robot tự hành nhằm giảm thiểu tai nạn giao thông và bảo vệ môi trường, tiến tới tự động hóa sâu vào trong đời sống con người
Qua đây, chúng em cũng xin được gửi lời cảm ơn sâu sắc đến thầy Trần Ngọc Tiến và các thầy cô trong khoa, bạn bè đã giúp đỡ và nhiệt tình hướng dẫn đề tài này cho chúng em
Hà Nội, ngày 06 tháng 05 năm 2022
Trang 14CHƯƠNG 1 TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO TRONG
GIAO THÔNG
1.1 Lịch sử nghiên cứu
1.1.1 Tình hình nghiên cứu trên thế giới
Trong vài năm trở lại đây, xe tự hành đang phát triển một cách nhanh chóng Hàng loạt nhà sản xuất ô tô và công ty công nghệ lớn đều đã tham gia nghiên cứu tính năng tự hành, với hàng chục tỷ USD tiền đầu tư Theo định nghĩa truyền thống, xe tự hành là loại ô tô có khả năng hoạt động mà không cần sự điều khiển hay can thiệp của con người Có khả năng phát hiện chướng ngại vật, phân biệt các vật thể khác nhau cũng như xác định tuyến đường tốt nhất cho mỗi hành trình
Chiếc xe được coi xe tự hành đã ra đời bởi Francis Houdina người đứng sau khái niệm đã sử dụng thuật ngữ “a radio-controlled car” (một chiếc xe điều khiển bằng radio) Chiếc xe điều khiển vô tuyến RCA Tuy nhiên nó đã không được thành công như mong đợi Toyota đã giới thiệu Prius hybrid vào năm 2003 Chiếc xe trở nên phổ biến cho bãi đỗ xe tự động nơi tất cả các cảm biến và camera hoạt động tốt Xu hướng sau đó được tiếp nối bởi BMW cũng như cách này hệ thống đỗ xe tự động Hiện nay, Google là một trong những tập đoàn đi đầu trong lĩnh vực xe hơi tự lái, với mong muốn đem tới cuộc sống thuận tiện và dễ dàng hơn cho con người trong tương lai Tuy nhiên, bên cạnh những thành tựu đã đạt được, rất nhiều người cũng đặt ra câu hỏi về
sự an toàn của những chiếc xe thế hệ mới này
Hình 1.1 Xe tự lái Google có thể đọc tín hiệu xin đường của xe đạp
Trong năm 2005, BMW (Bayerische Motoren Werke AG) đã cho ra đời những phiên bản tự hành chạy trên đường thử Năm 2008, GM (General Motors Corporation) công bố khởi đầu những nghiên cứu xe không người lái cho tới năm 2015 và lăn bánh
Trang 15trên đường năm 2018 Hai năm sau đó, phiên bản tự hành Audi TTS đã đạt tới tốc độ gần với xe đua trên đường lái tới đỉnh núi Pikes Pick, Hoa Kỳ
Không nằm ngoài xu hướng đó, VW hiện nay đang thử nghiệm hệ thống điều khiển tự động tạm thời (TAP) cho phép xe tự lái với tốc độ lên tới 128 km/giờ trên đường cao tốc Nhà máy ô tô tự động đầu tiên của Trung Quốc kết hợp với Đại học Công nghệ Quốc phòng Quốc gia đã thử nghiệm mẫu xe không người lái Hongqi HQ3 trên quãng đường 280 km, với vận tốc 88 km/giờ trong điều kiện đường cao tốc tấp nập
Những tháng đầu năm 2012, Google đã thử nghiệm phiên bản tự hành của mẫu
xe Toyota Prius trên những con đường bang California Mới đây, Cadillac ra mắt hệ thống bán tự động có tên gọi “Super Cruise” với hứa hẹn sẽ sớm đưa vào sản xuất
1.1.2 Tình hình nghiên cứu trong nước
Kỷ nguyên của xe tự hành đã mở ra với cuộc chạy đua không ngừng nghỉ của các nhà sản xuất xe hàng đầu trên thế giới Tại Việt Nam, VinFast đang là đơn vị tiên phong trong sản xuất xe tự hành với dòng xe điện SUV thông minh là VF31 và VF33 Những dòng xe này ngay từ khi công bố đã nhận được hiệu ứng tích cực từ truyền thông quốc tế cũng như cộng đồng đam mê xe ô tô trong nước
Xe tự hành VF31 và VF33 đều sử dụng công nghệ trí tuệ nhân tạo với hệ thống
tự hành cấp độ 2 và 3 Xe điện tự hành VinFast sở hữu tới 30 tính năng thông minh được chia làm 7 nhóm đó là:
➢ Hệ thống thông minh hỗ trợ lái xe an toàn
➢ Hệ thống hỗ trợ kiểm soát làn thích ứng
➢ Hệ thống chủ động kiểm soát hành trình
➢ Hệ thống thông báo va chạm đa điểm
➢ Hệ thống kiểm soát va chạm toàn diện
➢ Hệ thống tự động đỗ xe thông minh
➢ Hệ thống kiểm soát kỹ thuật lái xe
Trang 16Hình 1.2 Người dùng hoàn toàn có thể thư giãn khi VF31 vận hành dưới tốc độ
Hình 1.3 Tháng 10/2017, chiếc xe ô tô thương mại đầu tiên tích hợp công nghệ xe tự hành do FPT nghiên cứu và phát triển đã thử nghiệm thành công trong khuôn viên của
công ty
Trang 17Đáng chú ý, từ giữa năm ngoái, những ứng dụng công nghệ mới nhất về xử lý hình ảnh, trí tuệ nhân tạo, học sâu đã được FPT đưa vào thử nghiệm trên xe ô tô mô hình Tháng 10/2017, chiếc xe ô tô thương mại đầu tiên tích hợp công nghệ xe tự hành
do FPT nghiên cứu và phát triển đã thử nghiệm thành công trong khuôn viên của công
ty Kết quả thử nghiệm cho thấy, tốc độ trung bình của xe là 20km/h và chạy đường trường có thể 40km/h
Một số công ty trong nước cũng đang đầu tư rất mạnh vào công nghệ xe ô tô tự hành và đã đạt được những thành tựu nhất định Đây cũng là bước thúc đẩy sự phát triển của thị trường ô tô Việt Nam, nâng tầm giá trị và sự cạnh tranh của xe ô tô tự hành Việt Nam trên thị trường thế giới
1.1.3 Sơ lược về hệ thống xe tự hành sử dụng mạng học sâu nhân tạo
Trong báo cáo này, chúng em trình bày xây dựng hệ thống xe tự hành gắn camera thực hiện điều hướng tự động trong môi trường có vạch kẻ đường và biển báo giao thông dựa trên công nghệ học sâu Hệ thống này là được cấu thành dựa trên hai
kỹ thuật: Tăng cường dữ liệu, xử lý ảnh và mạng nơ-ron tích hợp (CNN)
Hình 1.4 Qúa trình làm việc của hệ thống Phát hiện, theo dõi và phân loại các đối tượng trong làn đường là một nhiệm vụ rất quan trọng Giải pháp nhằm cải thiện tại những nơi giao thông có đông người qua lại Các phương pháp và thuật toán khác nhau của thị giác máy tính được sử dụng để phân tích thông tin trực quan trong hình ảnh và video [2]
Trang 181.1.3.1 Thuật toán phân cụm
Phân cụm là kỹ thuật rất quan trọng trong khai phá dữ liệu, nó thuộc lớp các phương pháp học không có giám sát trong học máy Có rất nhiều định nghĩa khác nhau
về kỹ thuật này, nhưng về bản chất ta có thể hiểu phân cụm dữ liệu là quá trình nhóm các đối tượng tương tự nhau trong tập dữ liệu vào các cụm sao cho các đối tượng cùng cụm là tương đồng Phân cụm là một kỹ thuật phổ biến để phân tích số liệu thông tin, các hệ trợ giúp quyết định, các thuật toán nhận dạng mẫu và phân loại mẫu Mục đích của phân cụm là tìm ra bản chất bên trong các nhóm của dữ liệu Các thuật toán phân cụm đều sinh ra các cụm, tuy nhiên không có tiêu chí nào là được xem là tốt nhất, điều này phụ thuộc vào mục đích của phân cụm [14]
Hình 1.5 Thuật toán phân cụm
Phân cụm dữ liệu truyền thống bao gồm hai mô hình lớn: phân cụm có giám sát
và phân cụm không có giám sát Phân cụm bán giám sát là sự kết hợp giữa phân cụm giám sát và phân cụm không có giám sát, trong đó sử dụng một số thông tin bổ trợ cho trước trong quá trình phân cụm [14]
Ngoài cách phân chia các phương pháp phân cụm như trên, các phương pháp phân cụm còn được chia thành hai loại: phân cụm rõ và phân cụm mờ Trong phân cụm rõ, với mỗi điểm dữ liệu thuộc vào chính xác một cụm Trong phân cụm mờ, các điểm dữ liệu có thể thuộc vào nhiều hơn một cụm tương ứng giá trị (độ thuộc) đi kèm
Phân cụm mờ là một trong những kỹ thuật phân cụm được nhiều nhà khoa học quan tâm nghiên cứu và được ứng dụng trong nhiều lĩnh vực nhận dạng, xử lý ảnh, xử
Trang 19lý thông tin Các thuật toán phân cụm mờ rất đa dạng nhờ FCM (Fuzzy C Means), εFCM (insensitive Fuzzy C-means), FPCM (Fuzzy Possibilistic Cmeans), [14]
Phân cụm bán giám sát mờ là một mô hình tương đối mới, đâylà một mở rộng của phân cụm mờ bằng cách sử dụng các thông tin biết trước đểgiám sát và hướng dẫn quá trình phân cụm, từ đó làm tăng chất lượng của cụm [14]
Các thông tin biết trước hay còn gọi là các thông tin bổ trợ nhằm mục đích hướng dẫn, giám sát và điều khiển quá trình phân cụm Các thông tin bổ trợ có thể được xây dựng dựa trên các ràng buộc Must-link và Cannot-link, hoặc các nhãn đi cùng các mẫu hay độ thuộc được xác định trước Với phương pháp gán nhãn đi cùng mẫu đòi hỏi một phần mẫu nhất định trong không gian mẫu có các nhãn đi kèm, các mẫu còn lại không có nhãn Các thuật toán phân cụm bán giám sát mờ phải kể đến nhờ eSFCM, SSSFC (Semi-Supervised Standard Fuzzy Clustering), mạng nơron tự tổ chức GSOM, GFMM, [14]
Pedrycz và Waletzky đã chỉ r rằng thường đối với các ứng dụng trong thế giới thực đòi hỏi nhiều cách thức trung gian của việc tìm kiếm cấu trúc trong bộ dữ liệu, hiệu quả của nó có thể được tăng cường đáng kể bằng cách sử dụng các thông tin biết trước thậm chí một tỷ lệ phần trăm nhỏ của các mẫu được dán nhãn cũng cải thiện đáng kể các kết quả của phân cụm [14]
Việc lựa chọn phương pháp phân cụm là bước quan trọng trong việc giải quyết vấn đề phân cụm Lựa chọn mô hình phân cụm phụ thuộc rất nhiều vào thuộc tính dữ liệu đầu vào và mục đích phân cụm, hoặc đặt mức độ ưu tiên giữa chất lượng của cụm hay thời gian thực hiện [14]
Phân cụm dữ liệu đã được áp dụng trong các lĩnh vực khác nhau như phân đoạn ảnh, nhận dạng đối tượng, ký tự và các chuyên ngành cổ điển như tâm lý học, kinh doanh Một số ứng dụng cơ bản của phân cụm dữ liệu bao gồm: Giao thông, Thương mại, Sinh học, Phân tích dữ liệu không gian, Quy hoạch đô thị, Khai phá Web, Y tế
Dưới đây là hai mô hình chính hay được sử dụng gồm: Shallow machine learning và Deep machine learnig
Học máy nông (Shallow machine learning):
Trang 20Các thuật toán học máy nông (SML) bao gồm các thuật toán ML truyền thống
và đơn giản Các thuật toán này thường bao gồm một vài, nhiều lần, một lớp ẩn Các thuật toán SML không thể trích xuất các tính năng từ đầu vào và các tính năng cần được xác định trước Đào tạo mô hình chỉ có thể được thực hiện sau khi trích xuất đối tượng địa lý
Hình 1.6 Phân chia các mô hình học máy nông
Mạng thần kinh nhân tạo (Artifical neural network): Mạng nơ-ron nhân tạo (ANN) được phát triển, mô phỏng chức năng của não người để giải quyết các vấn đề phi tuyến tính khác nhau Nó là một mô hình toán học hoặc tính toán bậc nhất bao gồm một tập hợp các bộ xử lý hoặc tế bào thần kinh được kết nối với nhau Do dễ thực hiện
và khả năng dự báo hiệu quả, ANN đã trở nên phổ biến trong lĩnh vực nghiên cứu dự báo tắc nghẽn giao thông
Hình 1.7 Cấu trúc ANN đơn giản
Mô hình hồi quy (Regression model): Hồi quy là một thuật toán ML được giám
sát thống kê Nó mô hình hóa giá trị đầu ra được đánh số thực dự đoán dựa trên biến số đầu vào độc lập Các mô hình hồi quy có thể được chia nhỏ hơn theo số lượng biến đầu vào Mô hình hồi quy đơn giản nhất là hồi quy tuyến tính với một đặc điểm đầu vào Khi số đối tượng tăng lên, mô hình hồi quy bội số được tạo ra
Trang 21Cây quyết định (Decision tree): Cây quyết định là một mô hình dự đoán kết quả
đầu ra dựa trên một số biến đầu vào Có hai loại cây: cây phân loại và cây hồi quy Khi hai cây này hợp nhất, một cây mới có tên là cây phân loại và cây hồi quy (CART) sẽ tạo ra Cây quyết định sử dụng các tính năng được trích xuất từ toàn bộ tập dữ liệu Rừng ngẫu nhiên là một thuật toán phân loại ML có giám sát là giá trị trung bình của nhiều kết quả cây quyết định Các tính năng được sử dụng ngẫu nhiên trong khi phát triển cây quyết định Nó sử dụng một lượng lớn các cây quyết định CART Các cây quyết định bỏ phiếu cho lớp dự đoán trong một mô hình rừng ngẫu nhiên
Máy vector hỗ trợ (Support vector machine): Máy vectơ hỗ trợ (SVM) là một
phương pháp học máy thống kê Ý tưởng chính của mô hình này là ánh xạ dữ liệu phi tuyến tới một không gian tuyến tính có chiều cao hơn, nơi dữ liệu có thể được phân loại tuyến tính bằng siêu phẳng Do đó, nó có thể rất hữu ích trong việc xác định mô hình luồng giao thông để dự đoán tắc nghẽn giao thông
Học máy sâu (Deep machine learning):
Trong vài thập kỷ qua, Deep Learning đã được chứng minh là một công cụ rất mạnh vì khả năng xử lý một lượng lớn dữ liệu Sở thích sử dụng các lớp ẩn đã vượt qua các kỹ thuật truyền thống, đặc biệt là trong nhận dạng mẫu Một trong những mạng thần kinh sâu phổ biến nhất là mạng thần kinh kết hợp
Các thuật toán DML bao gồm một số lớp ẩn để xử lý các vấn đề phi tuyến Ưu điểm đáng kể nhất của các thuật toán này là chúng có thể trích xuất các tính năng từ dữ liệu đầu vào mà không cần biết trước Không giống như SML, trích xuất tính năng và đào tạo mô hình được thực hiện cùng nhau trong các thuật toán này DML có thể chuyển đổi dữ liệu lưu lượng lớn liên tục và phức tạp với thời gian thu thập giới hạn thành các mẫu hoặc vectơ đặc trưng Từ vài năm gần đây, DML đã trở nên phổ biến trong các nghiên cứu dự đoán tắc nghẽn giao thông
Trang 22Hình 1.8 Phân ngành của các mô hình học máy sâu
Convolutional neural network [6]: Mạng nơron tích chập (CNN) là một thuật
toán DML thường được áp dụng trong kỹ thuật lưu lượng Do hiệu suất tuyệt vời của CNN trong xử lý hình ảnh, đồng thời áp dụng trong dự đoán lưu lượng, dữ liệu lưu lượng được chuyển đổi thành ma trận 2-D để xử lý Có năm phần chính của cấu trúc CNN trong giao thông vận tải: lớp đầu vào, lớp tích chập, lớp tổng hợp, lớp kết nối đầy đủ và lớp đầu ra Cả lớp chập và lớp gộp đều trích xuất các tính năng quan trọng
Độ sâu của hai lớp này khác nhau trong các nghiên cứu khác nhau Phần lớn các nghiên cứu đã chuyển đổi dữ liệu lưu lượng truy cập thành hình ảnh của ma trận 2-D
Hình 1.9 Cấu trúc mạng CNN
Mạng thần kinh tái diễn (Recurrent Neural Network): Mạng nơ-ron tái diễn
(RNN) được sử dụng rộng rãi trong việc xử lý dữ liệu lưu lượng tuần tự bằng cách xem xét ảnh hưởng của hàng xóm liên quan Bộ nhớ ngắn hạn dài (LSTM) là một nhánh của RNN Trong lớp ẩn của LSTM, có một khối bộ nhớ bao gồm bốn lớp NN,
có chức năng lưu trữ và điều chỉnh luồng thông tin Trong những năm gần đây, với các
hệ thống thu thập dữ liệu khác nhau với khoảng thời gian kéo dài, LSTM đã trở nên phổ biến
Máy học cực đoan (Extreme learning machine): Trong những năm gần đây, một
thuật toán học tập mới được gọi là máy học cực đoan (ELM) được đề xuất để đào tạo mạng nơ-ron chuyển tiếp cấp một lớp (SLFN) Trong ELM, trọng số đầu vào và độ lệch ẩn được chỉ định ngẫu nhiên thay vì được điều chỉnh toàn bộ Do đó, việc đào tạo ELM diễn ra nhanh chóng
Trang 23Hình 1.10 Cấu trúc RNN đơn giản
Hình 1.11 Sơ đồ máy học Extreme learning machine
1.2 Nội dung nghiên cứu
Nghiên cứu, thiết kế chế tạo xe tự hành sử dụng mạng học sâu nhân tạo
Nghiên cứu về đào tạo nhận dạng trên CNN và ứng dụng xử lý ảnh vào phân tích làn đường cho xe tự hành
Xe tự hành có gắn camera thực hiện nhiệm vụ điều hướng tự động trong môi trường có vạch kẻ đường và phát hiện các loại biển báo giao thông
Đánh giá sai số sự nhận diện của xe so với thực tế để có hướng đi và cải thiện
hệ thống ưu việt hơn
Nâng cao năng lực, khả năng tìm tòi sáng tạo và kinh nghiệm của nhóm đồ án tốt nghiệp về thiết kế, lựa chọn thiết bị công nghệ
1.3 Mục đích của đề tài
Nghiên cứu cơ sở để thiết kế, chế tạo xe tự hành sử dụng mạng học sâu nhân tạo Đề tài đưa ra sẽ phát triển theo tính ứng dụng thực tế, dựa trên việc nghiên cứu và tìm tòi cơ sở lý thuyết Đề tài cũng đã vận dụng các kiến thức khoa học về tâm lý học
Trang 24để thu hút, tạo đam mê trong học tập của sinh viên, phát huy tính chủ động trong học tập và nghiên cứu của sinh viên
Xe tự hành có khả năng phát hiện và tránh chướng ngại vật, phân biệt các vật thể như làn đường, biển báo, con người
Theo số liệu thực tế cho thấy 90 – 95% các vụ đâm xe ô tô xảy ra là do sự bất cẩn và mất tập trung của con người Vì vậy xe tự hành giúp giảm thiểu tai nạn do các
vụ tai nạn xe hàng năm và bảo vệ môi trường
Giúp tiết kiệm hàng trăm triệu đến hàng tỉ USD chi phí sửa chữa ô tô
Xe tự hành giúp những người không có khả năng lái xe, người tàn tật hay người già di chuyển dễ dàng, chủ động và thuận tiện hơn
1.4 Phương pháp nghiên cứu
Phương pháp nguyên cứu lý thuyết
- Tham khảo một số bài báo cáo của một số học giả nước ngoài tại một số hội nghị khoa học quốc tế
- Dựa trên sự hướng dẫn của thầy cô, các học phần đã học (kỹ thuật điện
tử kỹ thuật vi xử lý, cơ sở hệ thống tự động, cảm biến và hệ thống …) và tham khảo trên internet
- Sử dụng một số phần mềm lập trình, mô phỏng để hỗ trợ như: Pycharm, OpenCV, NX 12, Matlab, MPLAB IDE, Arduino IDE, Proteus…
- Tính toán để xe tự hành thực hiện nhiệm vụ điều hướng tự động trong môi trường có vạch kẻ đường và biển báo giao thông
Phương pháp nguyên cứu thực nghiệm:
- Thực hiện hoàn thành từng giai đoạn của hệ thống
- Tính toán, thiết kế và thử nghiệm hệ thống
- Thiết kế mô hình thực tế và mô phỏng hệ thống trên phần mềm Pycharm
và trên thực tế
Trang 251.5 Đối tượng, phạm vi và giới hạn của đề tài
1.5.1 Đối tượng nghiên cứu
Việc sử dụng mạng nơ ron sâu học nhân tạo vào xe tự hành có ý nghĩa rất lớn trong việc giải quyết việc tắc nghẽn giao thông và bảo vệ môi trường trong tương lai,
mở một hướng đi mới trong công cuộc khai thác các ứng dụng công nghệ tiên tiến để phục vụ con người Nhằm mục đích tối ưu hiệu suất khi sử dụng xe tự hành ở Việt Nam hiệu quả và mở ra một tương lai để phát triển loại mô hình này, đây chính là động lực để nhóm em tìm hiểu và có thêm nhiều hiểu biết hơn và cách thiết kế, xây dựng mô hình
Mô hình sẽ đạt được các yêu cầu sau:
- Thiết kế hệ thống ứng dụng mạng nơ ron sâu học nhân tạo và xử lý ảnh
- Đáp ứng các điều kiện cần để hệ thống chạy trơn tru
- Tiến hành thực nghiệm trên video trên mạng và thực tế
1.5.2 Phạm vi nghiên cứu:
- Dựa trên cơ sở lý thuyết để thiết lập hệ thống
- Nghiên cứu, thiết kế chế tạo xe tự hành sử dụng mạng học sâu nhân tạo quét vật thể tĩnh (đèn tín hiệu giao thông, biển báo tốc độ…) và vật thể động (con người, phương tiện xe cộ…) trên làn đường, tiến hành chạy thẳng, rẽ trái, rẽ phải làn đường
- Tổng quan về hệ thống và tìm hiểu thêm các mô hình đã được nghiên cứu trên thế giới
1.5.3 Giới hạn đề tài:
- Hệ thống có độ chính xác, nhanh nhạy và tối ưu nhất có thể
- Hệ thống có thể chạy thành công ở các tuyến đường trên hệ thống mô phỏng trực tiếp
- Ứng dụng xử lý ảnh vào phân tích làn đường cho xe tự hành
Trang 26CHƯƠNG 2 TỔNG QUAN VỀ NGHIÊN CỨU, THIẾT CHẾ TẠO XE TỰ HÀNH SỬ DỤNG MẠNG HỌC SÂU NHÂN
TẠO
2.1 Thuật toán phát hiện làn đường
2.1.1 Khái niệm và thiết lập
Trong loạt bài này, nghiên cứu học cách tạo xe tự lái sử dụng máy tính có thể đi theo một con đường bằng cách sử dụng thuật toán phát hiện làn đường đơn giản Trước tiên, sử dụng phát hiện làn đường và sau đó tìm thấy đường biên cong của làn đường Sau đó, sẽ gửi các lệnh đến động cơ dựa trên đường cong này
2.1.1.1 Khái niệm về phát hiện làn đường
Ý tưởng là tìm ra làn đường bằng cách sử dụng phát hiện màu hoặc dò cạnh và sau đó lấy đường cong bằng cách sử dụng tổng các pixel theo hướng y (biểu đồ) Chia nhiệm vụ thành 5 bước khác nhau Điều này bao gồm ngưỡng, cong vênh, biểu đồ, trung bình và hiển thị Và tạo một mô-đun để phát hiện làn đường Bằng cách này, không cần phải đặt tất cả hàm trong chương trình chính thay vào đó chúng tôi có thể
có các tệp python riêng biệt mà mỗi tệp thực hiện các tác vụ riêng biệt của chúng Vì vậy, đối với dự án này, chúng ta sẽ có một chương trình chính phát hiện làn đường và gửi tín hiệu xử lý tới arduino kết nối với máy tính
Hình 2.1 Khái niệm về mô đun Nhập thư viện:
Chương trình sẽ chạy trên Pycharm Bằng cách này, quá trình viết mã dễ dàng hơn nhiều
Trang 27Nhập thư viện opencv cùng với numpy Utlis.py là tệp chương trình con chứa các hàm chức năng của chúng tôi để giữ cho chương trình chính gọn gàng
2.1.2 Tìm làn đường
Đầu tiên, tạo một hàm getLaneCurve và sau đó áp dụng giá trị ngưỡng cho hình ảnh
BƯỚC 1 – Xác định giá trị ngưỡng
Bây giờ, ý tưởng ở đây là tìm ra làn đường bằng cách sử dụng Color hoặc Edge Detection Trong trường hợp này, sử dụng giấy trắng A4 làm làn đường, do đó, chỉ cần
sử dụng tính năng phát hiện màu để tìm làn đường Sau đó, viết hàm Thresholding trong tệp Utlis.py
Ở đây, chuyển đổi hình ảnh sang không gian màu HSV và sau đó áp dụng một dải màu cần tìm Màu này có thể được tìm thấy bằng cách sử dụng tập lệnh bộ chọn màu
Hình 2.2 Cung cấp phạm vi giá trị cần sử dụng để tìm làn đường
2.1.3 Làn đường cong vênh
Mục đích của chương trình là biết khúc cua trên con đường ngay phía trước xe chứ không phải ở phía trước quá xa Vì vậy, đơn giản là cắt hình ảnh ra, nhưng điều này là chưa đủ vì muốn nhìn con đường như thể chúng ta đang quan sát từ trên xuống Đây được gọi là chế độ xem birdeye và nó rất quan trọng vì nó sẽ cho phép chúng ta
dễ dàng tìm thấy đường cong Để làm cong hình ảnh, chúng ta cần xác định các điểm ban đầu Những điểm này chúng tôi có thể xác định bằng tay Vì vậy, để làm cho quá trình này dễ dàng hơn, việc sử dụng các thanh theo dõi để thử nghiệm với các giá trị khác nhau Ý tưởng là để có được một hình chữ nhật khi đường thẳng
Trang 28Tạo hai chức năng cho thanh theo dõi Một cái khởi tạo thanh theo dõi và cái thứ hai nhận giá trị hiện tại từ chúng
Bây giờ chúng ta có thể gọi hàm khởi tạo ở đầu mã và thanh valTrackbar trong vòng lặp while ngay trước khi làm cong hình ảnh Vì cả hai hàm đều được viết trong tệp utlis nên ta sẽ viết ‘utlis.’ trước khi gọi chúng
Bây giờ viết hàm cong vênh cho phép chúng ta có được chế độ xem birdeye bằng cách sử dụng bốn điểm mà vừa điều chỉnh
Ở đây sẽ nhận được ma trận chuyển đổi dựa trên các điểm đầu vào và sau đó làm cong hình ảnh bằng cách sử dụng chức năng ‘warpPrespective’ Vì cần áp dụng
ma trận nghịch đảo và thêm chức năng này vào hàm của mình Để nghịch đảo, chỉ cần
ma trận nghịch đảo mà có thể tìm thấy bằng cách chuyển pts1 và pts2
Bây giờ gọi hàm để lấy phối cảnh dọc
Hình ảnh dưới đây cho thấy rõ các điểm để làm cho quá trình điều chỉnh dễ dàng hơn Vì vậy, để hiển thị các điểm của chúng ta sẽ sử dụng hàm "circle"
Hình 2.3 A imgThres B imgWarpPoints C imgWarp 2.1.4 Tìm làn đường cong
Bây giờ đến phần quan trọng nhất, tìm đường cong trên con đường Để làm điều này, chúng ta sử dụng tổng các pixel Giả sử rằng hình ảnh bị cong vênh bây giờ
là các giá trị nhị phân, tức là nó có pixel đen hoặc trắng, tính tổng các giá trị pixel theo hướng y
Trang 29Hình 2.4 Giá trị nhị phân của làn đường cong Hình trên cho thấy tất cả các pixel màu trắng với giá trị 255 và tất cả màu đen với 0 Bây giờ nếu chúng ta tính tổng các pixel trong cột đầu tiên, nó sẽ là 255 + 255 +
255 + 255 + 255 = 1275 Áp dụng phương pháp này cho từng cột Trong hình ảnh gốc như trên, có chiều rộng là 480 pixel Do đó có 480 giá trị Sau khi tổng kết, có thể xem
có bao nhiêu giá trị nằm trên một ngưỡng nhất định, giả sử là 1000 ở mỗi bên của đường màu đỏ trung tâm Trong ví dụ trên chúng ta có 8 cột bên trái và 3 cột bên phải Điều này cho chúng ta biết rằng đường cong hướng về bên trái
Hình 2.5 Ba trường hợp mà phương pháp này nhận diện Các hình ảnh trên cho thấy 3 trường hợp mà các phương pháp này sẽ hoạt động
Có thể thấy rõ rằng khi đường cong ở bên phải số lượng pixel ở bên phải nhiều hơn bên trái và ngược lại Và với đường thẳng, số lượng pixel xấp xỉ nhau ở cả hai bên
Trang 30Nhưng sẽ có một số trường hợp không áp dụng được Vấn đề được biểu diễn ở dưới
Hình 2.6 Một số làn đặc biệt
Ở đây, mặc dù không có đường cong vì có nhiều pixel hơn ở một bên, thuật toán sẽ xuất ra đường cong trái hoặc phải Vì vậy, để giải quyết vấn đề này thì sẽ phải điều chỉnh đường tâm
Hình 2.7 Điều chỉnh đường tâm của làn đặc biệt Chỉ cần tìm tâm của cơ sở sẽ cung cấp đường trung tâm và sau đó so sánh các pixel ở cả hai bên
Việc này có thể được tính toán bằng một phương pháp Bằng cách tổng hợp các pixel này, sau đó thu được một biểu đồ Do đó gọi hàm này là ‘getHistogram’ Giả sử đang thực hiện bước thứ hai trong đó phải tính tổng tất cả các pixel và sau đó sẽ quay lại bước một để tìm tâm của cơ sở
Đầu tiên khai báo hàm sẽ lấy image làm đối số đầu vào Sau đó tính tổng tất cả các pixel theo hướng y
Ở đây histValues là 480 giá trị chứa tổng của mỗi cột
Trang 31Bây giờ một số pixel trong hình ảnh có thể chỉ là nhiễu Vì vậy, việc sử dụng chúng trong tính toán là không hay Do đó, đặt giá trị ngưỡng sẽ là giá trị tối thiểu cần thiết cho bất kỳ cột nào để đủ điều kiện là một phần của đường dẫn và không bị nhiễu Đặt một giá trị được mã hóa cứng dựa trên dữ liệu trực tiếp Vì vậy, tìm giá trị tổng lớn nhất và nhân tỷ lệ phần trăm do người dùng xác định với nó để tạo ra giá trị ngưỡng
Bây giờ chỉ cần thêm tất cả số lượng pixel ở mỗi bên và tìm hướng trái phải hoặc hướng thẳng Nếu đường cong là đúng, phải xác định rằng biết bao nhiêu là đúng
Để có được giá trị của độ cong, việc tìm các chỉ số của tất cả các cột có giá trị lớn hơn ngưỡng và sau đó sẽ tính trung bình các chỉ số của mình Điều này có nghĩa là nếu chỉ
số pixel bắt đầu từ 30 và kết thúc ở 300, trung bình sẽ là (300-30) / 2 +30 = 165
Giá trị cơ sở bây giờ là điểm cơ sở trung bình của hình ảnh thu thập được Vẽ thêm điểm cơ sở này để hình dung rõ hơn
Hình 2.8 imgWarp imgHist
Ở đây có thể thấy biểu đồ của hình ảnh bị cong vênh ở bên phải Chấm màu vàng là giá trị trung bình nghiêng về phía bên tay trái Giá trị trung bình nhận được là
227
2.1.5 Tối ưu hóa đường cong
Bây giờ trừ giá trị này ra khỏi tâm để lấy giá trị đường cong Nếu giả sử tâm là
240 thì giá trị đường cong là 227-240 = -13 Ở đây dấu trừ cho biết đường cong hướng
về phía bên trái và giá trị 13 cho biết cường độ của đường cong Như đã thảo luận trước đó, phương pháp này không chính xác vì phần giữa có thể thay đổi
Trang 32Vì vậy, để tìm chính giữa có thể chỉ cần sử dụng chức năng vừa tạo, nhưng lần này thay vì hình ảnh hoàn chỉnh, áp dụng kỹ thuật biểu đồ chỉ trên 1/4 phần dưới cùng của hình ảnh Điều này là do quan tâm đến mức trung bình của cơ sở, vì vậy không muốn tính trung bình các pixel trên 1/4 hình ảnh Để đạt được điều này, thêm một đối
số đầu vào của vùng và dựa trên giá trị đầu vào của nó, và lấy trung bình toàn bộ hình ảnh hay một phần của nó
Vì vậy, nếu vùng là 1, toàn bộ hình ảnh sẽ là trung bình và nếu vùng là 4 thì ở phần thứ 4 ở dưới cùng sẽ được tính trung bình Hình ảnh dưới đây cho thấy giá trị trung bình của phần dưới cùng
Hình 2.9 Giá trị trung bình của phần dưới cùng Bây giờ giá trị trung bình chúng ta nhận được là 278 Điều này có nghĩa là trung tâm thực tế của hình ảnh là 278 thay vì 240 Bây giờ có thể trừ giá trị trung bình
mà đã nhận được trước đó từ điểm giữa này vậy 227 278 = 51 Trước đó giá trị là
-13 và bây giờ nhận được -51 Nhìn vào hình ảnh cong vênh, có thể biết rằng cường độ của đường cong là cao, do đó điều này khẳng định rằng phương pháp thứ hai cho kết quả tốt hơn
BƯỚC 6 - Tính trung bình
Khi có giá trị đường cong, thêm nó vào một danh sách để có thể tính trung bình giá trị này Tính trung bình sẽ cho phép chuyển động trơn tru và sẽ tránh được bất kỳ chuyển động mạnh nào
BƯỚC 7 - Hiển thị
Trang 33Bây giờ chúng ta có thể thêm các tùy chọn để hiển thị kết quả cuối cùng Chúng tôi sẽ thêm một đối số đầu vào vào hàm ‘getLaneCurve’ chính của chúng tôi để chúng tôi có thể linh hoạt bật và tắt nó
Hình 2.10 Hiển thị trên máy tính
Trang 34Hình 2.12 Ảnh phân tích dữ liệu của chim
Hệ thống AI, được biết đến với tên gọi AlexNet (được đặt theo tên người tạo chính của nó, Alex Krizhevsky), đã giành chiến thắng trong cuộc thi thị giác máy tính ImageNet năm 2012 với độ chính xác 85% đáng kinh ngạc Người về nhì chỉ đạt 74 phần trăm khiêm tốn trong bài kiểm tra
CNN lần đầu tiên được phát triển và sử dụng vào khoảng những năm 1980 Điều mà CNN có thể làm được nhiều nhất vào thời điểm đó là nhận dạng các chữ số viết tay Nó chủ yếu được sử dụng trong các lĩnh vực bưu chính để đọc mã zip, mã pin, v.v Điều quan trọng cần nhớ đối với bất kỳ mô hình học sâu nào là nó đòi hỏi một lượng lớn dữ liệu để đào tạo và cũng đòi hỏi nhiều tài nguyên máy tính Đây là một nhược điểm lớn đối với CNN vào thời kỳ đó và do đó CNN chỉ giới hạn trong lĩnh vực bưu chính và nó không thể bước vào thế giới máy học
CNN là tên viết tắt của từ Convolutional Neural Network (hay còn gọi là CNNs_mang nơ ron tích chập) Đây là một trong những mô hình Deep Learning vô cùng tiên tiến CNN sẽ cho phép bạn xây dựng các hệ thống thông minh với độ chính xác vô cùng cao Tên "mạng nơ-ron tích chập" chỉ ra rằng mạng sử dụng một phép toán học được gọi là tích chập CNN được dùng trong trong nhiều bài toán như nhân dạng ảnh, phân tích video
Hình 2.13 Mạng nơ ron học sâu phân tích xe ô tô
Trang 35Trong học sâu, mạng ron tích tụ (CNN /ConvNet) là một lớp của mạng ron sâu, được áp dụng phổ biến nhất để phân tích hình ảnh trực quan Bây giờ khi chúng ta nghĩ về mạng nơ-ron, chúng ta nghĩ đến phép nhân ma trận nhưng đó không phải là trường hợp của ConvNet Nó sử dụng một kỹ thuật đặc biệt gọi là Convolution Bây giờ trong toán học, tích chập là một phép toán trên hai hàm tạo ra một hàm thứ ba biểu thị cách hình dạng của một hàm được sửa đổi bởi hàm kia
nơ-2.2.2 Các lớp cơ bản trong CNN
Trong mô hình CNN thường có 4 lớp cơ bản: lớp tích chập (Convolutional Layer), lớp phi tuyến tính, lớp gộp (Pooding Layer), lớp kết nối đầy đủ (Full Connected Layer) Các layer liên kết được với nhau thông qua cơ chế convolution, Layer tiếp theo là kết quả convolution từ layer trước đó
Hình 2.14 Lớp cơ bản trongCNN
2.2.2.1 Convolution layer
Tích chập là lớp đầu tiên để trích xuất các đặc trưng từ hình ảnh đầu vào Xem xét 1 ma trận X kích thước 5*5 có giá trị pixel là 0 và 1 Ma trận bộ lọc W kích thước 3*3 như hình bên dưới
Hình 2.15 Convolution layer
Trang 36Vớ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 của ma trận bộ lọc W có phần tử xij làm trung tâm gọi là ma trận A Rồi dịch chuyển bộ lọc lần lượt theo chiều từ trái sang phải, từ trên xuống dưới, sau đó tính tổng các phần tử của phép nhân ma trận ta được ma trận kết quả Y
Sau khi thao tác tích chập, kích thước hình ảnh ban đầu nhỏ lại, như ta thấy trên
ví dụ là 5*5 xuống còn 3*3 do khi tính thì sẽ bỏ qua các phần tử ở viền ngoài vì không thể tìm được ma trận A trong X
Nếu ma trận X m*n nhân chập với ma trận bộc lọc W k*k thì kích thước của
ma trận sẽ là (m-k+1) * (n-k+1)
Padding:
Như trên với mỗi lần tính toán thì kích thước ma trận Y đều nhỏ hơn X Tuy nhiên ta muốn ma trận Y thu được có kích thước bằng ma trận X bằng cách thêm giá trị 0 ở viền ngoài ma trận X
Hình 2.16Ma trận X khi thêm viên 0 bên ngoài Như vậy với padding = 1, ma trận kết quả Y sẽ bằng với ma trận X ban đầu
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
Trang 37Hình 2.17 stride=1, padding=1 Tuy nhiên với k=2, sẽ bắt đầu từ vị trí x11 sau đó nhảy 2 bước theo chiều ngang
và dọc cho đến hết ma trận X
Hình 2.18 stride=2, padding=1 Kích thước của ma trận Y lại là 3*3 đã giảm đi so với ma trận X
Với ma trận X kích thước m*n và ma trận bộ lọc kích thước k*k, stride = s, padding = p, ta được ma trận Y kích thước [{(m + 2 - + 1) /} + 1] ∗ [{(+ 2 - + 1) /} + 1]
Mạng nơ-ron chuyển đổi bao gồm nhiều lớp nơ-ron nhân tạo Các nơron nhân tạo, một sự bắt chước thô sơ của các đối tác sinh học của chúng, là các hàm toán học tính toán tổng trọng số của nhiều đầu vào và đầu ra một giá trị kích hoạt Khi bạn nhập hình ảnh vào ConvNet, mỗi lớp tạo ra một số hàm kích hoạt được chuyển cho lớp tiếp theo
Trang 38Lớp đầu tiên thường trích xuất các tính năng cơ bản như các cạnh ngang hoặc chéo Đầu ra này được chuyển sang lớp tiếp theo để phát hiện các đặc điểm phức tạp hơn như các góc hoặc các cạnh tổ hợp Khi chúng tôi tiến sâu hơn vào mạng, nó có thể xác định các đặc điểm phức tạp hơn như vật thể, khuôn mặt…
Dựa trên bản đồ kích hoạt của lớp tích chập cuối cùng, lớp phân loại xuất ra một tập hợp các điểm tin cậy (giá trị từ 0 đến 1) xác định khả năng hình ảnh thuộc về một "lớp" Ví dụ: nếu bạn có ConvNet phát hiện mèo, chó và ngựa, đầu ra của lớp cuối cùng là khả năng hình ảnh đầu vào chứa bất kỳ động vật nào trong số đó
Hình 2.19 Bản đồ kích hoạt của lớp tích chập cuối cùng
2.2.2.2 Lớp phi tuyến tính (ReLU layer)
ReLU viết tắt của Rectified Linear Uni, đảm bảo tính phi tuyến của mô hình huấn luyện sau khi thực hiện một loạt các phép tính toán tuyến tính qua các lớp tích chập Với đầu ra là: ƒ (x) = argmax(0, x)
Hình 2.20 Đồ thị mô tả hàm ReLU
Trang 39Hình 2.21 Hàm ReLU công thức 𝜃(𝑥) = max(0, 𝑥) Hàm ReLU sẽ trả về giá trị dương hoặc 0 nếu đó là giá trị âm, giúp tăng tỉ lệ nhận diện
2.2.2.3 Pooding Layer
Pooling layer thường được dùng giữa các convolutional layer, để giảm kích thước dữ liệu nhưng vẫn giữ được các thuộc tính quan trọng Việc giảm kích thước dữ liệu giúp giảm các phép 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 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ả
Hình 2.22 Max pooling layer với size=(3,3), stride=1, padding=0
Nhưng hầu hết khi dùng pooling layer thì sẽ dùng size = (2,2), stride = 2, padding = 0 Khi đó output width và height của dữ liệu giảm đi một nửa
Trang 40Hình 2.23 Sau khi Pooding layer (2*2)
Có 2 loại pooling layer phổ biến là: max pooling và average pooling
Hình 2.24 Ví dụ về pooding layer
2.2.2.4 Full connected layer
Sau khi ảnh được truyền qua nhiều convolutional layer và pooling layer thì model đã học được tương đối các đặc điểm của ảnh (ví dụ mắt, mũi, khung mặt ) thì output của layer cuối cùng, kích thước H*D sẽ chuyển về 1 vector kích thước (H*W, 1)