Download as pdf or txt
Download as pdf or txt
You are on page 1of 143

ĐẠI HỌC QUỐC GIA TP.

HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH

ĐỒ ÁN TỐT NGHIỆP

HIỆN THỰC CHỨC NĂNG XE TỰ HÀNH TRÁNH


VẬT CẢN ĐỘNG TRONG MÔI TRƯỜNG KHÔNG
XÁC ĐỊNH

Ngành: KỸ THUẬT MÁY TÍNH

HỘI ĐỒNG: Hội đồng 1 Kỹ thuật Máy tính


GVHD: ThS. Trần Thanh Bình
GVHD: PGS. TS. Trần Văn Hoài
GVPB: TS. Lê Trọng Nhân

SVTH 1: Nguyễn Duy Thịnh - 1915313


SVTH 2: Nguyễn Trọng Nhân - 1914446
SVTH 3: Lê Hoàng Minh Tú - 1915812

TP. HỒ CHÍ MINH, 5/2023


Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Lời cam đoan


Chúng tôi xin cam đoan rằng những nội dung trình bày trong báo cáo luận văn này là
công trình nghiên cứu của nhóm dưới sự hướng dẫn của thầy Trần Thanh Bình và thầy
Trần Văn Hoài. Nội dung và số liệu trong báo cáo không phải là bản sao chép từ bất kỳ
báo cáo, tiểu luận nào có trước. Tất cả những sự giúp đỡ cho việc xây dựng bài báo cáo
đều được trích dẫn và ghi nguồn đầy đủ, rõ ràng. Nếu không đúng sự thật, chúng tôi xin
chịu mọi trách nhiệm trước các thầy, cô, và nhà trường.

I
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Lời cảm ơn
Chúng tôi xin được gửi lời cảm ơn chân thành nhất đến thầy Trần Thanh Bình
và thầy Trần Văn Hoài, giảng viên hướng dẫn trực tiếp đề tài. Thầy cũng là người
đã theo dõi, cũng như góp ý, sửa chữa những sai sót cho chúng tôi. Sau một học kỳ
thực hiện đề tài, bên cạnh sự nỗ lực của các cá nhân, sự hỗ trợ nhiệt tình từ thầy
đã giúp tôi rất nhiều trong việc bắt kịp tiến độ đã đề ra và hoàn thiện hơn đề tài của mình.

Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép, nhưng
chắc chắn không thiếu tránh khỏi thiếu sót, rất mong nhận được sự góp ý và chỉ bảo của
quý thầy cô và các bạn.

TP. Hồ Chí Minh, tháng 5 năm 2023

II
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Tóm tắt đồ án
Đề tài của đồ án tốt nghiệp kỹ thuật máy tính Hiện thực chức năng xe tự hành tránh
vật cản động trong môi trường không xác định được nhóm thực hiện trong hai học kỳ.
Trong quá trình thực hiện đề tài, chúng tôi đã tìm hiểu kiến thức liên quan đến xe tự
hành cũng như các hệ thống đã được triển khai. Từ đó nghiên cứu, chọn lọc và bổ sung
các chức năng cần thiết để tạo ra một hệ thống phù hợp với yêu cầu mà đề tài đặt ra.
Bên cạnh đó, nhóm cũng nghiên cứu các công trình liên quan và áp dụng các kỹ thuật
hiện đại đang được ứng dụng rộng rãi vào đề tài, giúp nhóm tăng tốc độ hoàn thành dự
án, cũng như làm tăng độ chính xác của hệ thống. Mục tiêu của nhóm là hiện thực được
hệ thống xe tự hành và triển khai trên Tutlebot3 được thử nghiệm trên môi trường mô
phỏng Gazebo và môi trường thực tế. Đồng thời nhóm cũng đã thực hiện thí nghiệm với
nhiều giải thuật, công nghệ khác nhau như: UNet, Reinforcement Learning, Path Finding,
YOLOV8, Computer Vision, ... để tìm ra được hướng đi phù hợp nhất cho từng chức năng.
Hệ thống là sự tích hợp của các thành phần như: module nhận diện làn đường, module
né vật cản, module nhận diện biển báo giao thông và cuối cùng là module nhận diện đèn
đường. Mục tiêu của nhóm sẽ bao gồm:

• Hệ thống có khả năng nhận diện và khiến xe không bị di chuyển ra khỏi làn đường.

• Hệ thống có khả năng né vật cản động di chuyển chậm, hoặc vật cản tĩnh trên
đường.

• Hệ thống có khả năng nhận diện và phân loại biển báo giao thông. Cụ thể là 5 loại:
dừng, cấm, đi thẳng, rẽ trái, rẽ phải.

• Hệ thống có khả năng nhận diện và phân loại đèn giao thông gồm: xanh, đỏ, vàng.

TP. Hồ Chí Minh, tháng 5 năm 2023

III
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Mục lục
Lời cam đoan I

Lời cảm ơn II

Tóm tắt đồ án III

Danh sách hình vẽ VIII

Danh sách bảng XII

Danh mục viết tắt XIII

1 Giới thiệu nghiên cứu 1


1.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Mục tiêu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Thực trạng: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4 Phạm vi dự án . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 Ý nghĩa thực tiễn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Cơ sở lý thuyết 4
2.1 Giới thiệu về ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Định nghĩa ROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Cài đặt ROS: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Mô phỏng trên Gazebo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.1 Gazebo là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.2 Cài đặt Gazebo: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3 Không gian làm việc Gazebo: . . . . . . . . . . . . . . . . . . . . . 5
2.2.4 Các model và các map đã build: . . . . . . . . . . . . . . . . . . . . 6
2.3 Giới thiệu về Turtlebot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.1 Turtlebot là gì . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.2 Một số ứng dụng của Turtlebot . . . . . . . . . . . . . . . . . . . . 10
2.3.3 Turtlebot và phần cứng nhóm đã trang bị . . . . . . . . . . . . . . 11
2.4 Giới thiệu về thị giác máy tính (Computer Vision) . . . . . . . . . . . . . . 11
2.4.1 Tổng quan và lịch sử . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.2 Định nghĩa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.3 Phạm vi lĩnh vực thị giác máy tính . . . . . . . . . . . . . . . . . . 13
2.4.4 Ứng dụng của thị giác máy tính . . . . . . . . . . . . . . . . . . . . 13
2.5 Giới thiệu về học sâu (Deep Learning) . . . . . . . . . . . . . . . . . . . . 15
2.5.1 Định nghĩa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5.2 Cơ chế hoạt động . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5.3 Ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.4 Những thách thức của Deep Learning . . . . . . . . . . . . . . . . . 19
2.6 Giới thiệu về học tăng cường (Reinforcement Learning) . . . . . . . . . . . 20
2.6.1 Một số thuật ngữ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6.2 Định nghĩa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6.3 Lý do nên sử dụng học tăng cường . . . . . . . . . . . . . . . . . . 21

IV
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

2.6.4 So sánh với các kĩ thuật học máy khác . . . . . . . . . . . . . . . . 21


2.6.5 Ứng dụng thực tế . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.7 Giới thiệu về Học chuyển giao (Transfer Learning) . . . . . . . . . . . . . . 22
2.7.1 Định nghĩa Transfer Learning . . . . . . . . . . . . . . . . . . . . . 22
2.7.2 Cách thức hoạt động của Transfer Learning . . . . . . . . . . . . . 23
2.7.3 Ưu/nhược điểm của Transfer Learning . . . . . . . . . . . . . . . . 24

3 Kiến trúc hệ thống 27


3.1 Module nhận diện làn đường . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.1 Giới thiệu chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.2 Mô tả chi tiết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Module tránh vật cản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.1 Giới thiệu chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.2 Mô tả chi tiết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Module nhận diện và phân loại biển báo giao thông . . . . . . . . . . . . . 30
3.3.1 Giới thiệu chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.2 Mô tả chi tiết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4 Module nhận diện và phân loại tín hiệu đèn giao thông . . . . . . . . . . . 31
3.4.1 Giới thiệu chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.2 Mô tả chi tiết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4 Hiện thực hệ thống 33


4.1 Module nhận diện làn đường . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.1 UNet model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.1.2 Hàm loss Focal Tversky . . . . . . . . . . . . . . . . . . . . . . . . 35
4.1.3 Các phương hướng tiếp cận . . . . . . . . . . . . . . . . . . . . . . 37
4.1.4 Hướng tiếp cận 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.1.4.1 Backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.1.4.2 Cải tiến khối Backend . . . . . . . . . . . . . . . . . . . . 44
4.1.4.3 Đánh giá . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.1.4.4 Phân tích kết quả . . . . . . . . . . . . . . . . . . . . . . 51
4.1.5 Hướng tiếp cận 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.1.5.1 Thu thập, thiết kế data . . . . . . . . . . . . . . . . . . . 52
4.1.5.2 Huấn luyện mô hình . . . . . . . . . . . . . . . . . . . . . 53
4.1.5.3 Chuyển kết quả thành Bird’s-Eye View và quá trình Cal-
ibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.1.5.4 Thiết kế Backend . . . . . . . . . . . . . . . . . . . . . . . 56
4.1.6 So sánh hai hướng tiếp cận . . . . . . . . . . . . . . . . . . . . . . . 62
4.2 Module né vật cản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.2.1 Hướng tiếp cận 1: Sử dụng Q-learning . . . . . . . . . . . . . . . . 62
4.2.1.1 Giới thiệu về Q-Learning . . . . . . . . . . . . . . . . . . . 63
4.2.1.2 Giới thiệu về môi trường mô phỏng . . . . . . . . . . . . . 69
4.2.1.3 Đặc tả môi trường mô phỏng . . . . . . . . . . . . . . . . 70
4.2.1.4 Xác định bộ states, actions và hàm reward . . . . . . . . . 71
4.2.1.5 Thiết kế kịch bản huấn luyện . . . . . . . . . . . . . . . . 73
4.2.1.6 Đánh giá . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.2.2 Hướng tiếp cận 2: Sử dụng giải thuật Best First . . . . . . . . . . . 75

V
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.2.2.1 Cơ chế hoạt động của Best First . . . . . . . . . . . . . . 75


4.2.2.2 Ánh xạ môi trường thật lên map tự vẽ . . . . . . . . . . . 77
4.2.2.3 Cách chọn điểm goal ở từng frame . . . . . . . . . . . . . 78
4.2.2.4 Điều khiển vận tốc cho xe dựa vào đường đi đến đích và
biển báo: . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.2.2.5 Cơ chế xoay map khi không có tín hiệu từ khối nhận diện
làn đường . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.2.3 So sánh các hướng tiếp cận . . . . . . . . . . . . . . . . . . . . . . 85
4.3 Module nhận diện và phân loại biển báo giao thông . . . . . . . . . . . . . 86
4.3.1 Bộ dữ liệu dùng để huấn luyện . . . . . . . . . . . . . . . . . . . . 86
4.3.2 Chi tiết về kiến trúc mạng CNN được sử dụng trong bài toán Traffic
Sign Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.3.2.1 Kiến trúc model Traffic Sign Classification . . . . . . . . . 86
4.3.2.2 Huấn luyện và đánh giá kết quả . . . . . . . . . . . . . . . 88
4.3.3 Hướng tiếp cận 1: Sử dụng Native Computer Vision kết hợp với
Convolutional Neural Network . . . . . . . . . . . . . . . . . . . . . 89
4.3.3.1 Nhận diện biển báo (Traffic sign detection) . . . . . . . . 90
4.3.3.2 Phân biệt biển báo (Trafic sign classification) . . . . . . . 96
4.3.4 Hướng tiếp cận 2: Kết hợp YOLOV8 và Convolutional Neural Network 97
4.3.4.1 Giới thiệu về YOLO . . . . . . . . . . . . . . . . . . . . . 97
4.3.4.2 Giới thiệu YOLOV8 và sự cải tiến so với các phiên bản
tiền nhiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.3.4.3 Mô hình biểu diễn sự kết hơp của YOLOV8 và CNN . . . 99
4.3.4.4 Ứng dụng YOLOV8 vào bài toán Traffic Sign Object De-
tection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.3.5 So sánh các hướng tiếp cận . . . . . . . . . . . . . . . . . . . . . . 102
4.4 Module nhận diện và phân loại đèn giao thông . . . . . . . . . . . . . . . . 104
4.4.1 Hướng tiếp cận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.4.2 Giữ lại phần màu cần thiết . . . . . . . . . . . . . . . . . . . . . . 105
4.4.3 Find contour và Filter các contour: . . . . . . . . . . . . . . . . . . 108
4.4.4 Tổng hợp và cho ra kết quả . . . . . . . . . . . . . . . . . . . . . . 109
4.4.5 Xử lý chóa sáng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

5 Kết quả thực nghiệm 111


5.1 Module nhận diện làn đường . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.2 Module né vật cản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.2.1 Đánh giá quá trình ánh xạ thực tế lên map . . . . . . . . . . . . . . 115
5.2.2 Đánh giá giải thuật tìm đường Best First . . . . . . . . . . . . . . . 116
5.3 Module nhận nhận diện và phân loại biển báo giao thông . . . . . . . . . . 116
5.3.1 Kết quả thực nghiệm của YOLO . . . . . . . . . . . . . . . . . . . 117
5.3.2 Kết quả thực nghiệm của CNN . . . . . . . . . . . . . . . . . . . . 117
5.4 Module đèn giao thông . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5.5 Kết quả thực nghiệm khi tích hợp hệ thống hoàn chỉnh . . . . . . . . . . . 120
5.5.1 Các thông số kỹ thuật được sử dụng trong thí nghiệm tích hợp hệ
thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.5.2 Kịch bản thực hiện thí nghiệm tích hợp hệ thống . . . . . . . . . . 120
5.5.3 Kết quả thí nghiệm tích hợp hệ thống . . . . . . . . . . . . . . . . 121

VI
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

6 Đề xuất cải tiến 123


6.1 Module nhận diện làn đường . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.2 Module né vật cản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
6.3 Module nhận diện và phân loại biển báo giao thông . . . . . . . . . . . . . 124
6.4 Module nhận diện và phân loại đèn giao thông . . . . . . . . . . . . . . . . 125

7 Kết luận 126


7.1 Kết quả đạt được . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
7.2 Các giới hạn của hệ thống sau khi tích hợp . . . . . . . . . . . . . . . . . . 126
7.3 Hướng phát triển . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

Tài liệu tham khảo 128

VII
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Danh sách hình vẽ


1 Không gian làm việc của Gazebo (Link mind map) . . . . . . . . . . . . . 5
2 Các model mảnh ghép đường . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Các model biển báo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Tổng quan map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5 Một số khung cảnh từ map trên . . . . . . . . . . . . . . . . . . . . . . . . 7
6 Đường cong . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7 Map nguyên khối nhằm giảm quá trình render cho Gazebo . . . . . . . . . 8
8 Map cuối cùng có độ phức tạp cao . . . . . . . . . . . . . . . . . . . . . . 9
9 Các dòng robot của Turtlebot3 . . . . . . . . . . . . . . . . . . . . . . . . 10
10 Thị giác máy tính . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
11 Phạm vi của thị giác máy tính [4] . . . . . . . . . . . . . . . . . . . . . . . 13
12 Hình ảnh minh thể hiện cấu tạo của perceptron . . . . . . . . . . . . . . . 16
13 Hình ảnh minh hoạ shallow neural network . . . . . . . . . . . . . . . . . . 17
14 Hình ảnh minh hoạ deep neural network . . . . . . . . . . . . . . . . . . . 18
15 Hình ảnh minh hoạ sự khác biệt giữa các kĩ thuật học máy . . . . . . . . . 21
16 Hình ảnh minh hoạ sự khác biệt giữa kĩ thuật Machine Learning truyền
thống và Transfer learning . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
17 Mô tả cơ chế hoạt động của Original Model, Fine-tuning và Feature Ex-
traction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
18 Workflow tổng quát cho việc huấn luyện sử dụng Transfer Learning . . . . 24
19 Workflow tổng quát cho việc huấn luyện sử dụng Transfer Learning . . . . 25
20 Cấu trúc của toàn bộ hệ thống . . . . . . . . . . . . . . . . . . . . . . . . 27
21 Cấu trúc của module nhận diện làn đường . . . . . . . . . . . . . . . . . . 28
22 Hình ảnh giới thiệu tổng quan về module né vật cản . . . . . . . . . . . . . 29
23 5 loại biển báo được sử dụng trong đồ án . . . . . . . . . . . . . . . . . . . 31
24 Kiến trúc khối đèn giao thông . . . . . . . . . . . . . . . . . . . . . . . . . 32
25 Phân biệt image segmentation và những bài toán khác . . . . . . . . . . . 33
26 cấu trúc chung của bài toán Segmentation . . . . . . . . . . . . . . . . . . 33
27 Kiến trúc mạng FCN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
28 Kiến trúc mạng UNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
29 So sánh giữa hàm loss Tversky và Adam . . . . . . . . . . . . . . . . . . . 36
30 Ba phương pháp label được đề xuất . . . . . . . . . . . . . . . . . . . . . . 37
31 Một vài ảnh trong dataset KITTI và label tương ứng . . . . . . . . . . . . 38
32 Các thông số ảnh hưởng bởi vị trí đặt camera . . . . . . . . . . . . . . . . 38
33 Độ biến thiên của model A và model B so với góc nghiêng camera . . . . . 39
34 So sánh một vài trường hợp đặc biệt giữa hai model . . . . . . . . . . . . . 40
35 Hình ảnh thể hiện tổng quan các bước của khối Backend . . . . . . . . . . 41
36 Hình ảnh minh hoạ làn đường sau khi được grayscale . . . . . . . . . . . . 42
37 Hình ảnh minh hoạ làn đường sau khi ứng dụng Adaptive threshold . . . . 42
38 Hình ảnh minh hoạ làn đường sau khi ứng dụng Hough Line Transform . . 42
39 Giá trị α và r đặc trưng cho mỗi đường thẳng làn đường . . . . . . . . . . 43
40 Hình ảnh kết quả cuối cùng của khối backend . . . . . . . . . . . . . . . . 43
41 Hình ảnh thể hiện tổng quan các bước của khối Backend sau khi được cải
tiến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
42 Hình ảnh sau khi được grayscale . . . . . . . . . . . . . . . . . . . . . . . . 46

VIII
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

43 Hình ảnh sau khi được Gaussian Blur và ứng dụng Canny Edge Detection 46
44 Hình ảnh minh hoạ việc làn đường đã được đóng khung với contour lớn nhất 47
45 Hình ảnh minh hoạ việc khung ảnh được cắt sau khi xác định được max
contour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
46 Hình ảnh giới thiệu tổng quan về các bước của Lane Verification Algorithm 48
47 Hình ảnh sau khi được masking một lớp polygon để khử nhiễu . . . . . . . 49
48 Hình ảnh minh hoạ kết quả của backend sau khi được cải tiến . . . . . . . 50
49 Hình ảnh minh hoạ việc tính toán left ratio . . . . . . . . . . . . . . . . . 50
50 So sánh giữa hai phương pháp backend . . . . . . . . . . . . . . . . . . . . 51
51 So sánh hai phương pháp label, (phương pháp cũ bên trái và phương pháp
mới bên phải) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
52 Quá trình xây dựng data cho model . . . . . . . . . . . . . . . . . . . . . . 53
53 Quá trình Findtune hai parameter cho model . . . . . . . . . . . . . . . . 54
54 Đồ thị xây dựng được từ quá trình findtune hai parameter . . . . . . . . . 55
55 Vị trí các mảnh giấy trong quá trình calibration . . . . . . . . . . . . . . . 56
56 Mô phỏng các bước của backend với những trường hợp . . . . . . . . . . . 57
57 Kiến trúc backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
58 Hình ảnh minh hoạ cho việc xác định giao điểm L1 , L2 , R1 , R2 . . . . . . . 59
59 Kết quả của việc song song hóa 2 làn đường . . . . . . . . . . . . . . . . . 60
60 Hình ảnh minh hoạ cách thực hoạt động của học tăng cường (reinforcement
learning) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
61 Hình ảnh minh hoạ toán bộ quá trình hoạt động của học tăng cường (re-
inforcement learning) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
62 Hình ảnh minh hoạ quy trình hoạt động của thuật toán Q-learning . . . . 65
63 Hình ảnh minh hoạ khởi tạo Q-table . . . . . . . . . . . . . . . . . . . . . 65
64 Hình ảnh diễn tả chi tiết ý nghĩa của biểu thức cập nhật Q-table . . . . . . 67
65 Hình ảnh so sánh giữa 3 policy dựa theo độ Total Regret . . . . . . . . . . 67
66 Hình ảnh so sánh giữa 3 policies về số lượng hành động thực hiện . . . . . 68
67 Hình ảnh so sánh giữa 3 policies về tổng phần thưởng nhận được . . . . . 68
68 Giao diện môi trường của PyGame . . . . . . . . . . . . . . . . . . . . . . 70
69 3 vùng lidar của robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
70 Sự biến thiên reward so với số lượt chơi . . . . . . . . . . . . . . . . . . . . 73
71 Số lượt chơi cần thực hiện để hoàn thành một màn chơi . . . . . . . . . . . 74
72 Độ bao phủ của những tham số được huấn luyện so với màn chơi . . . . . 74
73 Hình ảnh giới thiệu tổng quan về module né vật cản . . . . . . . . . . . . . 75
74 Khoảng cách Manhattan và khoảng cách Euclide . . . . . . . . . . . . . . . 76
75 Ánh xạ thông tin lidar lên map . . . . . . . . . . . . . . . . . . . . . . . . 77
76 Vị trí đặt điểm goal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
77 Khi chỉ có một goal bị chặn . . . . . . . . . . . . . . . . . . . . . . . . . . 79
78 Trường hợp cả hai goal đều trống . . . . . . . . . . . . . . . . . . . . . . . 79
79 Trường hợp cả hai goal bị chặn . . . . . . . . . . . . . . . . . . . . . . . . 80
80 Trường hợp vật cản chặn hết đường đi . . . . . . . . . . . . . . . . . . . . 80
81 Chọn goal dựa vào khoảng cách từ robot đến làn đường . . . . . . . . . . . 81
82 Xét khoảng trống trước goal . . . . . . . . . . . . . . . . . . . . . . . . . . 81
83 Hướng di chuyển của robot (Góc tọa độ được đặt theo góc tọa độ trong
openCV) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
84 Vị trí của robot ở thời điểm t và thời điểm t+1 . . . . . . . . . . . . . . . 83

IX
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

85 Tập dataset dùng để train model . . . . . . . . . . . . . . . . . . . . . . . 86


86 Hình ảnh minh họa về Sliding window . . . . . . . . . . . . . . . . . . . . 87
87 Ví dụ về CNNs Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
88 Tóm tắt các layer trong model . . . . . . . . . . . . . . . . . . . . . . . . . 88
89 Sự thay đổi của Accuracy theo Epoch . . . . . . . . . . . . . . . . . . . . . 88
90 Sự thay đổi của Loss theo Epoch . . . . . . . . . . . . . . . . . . . . . . . 89
91 Giới thiệu tổng quan về module phân biệt biển báo . . . . . . . . . . . . . 90
92 Chuyển ảnh từ rgb sang yuv và tách làm 3 kênh màu y, u, và v . . . . . . 91
93 Ví dụ về Threshold với T=127 . . . . . . . . . . . . . . . . . . . . . . . . . 92
94 Ví dụ về Adaptive Threshold . . . . . . . . . . . . . . . . . . . . . . . . . . 93
95 Phát hiện biển báo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
96 Không phát hiện được biển báo đỏ . . . . . . . . . . . . . . . . . . . . . . 94
97 Nhiều hơn 1 contour được phát hiện . . . . . . . . . . . . . . . . . . . . . 94
98 Tiền xử lý và tìm Contour trong môi trường thực tế . . . . . . . . . . . . . 95
99 Tập dataset gồm các ảnh được crop rộng hơn biển báo . . . . . . . . . . . 95
100 Mở rộng khung detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
101 Kết quả chạy với một số biển báo . . . . . . . . . . . . . . . . . . . . . . . 96
102 Theo tác giả, mạng YOLO bao gồm 24 lớp CNN và 2 lớp FC. Không gian
đặc trưng được giảm so với các lớp trước bằng cách xen kẽ các lớp tích
chập 1x1. họ huấn luyện trước các lớp tích chập trong nhiệm vụ phân loại
ImageNet ở độ phân giải một nửa (hình ảnh đầu vào 224 x 224) và sau đó
tăng gấp đôi độ phân giải để phục vụ cho mục đích phát hiện [19] . . . . . 97
103 Đồ thị so sánh YOLOV8 với các phiên bản tiền nhiệm [21] . . . . . . . . . 98
104 Luồng xử lý của ảnh thông qua sự kết hợp của YOLOV8 và CNN . . . . . 99
105 Tổng quan về bộ dữ liệu được dùng để training YOLO . . . . . . . . . . . 100
106 Tổng quan về gán nhãn dữ liệu được dùng để training YOLO . . . . . . . 101
107 Một số thông số đánh giá kết quả object detection . . . . . . . . . . . . . . 102
108 Một số thông số đánh giá biểu thị sự hiệu quả tăng dần của YOLO sau
200 epochs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
109 Giới thiệu tổng quan về module phân biệt tín hiệu đèn giao thông . . . . . 105
110 Bộ màu HSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
111 Tool giúp tìm khoảng màu hsv cho các vật thể . . . . . . . . . . . . . . . . 107
112 Màu sắc được giữ lại lần lượt qua 3 trạm lọc màu . . . . . . . . . . . . . . 107
113 Tín hiệu đèn giao thông trong môi trường nhiều nhiễu . . . . . . . . . . . 108
114 Đèn giao thông với nhiều yếu tố gây nhiễu . . . . . . . . . . . . . . . . . . 108
115 Nhiều tín hiệu đèn xuất hiện cùng lúc . . . . . . . . . . . . . . . . . . . . . 109
116 Thiết bị đèn giao thông có hiện tượng bị chóa ở trung tâm đèn . . . . . . . 110
117 Cấu tạo đèn giao thông ngoài thực tế . . . . . . . . . . . . . . . . . . . . . 110
118 Loại bỏ phần chóa sáng ở trung tâm của đèn . . . . . . . . . . . . . . . . . 110
119 Các giá trị thống kê quá trình huấn luyện model Model-S5_AUTO-13 . . . 112
120 so sánh sự khác nhau giữa tham số alpha của hàm loss đến độ chính xác
của backend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
121 Một số trường hợp lỗi gây ra bởi AI nhưng được lọc bởi backend . . . . . . 113
122 Kết quả ánh xạ làn đường và Light Detection and Ranging (LIDAR) lên
map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
123 Kết quả ánh xạ làn đường và LIDAR lên map (kết quả) . . . . . . . . . . . 115
124 Kết quả chạy module né vật cản . . . . . . . . . . . . . . . . . . . . . . . . 116

X
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

125 Kết quả sau khi thực hiện object detection bằng YOLOV8 trong môi trường
thực nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
126 Kết quả sau khi dùng CNN thực hiện classification dữ liệu được crop từ
YOLOV8 trong môi trường thực nghiệm . . . . . . . . . . . . . . . . . . . 117
127 Kết quả nhận diện đèn giao thông . . . . . . . . . . . . . . . . . . . . . . . 119
128 Ảnh chụp đèn giao thông, sử dụng camera của robot . . . . . . . . . . . . 119
129 Một số ảnh kết quả của quá trình chạy thử nghiệm . . . . . . . . . . . . . 122
130 Các ảnh sinh bởi model GANs sau 48h học bộ data mẫu, các kết quả chưa
đủ tốt để có thể thêm vào tập huấn luyện . . . . . . . . . . . . . . . . . . 123
131 Vật cản di chuyển nhanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
132 Vùng mà xe không thể né với giải thuật hiện tại . . . . . . . . . . . . . . . 124

XI
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Danh sách bảng


1 So sánh hai phương pháp tiếp cận . . . . . . . . . . . . . . . . . . . . . . . 62
2 So sánh thời gian chạy của các giải thuật tìm đường . . . . . . . . . . . . . 77
3 So sánh hai phương pháp tiếp cận . . . . . . . . . . . . . . . . . . . . . . . 85
4 Bảng so sánh các YOLOv8 models [21] . . . . . . . . . . . . . . . . . . . . 99
5 Bảng đo đạc thông tin về thời gian xử lý của bộ Object Detection với 2
phương pháp xử lý bằng Native CV và YOLOV8 . . . . . . . . . . . . . . 103
6 Bảng đo đạc thông tin về thời gian xử lý sau khi kết hợp object detection
và classifier của Native Computer Vision và YOLOV8 với CNN . . . . . . 104
7 Khoảng màu theo hệ màu HSV của biển báo giao thông . . . . . . . . . . 107
8 Bảng biểu thị các đối tượng được sử dụng trong việc xây dựng kịch bản
thí nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9 So sánh thời gian chạy của giải thuật tìm đường Best First . . . . . . . . . 116
10 Bảng đo đạc thông tin về thời gian xử lý của CNN Classifier trong phân
loại ý nghĩa biển báo giao thông . . . . . . . . . . . . . . . . . . . . . . . . 118
11 Bảng đo đạc thông tin về thời gian xử lý sau khi kết hợp YOLOV8 với CNN118
12 Bảng thông số kĩ thuật được sử dụng . . . . . . . . . . . . . . . . . . . . . 120
13 Bảng biểu thị các đối tượng được sử dụng trong việc xây dựng kịch bản
thí nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

XII
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Danh mục viết tắt

ROS Robot Operating System . . . . . . . . . . . . . . . . . . . . . . . . . . 4


GUI Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . 4
FPS Frame Per Second . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
LIDAR Light Detection and Ranging . . . . . . . . . . . . . . . . . . . . . . . 9
ML Machine Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
DL Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
CT Computed Tomography . . . . . . . . . . . . . . . . . . . . . . . . . . 14
MRI Magnetic Resonance Imaging . . . . . . . . . . . . . . . . . . . . . . . 14
CNN Convolutional Neural Network . . . . . . . . . . . . . . . . . . . . . . . 23
YOLO You Only Look Once . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
TCP Transmission Control Protocol
CUDA Compute Unified Device Architecture . . . . . . . . . . . . . . . . . . . 28
SLAM Simultaneous Localization and Mapping . . . . . . . . . . . . . . . . . 10
ROI Region of Interest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
FCN Fully Convolutional Network . . . . . . . . . . . . . . . . . . . . . . . 33
FP False Positive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
FN False Negative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
TL Tversky Loss function . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
FTL Focal Tversky Loss function . . . . . . . . . . . . . . . . . . . . . . . . 35
RL Reinforcement Learning . . . . . . . . . . . . . . . . . . . . . . . . . . 63

XIII
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

1 Giới thiệu nghiên cứu


1.1 Giới thiệu
Sự an toàn trong việc điều khiển các phương tiện lưu thông trên đường là điều đang
được quan tâm bởi tai nạn giao thông do bất cẩn là điều khó có thể đoán được bởi nhiều
lý do, một số lý do có thể kể đến như:

• Người điều khiển phương tiện mất tập trung (thiếu ngủ, say xỉn, nghe nhạc,...).

• Các phương tiện xung quanh chạy không đúng luật và dẫn đến hậu quả không đáng
có.

• Có một số góc khuất mà người điều khiển phương tiện không thể quan sát được.

• ...

Chính vì thế, nhóm chọn đề tài "Hiện thực chức năng xe tự hành tránh vật cản động
trong môi trường không xác định" nhằm mục đích giảm thiểu các tai nạn xảy ra để từ
đó người điều khiển phương tiện có thể bảo vệ được an toàn tính mạng của bản thân khi
rơi vào những tình huống ngoài ý muốn.

1.2 Mục tiêu


Mục tiêu của nhóm là khiến xe tự hành có thể áp dụng trong nhiều môi trường nhất
(từ môi trường lý tưởng trong mô phỏng đến môi trường thực, có nhiễu). Đồng thời, xe
có thể phục vụ các chức năng cơ bản:

• Có khả năng di chuyển vào giữa tâm làn đường.

• Bên cạnh khả năng bám làn cơ bản, hệ thống còn có yêu cầu giúp hỗ trợ người lái
trong việc đọc các biển hiệu và đưa ra các hành động tương ứng.

• Cùng với đó là khả năng nhận diện tín hiệu đèn giao thông, giúp xe không chỉ bám
đúng làn đường mà còn có khả năng thực hiện đúng theo chỉ dẫn giao thông.

• Cuối cùng cũng là tính năng quan trọng nhất: là khả năng né vật cản động. Trong
môi trường thực thường có các đàn động vật chạy ngang. Về khả năng né được
những vật cản này, là một tính năng cần thiết và nhóm sẽ né ở mức độ cơ bản.

1.3 Thực trạng:


Để đánh giá tổng quan về đề tài này, đây là một đề tài khó. Bởi các yếu tố sau:

1. Để áp dụng trên thực tế, có rất rất nhiều yếu tố ảnh hưởng đến hành vi của xe (ánh
sáng, độ trơn của mặt đường, hành vi của các phương tiện khác, ...).

2. Data dùng để train model là nguồn data mở trên mạng, nên về số lượng không được
nhiều. Và về chất lượng: chỉ phù hợp với biển báo của data đó, nhưng khi sử dụng
trong đồ án này chúng tôi sử dụng các biển báo dạng mô hình nên phải tạo thêm
data.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 1/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

3. Các ông lớn trên thế giới, như Tesla, tuy có đội ngũ lập trình viên xuất sắc nhưng
các dòng tự hành của họ vẫn vướng vào các vụ kiện liên quan đến tai nạn giao
thông.

4. Hành vi và ý thức lái xe tuỳ thuộc vào mỗi quốc gia. Không những thế, còn bị ảnh
hưởng bởi số loại phương tiện di thông trên cùng tuyến đường. Giả sử một đoạn
đường chỉ gồm xe hơi chạy với nhau, khi này người lái không cần phải quá chú ý
hai bên hông xe, chỉ cần tập trung đa phần vào phía trước. Tuy nhiên trên cùng
một lộ trình đường, nếu tồn tại cả xe bus, lẫn xe đạp và xe gắn máy. Khi này mỗi
phương tiện có một tốc độ khác nhau, và hành vi chuyển làn khác nhau, nên việc
điều khiển xe trong môi trường này sẽ phức tạp hơn.

1.4 Phạm vi dự án
Trước những khó khăn chung của ngành công nghiệp xe tự hành, và sự đa dạng các
trường hợp từ môi trường thực tế phức tạp, nhóm phải giới hạn lại phạm vi đề tài nhằm
đảm bảo đúng tiến độ và khả năng thực thi. Mục tiêu đề tài bao gồm:

• Nhận diện làn đường: Robot có khả năng di chuyển bên trong đường thẳng, có
hai làn và có khả năng chuyển làn. Nếu làn đường trống trải, robot cần chạy ở giữa
một trong hai làn sao cho không cán bánh xe lên lề đường hoặc đường nét đứt. Nếu
làn đường có vật cản, robot có quyền cán vạch nét đứt hoặc tối đa 50% diện tích
xe nằm bên ngoài phạm vi làn đường, nhằm mục tiêu né vật cản hoặc chuyển sang
làn khác.

• Né vật cản tĩnh/ động: Robot có khả năng né vật cản tĩnh hoặc động. Nếu là
vật cản động thì di chuyển chậm và robot chỉ có khả năng né những vật thể đang
ở trước mặt và bên hông.

• Nhận diện biển báo: Trước tập biển báo lớn hiện nay, nhóm đã giới hạn còn 5
loại biển báo thông dụng, để hỗ trợ hành vi của xe tự hành trong môi trường không
xác định:

– Dừng: Biển báo này sẽ được cắm ở đích đến. Khi gặp biển báo này, xe sẽ dừng
lại.
– Cấm: Biển báo này chỉ được cắm ở ngã ba. Khi này, xe có khả năng nhận biết
đường bị cấm và di chuyển vào ngã rẽ còn lại.
– Quẹo trái: Biển báo này sẽ được cắm ở ngã ba hoặc ngã tư. Khi gặp biển báo
này, xe sẽ tiến hành quẹo trái và đi vào đúng làn đường. (xe có khả năng nhận
diện vùng để quẹo, chứ không phải là quẹo theo cài đặt sẵn).
– Quẹo phải: tương tự với biển báo quẹo trái, xe có hành vi tương tự, nhưng
sẽ tiến hành quẹo bên phải.
– Đi thẳng: Biển báo này sẽ được cắm ở ngã ba hoặc ngã tư. Gặp biển báo này,
xe sẽ lựa chọn đi vào tuyến đường trước mặt, mà không tiến hành quẹo qua
các ngã rẽ khác.

Ngoài ra, nhằm dễ dàng cho việc xử lý của xe, dự án này chỉ tiến hành cắm duy
nhất 1 biển báo ở mỗi ngã rẽ.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 2/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

• Nhận diện tín hiệu đèn giao thông: Do trong thực tế tín hiệu đèn giao thông
dễ bị nhầm lẫn với đèn ở đuôi xe, và một số đèn hiệu chiếu sáng khác. Nên nhóm
đã giới hạn phạm vi trong môi trường mô phỏng trước, và môi trường robot chạy
trong phòng thí nghiệm.

Vì vậy để nghiên cứu và thực hiện đề tài này, trước tiên ta sẽ tiến hành trong môi
trường lý tưởng trước, từ đó sẽ mở rộng, thêm các yếu tố ngoại vi gắn liền hơn với thực
tế. Từ đó nhóm đã quyết định mô phỏng lại một đô thị thông minh. Trong thế giới mô
phỏng mà nhóm đã thực hiện được bao gồm:
• Có các đường nhựa, với 2 lane đường, và vạch phân cách giữa 2 lane đường gồm cả
nét đứt và nét liền (tăng độ khó cho việc xe bám vào giữa lane).

• Có 5 loại biển báo hỗ trợ điều hướng: cấm, dừng, đi thẳng, quẹo trái, quẹo phải.

• Có bầu trời và mây bay là yếu tố gây nhiễu khi nhận diện biển báo (nhất là các
biển báo màu xanh).

• Ngoài ra, còn có các bụi tuyết, lá cây trên đường góp phần gây nhiễu.

• Map còn có cả vật cả tĩnh và động. Tuy nhiên, hiện tại, để dễ dàng cho việc quan
sát, các vật cản là các khối trụ.
Một dự án, nếu chỉ chạy trong mô phỏng thì không thực tế. Chính vì vậy, sau khi đã
chạy ổn định trong môi trường mô phỏng Gazebo, nhóm sẽ tiến hành chạy thử nghiệm
trên turtlebot, trong môi trường thực tế. Môi trường thực tế bao gồm:
• Làn đường gồm các mảnh đường được in lên giấy formex và ghép lại.

• Các biển báo cũng được in ra giấy cứng formex tạo thành các trụ cố định.

• Đèn giao thông được hiện thực bằng mạch Arduino cơ bản, với 3 led đơn (đỏ, xanh,
vàng). Việc đổi màu sẽ được điều khiển bằng nút nhấn hoặc tuần hoàn theo chu kỳ.

• Vật cản sẽ được bố trí tĩnh hoặc động. Bằng cách sử dụng các vật dụng như chai
nước hay xe đồ chơi, thùng giấy, ...

1.5 Ý nghĩa thực tiễn


Nhóm hy vọng giải thuật của nhóm, sẽ phần nào đóng góp cho xe tự hành nói chung
và một số mô hình có khả năng áp dụng xe tự hành. Một số mô hình nhóm đã nghĩ tới:

• Robot vận chuyển vật tư: Ví dụ như, tại các nhà máy, công xưởng tự động cao.
Nơi mà các robot sẽ di chuyển theo đường đi vẽ sẵn, đồng thời nhận diện các biển
hiệu để di chuyển đúng hướng. Các robot này có thể phục vụ việc vận chuyển vật
tư, thiết bị.

• Phương tiện di chuyển trong khu đô thị thông minh: Tại các khu đô thị
thông minh, nơi chỉ có người đi bộ, xe đạp và xe tự hành. Các xe tự hành được giới
hạn ở tốc độ an toàn. Đây là môi trường lý tưởng để áp dụng nghiên cứu của nhóm
vào, có thể hỗ trợ một đô thị xanh và tiện lợi hơn cho người ở.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 3/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

2 Cơ sở lý thuyết
2.1 Giới thiệu về ROS
2.1.1 Định nghĩa ROS

Robot Operating System (ROS) là một hệ thống phần mềm chuyên dụng để lập trình
và điều khiển robot, cung cấp các thư viện và công cụ để giúp các nhà phát triển phần
mềm tạo ra các ứng dụng robot. ROS có những ưu điểm nổi bật như là:

1. ROS là hệ điều hành meta, mã nguồn mở, hoàn toàn miễn phí.

2. ROS có thể được lập trình bằng nhiều ngôn ngữ khác nhau như C++, Python, ...
(source code của nhóm được viết chủ yếu bằng Python).

3. ROS Kết hợp trình điều khiển và thuật toán từ các dự án nguồn mở khác:

• Trình mô phỏng dự án Player / Stage.


• Thư viện xử lý hình ảnh và tầm nhìn nhân tạo từ OpenCV.
• Thuật toán lập kế hoạch từ OpenRave.

2.1.2 Cài đặt ROS:


Hiện nay có khá nhiều phiên bản ROS như là ROS Kinetic, ROS Melodic, ROS
Dashing,... Do phần lớn thành viên trong nhóm sử dụng hệ điều hành Ubuntu phiên bản
20.04 nên nhóm quyết định sử dụng ROS Noetic vì đây là phiên bản hỗ trợ tốt nhất dành
cho Ubuntu 20.04 (Link tải Ubuntu 20.04, ROS Noetic).

2.2 Mô phỏng trên Gazebo


2.2.1 Gazebo là gì?
Gazebo là một công cụ mô phỏng 3D. Gazebo có thể được áp dụng cho robot design,
testing AI khi ở giai đoạn đầu của các nghiên cứu. Nó được nhiều người ưa chuộng bởi:

1. Gazebo cung cấp GUI (Graphical User Interface) rất thân thiện với người dùng, với
các thanh menu, có thể giúp người dùng tương tác trực tiếp trên gazebo mà không
cần thông qua edit file code.

2. Gazebo là một công cụ mã nguồn mở, không tính phí.

3. Gazebo có một cộng đồng lớn.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 4/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

2.2.2 Cài đặt Gazebo:


Như đã giới thiệu ở trên, Turtlebot chạy trên hệ điều hành ROS, và ROS tương thích
tốt đối với Ubuntu, nên nhóm đã quyết định cài đặt Gazebo phiên bản 11.0.0 trên
Ubuntu để tiện cho việc mô phỏng. (Link để tải Gazebo).

Ngoài ra, Gazebo chỉ là công cụ để hiện mô phỏng, nhưng để edit các model, 3d object
như thêm màu, cắt, thay đổi hình bề mặt, ... ta cần 1 công cụ hỗ trợ khác cũng được
nhiều người sử dụng không kém là SketchUp Pro v21.0.339. Đây là công cụ có tính
phí, ta có thể tải ở (link sau).

2.2.3 Không gian làm việc Gazebo:

Hình 1: Không gian làm việc của Gazebo (Link mind map)

Không gian làm việc của Gazebo cần có những thành phần sau:

• 2 file package.xml và CMakeList.txt để giúp cấu hình, và setup bên trong


workspace.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 5/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

• Thư mục Model: Chứa các vật thể, object có hình dạng, màu sắc và collision
(viền va chạm), và các thông số vật lý khác. Những object này sẽ được lưu trong
file có đuôi .sdf. Các ví dụ về model có thể là:

– Vật tĩnh: Nhà cửa, cây cối, biển báo, đường xá, ...
– Vật động: Xe cộ, robot, con người, ...

• Thư mục Worlds: Gồm các file .world, trong file này sẽ chứa các model nhỏ bên
trong và vị trí của chúng xuất hiện trong một thế giới rộng hơn. Đây cũng là các
map mà ta sẽ xây dựng để mô phỏng.

• Thư mục Launchs: Gồm các file .launch, và sẽ được gọi trong terminal bằng lệnh
roslaunch. Khi đó turtlebot của chúng ta sẽ được spawn trong thế giới đã định
nghĩa trong file launch.

2.2.4 Các model và các map đã build:


1. Các model:
Như đã giới thiệu ở trên về công cụ SketchUp, nó có thể giúp ta thiết kế những
model giống với thực tế như biển báo, ta có thể vẽ một cái trụ tròn cao, và một
mặt phẳng hình tròn, đồng thời sơn lên bề mặt của hình tròn đó hình biển báo ta
cần, như vậy là ta có được 1 model biển báo.

Đối với các model phức tạp hơn đòi hỏi sự chuyên nghiệp và tính thẩm mỹ, ta có
thể tìm kiếm trên cộng đồng mã nguồn mở của SketchUp 3D.

Một số model đã build:

Hình 2: Các model mảnh ghép đường

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 6/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 3: Các model biển báo

2. Các map:
Map mà nhóm đã từng sử dụng để chạy kiểm thử chương trình:

Hình 4: Tổng quan map

Hình 5: Một số khung cảnh từ map trên

Nhưng trước khi đi vào nhận diện đường có nét đứt trên, ta phải thử nghiệm việc
bám lane trên map đường nét liền và có độ cong không quá lớn như hình 6.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 7/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 6: Đường cong

3. Map phiên bản mới:


Tuy nhiên, khi chạy map ở Hình 5, nhóm đã gặp phải khó khăn.

• Giảm hiệu suất của Gazebo: Do map trên có độ phức tạp của từng chi tiết
cao. Làn đường và vệ đường có độ cao khác nhau. Ngoài ra còn có thiết kế trụ
đèn giao thông, và vạch trắng đen xen kẻ ở hai đường ngoài rìa. Nên mỗi lần
nhóm chạy Gazebo, thì tốc độ mô phỏng của trình mô phỏng này giảm đáng
kể, nhất là khi kết hợp với AI hoặc module điều khiển.
• Độ cong góc cua làn đường là cố định: Do map trên được ghép từ các
model có sẵn, nên ở những ngã cua, ta không thể điều chỉnh được độ cong của
làn đường.

Chính vì vậy, nhóm đã tự thiết kế một map mới trên bằng công cụ SketchUp.
Điểm đặc biệt ở map này là một khối liền và bỏ đi các chi tiết phức tạp nhưng vẫn
đảm bảo đủ độ khó và thực tế. Nhờ vậy FPS (Frame Per Second) của Gazebo được
cải thiện đáng kể.

Hình 7: Map nguyên khối nhằm giảm quá trình render cho Gazebo

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 8/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Ngoài ra, nhằm tăng thêm độ phức tạp cho map. Nhóm đã thêm vào một số vật
cản, biển báo, cũng như các tác nhân gây nhiễu. Trong đó:

• Vật cản: Là những khối trụ màu trắng, được đặt trên đường tạo cho xe có
nhiều trường hợp để né.
• Biển báo: Thuộc 5 loại biển báo: dừng, cấm, đi thẳng, quẹo trái, quẹo phải.
Tuy nhiên hiện trong map chỉ tồn tại biển báo đi thẳng và biển báo dừng.
• Các tác nhân gây nhiễu: Bao gồm một số tác nhân gây nhiễu trên làn
đường: cỏ, tuyết, làn đường bị đổ sơn, ... và tác nhân bên ngoài làn đường: các
ngôi nhà hai bên đường, nền cỏ, ... Trong đó, các ngôi nhà và trụ vật cản có thể
được quét bởi LIDAR (Light Detection and Ranging)1 , còn các vật gây nhiễu
còn lại có tác dụng gây nhiễu với những khối có đầu vào là ảnh từ camera.

Hình 8: Map cuối cùng có độ phức tạp cao

1
Phần cứng này sẽ được trình bày kỹ hơn ở mục 2.3.3

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 9/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

2.3 Giới thiệu về Turtlebot3


2.3.1 Turtlebot là gì

Hình 9: Các dòng robot của Turtlebot3

Turtlebot là một dòng robot nhỏ gọn, có mức chi phí thấp, và có thể lập trình được
trên nền tảng ROS tiêu chuẩn. Nó thường được áp dụng trong giáo dục, các nghiên
cứu/mô phỏng trước khi triển khai trên môi trường thực tế phức tạp. Nó có cấu trúc
dạng module, cho phép người nghiên cứu dễ dàng tháo lắp, thay đổi hình dạng cấu trúc.
Ngoài ra, do được sử dụng rộng rãi, Turtlebot3 có cộng đồng hỗ trợ và các bài viết học
thuật hỗ trợ kết nối và sử dụng phần cứng.

Trong đó, Turtlebot3 được bán với 2 dạng chủ yếu trên thị trường:

• Waffle Pi (Hình 9 bên trái)

• Burger (Hình 9 bên phải)

Do cấu trúc module, nên cả hai loại đều có khả năng tháo rời và lắp lại theo ý của
người nghiên cứu.

2.3.2 Một số ứng dụng của Turtlebot


Do giá thành rẻ, và nhỏ gọn, nên Turtlebot3 được sử dụng rộng rãi, một số nghiên
cứu có trên thị trường ngày nay của Turtlebot3:
• Đặc biệt nhất là giải thuật SLAM (Simultaneous Localization and Mapping), cho
phép sinh ra hình ảnh bản đồ xung quanh dựa vào LIDAR. Một số bài báo đã tiến
hành khám phá mê cung bằng cách kết hợp nhiều Turtlebot cùng lúc và xem sự
khác biệt về hiệu năng và tốc độ tìm kiếm (xem thêm tại đây).

• Bài toán thăng bằng cũng được áp dụng với Turtlebot. Tuy vẻ ngoài của robot
đã khá cân bằng, nhưng có một nhóm nghiên cứu đã đưa ra ý tưởng về việc đặt

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 10/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Turtlebot3 dòng burger trên các quả banh có kích thước và vật liệu khác nhau. Từ
đó bằng việc điều khiển 3 bánh xe đặc biệt, mà khiến Turtlebot cân bằng (xem
thêm tại đây).

• Bài toán né vật cản tĩnh bằng việc áp dụng giải thuật Reinforcement Learning cũng
được áp dụng (xem thêm tại đây).

• Ngoài ra, còn có dự án về robot theo đuôi, với demo thú vị là một đàn Turtlebot3
theo chân một người, được ví von như một đàn vịt (xem thêm tại đây).

• Và kinh điển nhất là bài toán về Autonomous Car (xe tự hành). Đây là bài toán
được Turtlebot3 tổ chức hằng năm với tên gọi Turtlebot3 AutoRace 2020 (xem
thêm tại đây).

2.3.3 Turtlebot và phần cứng nhóm đã trang bị


Để phù hợp với làn đường, nhóm đã chọn Turtlebot dạng Burger. Bởi Burger cho
phép ta đặt camera ở góc nhìn cao hơn, giống với thực tế hơn. Ngược lại Waffle Pi do có
độ cao thấp nên camera đặt ở đầu Waffle Pi sẽ cho ra tập ảnh dưới góc nhìn của xe đua
công thức 1.

Nhằm hỗ trợ cho dự án, Turtlebot cần trang bị các phần cứng sau:

• Động cơ điều khiển: Đây là dạng động cơ liền bánh. Do turtlebot có 3 bánh, với
2 bánh là động cơ, và 1 bánh tự do 360 độ. Nên với sự kết hợp từ hai động cơ, cho
phép robot di chuyển một cách linh hoạt.

• Lidar: Đây là cảm biến để phát hiện các vật cản xung quanh xe, với độ bao phủ
3.6m bao quát 360 độ. Nhờ vậy xe có thể phát hiện được các vật cản xung quanh
mình. LIDAR hoạt động theo nguyên lý bắn các tia laze 360 độ, đồng thời đo các
xung phản xạ, cũng như thời gian và bước sóng của laze đó, từ đó cho ra khoảng
cách đến các vật thể xung quanh. Tuy nhiên, LIDAR rất dễ bị nhiễu bởi môi trường
xung quanh, dù xe đứng yên, thì tập output từ data vẫn xuất hiện các hiện tượng
nhiễu.

• Camera: Việc nhận diện và bám làn, cũng như nhận diện biển báo và tín hiệu giao
thông là cần có đầu vào là bức ảnh góc nhìn của xe.

2.4 Giới thiệu về thị giác máy tính (Computer Vision)


2.4.1 Tổng quan và lịch sử
Thị giác máy tính (computer vision) là một lĩnh vực đã và đang được phát triển
mạnh trên thế giới với nhiều dự án được tiến hành. Khởi nguồn của thị giác máy tính
bắt nguồn từ thí nghiệm của sinh lý thần kinh học năm 1959, thí nghiệm được tiến
hành trên một con mèo, nhằm tìm ra sự tương quan giữa phản ứng của não mèo và sự
thay đổi của hình ảnh nhìn thấy. Từ đó, ông ấy thấy được não bộ khá nhạy cảm với
các góc và đường thẳng, thí nghiệm này đã tạo ra tiền đề và cơ sở của thị giác máy
tính. Cùng những năm đấy, sự ra đời của công nghệ scan ảnh đầu tiên giúp chuyển từ
hình ảnh, sang dạng lưu trữ kỹ thuật số. Tới thập kỷ thứ 8 của thế kỷ 20, cùng với sự

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 11/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

phát triển của khả năng tính toán phần cứng, tầm nhìn được chứng minh là có thứ bậc
(hierarchical), và một kỹ thuật được đề xuất vào năm 1982 đã có khả năng phát hiện
cạnh, đỉnh, vòng cung và các loại cơ bản khác. Đến năm 2001, với sự ra đời lần đầu tiên
của thị giác máy tính nói chung và giải pháp face recognition theo thời gian thực nói riêng.

Cho tới hiện nay, dựa vào khảo sát 2021 của IDG/Insight survey [5], tuy chỉ có 10%
tổ chức đang áp dụng thị giác máy tính, nhưng 81% các tổ chức còn lại đang đầu tư,
nghiên cứu và áp dụng thị giác máy tính. Như vậy, thị trường thị giác máy tính hiện vẫn
đang rộng mở và phát triển.

2.4.2 Định nghĩa


Thị giác máy tính là một lĩnh vực thuộc AI. Như tên gọi của nó, đây được ví như con
mắt của máy tính, là công cụ giúp máy tính trích xuất các đặc trưng, các thông tin từ
một đầu vào dạng ảnh hoặc video.

Hình 10: Thị giác máy tính

Nếu so sánh với não bộ con người, việc nhãn cầu ghi nhận hình ảnh thông qua lớp
thuỷ tinh thể, sau đó hình ảnh được ghi lên thuỳ não, và não bộ tiến hành phân tích và
tiến hành nhận diện, phân biệt. Tuy nhiên, máy tính chỉ là một bộ xử lý tính toán, còn
hình ảnh nhận được, sẽ được ghi nhận thông qua camera hoặc được đọc từ các file ảnh
hoặc video. Từ đó áp dụng các công thức toán và giải thuật nhằm tìm ra các đặc trưng
cần tìm.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 12/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

2.4.3 Phạm vi lĩnh vực thị giác máy tính

Hình 11: Phạm vi của thị giác máy tính [4]

Thị giác máy tính bao gồm một số lĩnh vực con nhỏ như: image processing, object
detection, segmentation, ... và có sự giao thoa với Machine Learning (ML) và Deep Learn-
ing (DL). Cụ thể, nhằm hỗ trợ tối đa các bài toán phân loại của ML hoặc DL, ta cần áp
dụng object detection để đưa ra vùng crop của vật cần đi phân loại, đồng thời để có thể
detect chính xác vật thể mong muốn, việc áp dụng image processing (xử lý ảnh) là không
thể bàn cãi. Ta có thể áp dụng nhiều phương pháp cùng lúc, nhằm loại bỏ những nhiễu
từ môi trường. Bên cạnh đó, Robotics là lĩnh vực áp dụng xử lý ảnh và ML cũng như DL
mạnh mẽ, cụ thể với các bài toán dò làn đường hoặc nhận diện vật cản.

2.4.4 Ứng dụng của thị giác máy tính


Trước độ phổ biến và thị trường rộng lớn còn đang nghiên cứu và áp dụng thị giác
máy tính. Thị giác máy tính đã len lỏi vào cuộc sống hằng ngày, nó giúp ích cho việc tiết
kiệm công sức con người, đồng thời tăng tốc độ xử lý một tác vụ so với con người. Một
số ứng dụng không thể bỏ qua của thị giác máy tính trong một số lĩnh vực:

• Nông nghiệp:

1. Nhận diện sâu bọ và côn trùng: Bằng việc gắn camera tại vườn hoặc nông trại,
ta có thể nhận diện ra các vật thể bất thường, và khác với màu sắc của lá.
2. Nhận diện bệnh của cây: Dựa vào màu sắc và hình dáng của lá cây, mà ta có
thể phân biệt được sức khoẻ của cây trồng.
3. Theo dõi vụ mùa: Bằng việc lắp một camera từ cao nhìn bao quát cánh đồng,
hoặc lấy từ flycam, ta có thể nhận biết được tình trạng chung của ruộng như

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 13/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

sự phát triển của cây (cây đang ở giai đoạn trổ hoa, hay đang ở giai đoạn thu
hoạch)

• Kinh tế và giao lưu buôn bán:

1. Quét mã vạch: Mã barcode và QRcode hiện đang phổ biến. Nhờ vào barcode,
mà nhân viên không cần nhập tay mã sản phẩm tại quầy tính tiền. Mã QR
với vai trò đa dạng từ chuyển tiền trong ví điện tử, hoặc mở link url và nhiều
chức năng khác.
2. Nhận diện hết hàng: Bằng thị giác máy tính: ta có thể nhận thức và phân biệt
được trường hợp một hay nhiều loại sản phẩm đã hết trên kệ, từ đó giúp báo
cho nhân viên ra bổ sung thêm.
3. Khâu kiểm tra chất lượng cho nhà máy, xí nghiệp: Bằng một số tác vụ cơ bản,
ta có thể phần nào kiểm tra được về số lượng viên thuốc trong 1 vỉ có đầy đủ?
hoặc có thể kiểm tra có xuất hiện nấm mốc trong các loại bánh, ....

• Con người:

1. Nhận diện khuôn mặt: Mục tiêu là tìm và lấy các điểm landmark trên khuôn
mặt. Các điểm landmark này gồm các điểm viền khuôn mặt, khoé mắt, mũi,
đường chân mày, môi, và sóng mũi. Máy sẽ duyệt hết bức ảnh, và tìm kiếm
xem có ảnh scope nhỏ thoả landmark của mặt người.
2. Nhân diện cảm xúc: Từ các điểm landmark ở trên, ta sẽ trích xuất đặc trưng
của điểm ở mũi, mí mắt, và các cơ quan bộc lộ cảm xúc khác. Từ đó nhận biết
khuôn mặt đang nhăn, cười, ...
3. Nhận diện human pose: Human pose là những dáng đứng của con người ở dạng
gần giống người que. Việc này đã được áp dụng trong phòng tránh quay bài
trong lớp và một số nghiên cứu về tư thế con người.

• Y tế:

1. Nhận diện ung thư: Đặc biệt khi áp dụng với ung thư da, ngoài ra, ta có thể
nhận diện ung thư thông qua bức ảnh x-quang.
2. Visualize trong CT (Computed Tomography) và MRI (Magnetic Resonance
Imaging) hoặc siêu âm: Khi chụp CT hoặc MRI, các bác sĩ và y tá có thể quan
sát cấu trúc bên trong cơ thể một cách real-time. Tuy nhiên, nhằm giúp hỗ
trợ bác sĩ. Các hình ảnh đã được chia khu và phân vùng với các màu sắc khác
nhau giúp bác sĩ dễ thăm khám bệnh nhân.

• Giao thông

1. Nhận diện tín hiệu giao thông: Từ bức hình, ta có thể nhận diện được các biển
báo và đèn giao thông. (Đây thuộc lĩnh vực xe tự hành)
2. Nhận diện làn đường: Bằng việc xử lý và tìm đường thẳng hoặc cung tròn thể
hiện đường đi của làn đường.
3. Nhận diện chỗ trống trong bãi đỗ xe: Việc này giúp đơn giản công sức quản
lý bãi xe, bởi bãi xe có khả năng phục vụ 100 chiếc. Nhưng trên thực tế, dung

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 14/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

tích của bãi xe chỉ tầm 90 chiếc. Bởi các tài xế thiếu ý thức có thể để xe bị lệch
hoặc xéo, khiến cho xe chiếm nhiều chỗ trống hơn. Ngoài ra việc phát hiện lỗ
trống trong bãi giữ xe, có thể giúp khách hàng tìm đến ô gửi xe trống gần hơn.

2.5 Giới thiệu về học sâu (Deep Learning)


2.5.1 Định nghĩa
Học sâu là một miền phụ của học máy. Với sức mạnh tính toán tăng tốc và tập dữ
liệu lớn, các thuật toán học sâu có thể tự học các mẫu ẩn trong dữ liệu để đưa ra dự đoán.

Về bản chất, có thể coi học sâu là một nhánh của học máy (machine learning) được
đào tạo trên một lượng lớn dữ liệu và xử lý nhiều đơn vị tính toán hoạt động song song
để thực hiện các dự đoán.

Trong nỗ lực tạo ra các hệ thống học tương tự như cách con người học, kiến trúc cơ
bản cho học sâu được lấy cảm hứng từ cấu trúc của bộ não con người. Vì lý do này, khá
nhiều thuật ngữ cơ bản trong học sâu có thể được ánh xạ trở lại thần kinh học. Tương
tự như cách các tế bào thần kinh hình thành các khối xây dựng cơ bản của não bộ, kiến
trúc học sâu chứa một đơn vị tính toán cho phép mô hình hóa các hàm phi tuyến tính
được gọi là perceptron.

2.5.2 Cơ chế hoạt động


Sự kỳ diệu của học sâu bắt đầu từ một perceptron. Tương tự như cách một "nơ-ron"
trong não người truyền xung điện khắp hệ thần kinh của chúng ta, perceptron nhận
danh sách các tín hiệu đầu vào và biến chúng thành tín hiệu đầu ra.

Perceptron nhằm mục đích hiểu biểu diễn dữ liệu bằng cách xếp chồng nhiều lớp,
trong đó mỗi lớp chịu trách nhiệm hiểu một số phần của đầu vào. Một lớp có thể được coi
là một tập hợp các đơn vị tính toán học cách phát hiện sự xuất hiện lặp lại của các giá trị.

Mỗi lớp perceptrons chịu trách nhiệm giải thích một mẫu cụ thể trong dữ liệu. Một
mạng gồm các perceptron này bắt chước cách các tế bào thần kinh trong não tạo thành
một mạng, vì vậy kiến trúc này được gọi là mạng thần kinh (neural networks) hoặc mạng
thần kinh nhân tạo (artificial neural networks).

Sau khi đã biết được cơ chế hoạt động cơ bản của sự bắt đầu này, một số định nghĩa
và cơ chế phức tạp hơn cần phải được làm rõ:

• Mạng thần kinh nhân tạo (Artificial neural network - ANN): Như thể hiện
trong hình dưới đây, mỗi perceptron được tạo thành từ các phần sau:

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 15/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 12: Hình ảnh minh thể hiện cấu tạo của perceptron

1. Bước 1 - Tính tổng trọng số:


– Các đầu vào từ x1 đến xn , cũng có thể được biểu thị bằng một vector X.
Xi biểu thị mục nhập thứ i từ tập dữ liệu. Mỗi đầu vào từ tập dữ liệu chứa
n biến phụ thuộc.
– Các trọng số từ w1 đến wn , có thể được ký hiệu là ma trận W
– Một bias term b (b là hằng số).
2. Bước 2 - Hàm activation:
– Đầu ra của bước 1 hiện được chuyển qua hàm activation. Hàm activation
g là một hàm toán học cho phép chuyển đổi kết quả đầu ra sang định
dạng phi tuyến tính mong muốn trước khi gửi đến lớp tiếp theo. Nó ánh
xạ kết quả tổng đến một phạm vi mong muốn. Điều này giúp xác định
xem neuron có cần được kích hoạt hay không.

– Ví dụ: hàm sigmoid ánh xạ các giá trị vào phạm vi [0,1], rất hữu ích nếu
chúng ta mong muốn hệ thống của mình dự đoán xác suất. Làm như vậy
cho phép lập mô hình các ranh giới quyết định phi tuyến tính phức tạp.

• Mạng lưới thần kinh nông (Shallow neural network): Trong định nghĩa trên,
ta có thể làm rõ các tính toán xảy ra trong mỗi perceptron. Bây giờ, chúng ta sẽ
thấy các perceptron này khớp với mạng như thế nào và quy trình được hoàn thành
như thế nào. Ở dạng cơ bản nhất, một mạng thần kinh bao gồm ba lớp: lớp đầu vào
(input layer) lớp ẩn (hidden layer) và lớp đầu ra (output layer). Như thể hiện trong
hình dưới đây, một mạng chỉ có một lớp ẩn được gọi là shallow neural network.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 16/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 13: Hình ảnh minh hoạ shallow neural network

Các tính toán xảy ra đối với tất cả các neuron trong mạng neuron như đã thảo
luận trên, bao gồm cả lớp đầu ra và một lần truyền như vậy được gọi là lan truyền
thuận. Sau khi hoàn thành một lần chuyển tiếp, lớp đầu ra phải so sánh kết quả
của nó với nhãn sự thật cơ bản thực tế và điều chỉnh trọng số dựa trên sự khác
biệt giữa sự thật cơ bản và giá trị dự đoán. Quá trình này là một quá trình truyền
ngược qua mạng thần kinh và được gọi là lan truyền ngược. Mặc dù toán học đằng
sau lan truyền ngược không được đề cập chi tiết, nhưng những điều cơ bản của quy
trình có thể được phác thảo như sau:

1. Mạng hoạt động để giảm thiểu hàm mục tiêu (objective function), chẳng hạn
như lỗi phát sinh trên tất cả các điểm trong một mẫu dữ liệu.
2. Ở lớp đầu ra, mạng phải tính tổng lỗi (chênh lệch giữa giá trị thực và giá trị
dự đoán) cho tất cả các điểm dữ liệu và lấy đạo hàm của nó đối với các trọng
số ở lớp đó. Đạo hàm của hàm lỗi (error function) đối với các trọng số được
gọi là độ dốc (gradient) của lớp đó.
3. Các trọng số cho lớp đó sau đó được cập nhật dựa trên độ dốc. Bản cập nhật
này có thể là bản thân độ dốc hoặc một yếu tố của nó. Yếu tố này được gọi là
tốc độ học tập (learning rate) và nó kiểm soát độ lớn của các bước mà chúng
ta thực hiện để thay đổi trọng số của mình.
4. Quá trình sau đó được lặp lại cho một lớp trước nó và tiếp tục cho đến khi đạt
được lớp đầu tiên.
5. Trong quá trình này, các giá trị của độ dốc từ các lớp trước đó có thể được sử
dụng lại, làm cho việc tính toán độ dốc trở nên hiệu quả.

Kết quả của một lượt lan truyền xuôi và lan truyền ngược là một sự thay đổi đối
với trọng số của các lớp mạng và đưa hệ thống tiến gần hơn đến việc mô hình hóa

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 17/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

tập dữ liệu được cung cấp cho nó. Bởi vì quá trình này sử dụng độ dốc để giảm
thiểu lỗi tổng thể, nên quá trình hội tụ các tham số của mạng thần kinh đến mức
tối ưu được gọi là độ dốc giảm dần (gradient descent).

• Mạng lưới thần kinh sâu (Deep neural networks): Mạng neural sâu chỉ đơn
giản là mạng neural nông có nhiều hơn một lớp ẩn. Mỗi neuron trong lớp ẩn được
kết nối với nhiều neuron khác. Mỗi mũi tên có một thuộc tính trọng số gắn liền với
nó, thuộc tính này kiểm soát mức độ kích hoạt của neuron đó ảnh hưởng đến những
neuron khác được gắn vào nó.
Từ ’sâu’ trong học sâu được gán cho các lớp ẩn sâu (deep hidden layers) này và đạt
được hiệu quả từ nó. Việc chọn số lớp ẩn phụ thuộc vào bản chất của vấn đề và kích
thước của tập dữ liệu. Hình dưới đây cho thấy một mạng lưới thần kinh sâu với hai
lớp ẩn.

Hình 14: Hình ảnh minh hoạ deep neural network

2.5.3 Ứng dụng


Học sâu (Deep learning) có rất nhiều ứng dụng trong hầu hết các lĩnh vực như chăm
sóc sức khỏe, tài chính và nhận dạng hình ảnh. Chúng ta hãy đi qua một vài ứng dụng
sau:

• Chăm sóc sức khỏe (Healthcare): Với việc tiếp cận accelerated GPU dễ dàng
hơn, và với lượng dữ liệu khổng lồ sẵn có, việc sử dụng học sâu trong lĩnh vực chăm
sóc sức khỏe rất phù hợp. Sử dụng nhận dạng hình ảnh, phát hiện ung thư từ hình
ảnh MRI và tia X đã vượt qua mức độ chính xác của con người. Nghiên cứu chế tạo
thuốc, kết hợp thử nghiệm lâm sàng và bộ gen là những ứng dụng dựa trên chăm
sóc sức khỏe phổ biến khác.

• Xe tự hành (Autonomous driving): Mặc dù xe tự lái là một lĩnh vực rủi ro để


tự động hóa, nhưng gần đây nó đã trở thành hiện thực. Từ việc nhận biết biển báo

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 18/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

dừng cho đến nhìn thấy người đi bộ trên đường, các mô hình dựa trên học sâu được
đào tạo và thử nghiệm trong môi trường mô phỏng để theo dõi tiến trình.

• Thương mại điện tử (E-commerce): Đề xuất sản phẩm là một trong những ứng
dụng học sâu phổ biến và có lợi nhất. Với các đề xuất được cá nhân hóa và chính
xác hơn, khách hàng có thể dễ dàng mua sắm các mặt hàng họ đang tìm kiếm và
có thể xem tất cả các tùy chọn mà họ có thể chọn. Điều này cũng đẩy nhanh doanh
số bán hàng và do đó, mang lại lợi ích cho người bán.

• Trợ lý cá nhân (Personal assistant): Nhờ những tiến bộ trong lĩnh vực học sâu,
việc có một trợ lý cá nhân đơn giản như mua một thiết bị như Alexa hoặc Google
Assistant. Những trợ lý thông minh này sử dụng học sâu trong nhiều khía cạnh
khác nhau như nhận dạng giọng nói và giọng nói được cá nhân hóa, đề xuất được
cá nhân hóa và tạo văn bản.

Rõ ràng, đây chỉ là một phần nhỏ trong vô số ứng dụng mà học sâu có thể áp dụng. Dự
đoán thị trường chứng khoán và dự đoán thời tiết cũng là những lĩnh vực phổ biến không
kém mà học sâu rất hữu ích.

2.5.4 Những thách thức của Deep Learning


Mặc dù các phương pháp học sâu đã trở nên phổ biến rộng rãi trong khoảng 10 năm
trở lại đây, nhưng ý tưởng này đã xuất hiện từ giữa những năm 1950. Những tiến bộ
trong lĩnh vực này trong những năm gần đây chủ yếu là do sự gia tăng sức mạnh tính
toán và các đơn vị xử lý đồ họa (GPU) hiệu suất cao, cùng với sự gia tăng lớn về lượng
dữ liệu mà các mô hình này có sẵn để học, cũng như sự quan tâm và tài trợ từ cộng đồng
để tiếp tục nghiên cứu. Mặc dù học sâu đã phát triển trong vài năm qua, nhưng nó đi
kèm với những thách thức riêng mà cộng đồng đang nỗ lực giải quyết.

• Sự cần thiết của dữ liệu: Các phương pháp học sâu phổ biến hiện nay rất ngốn
dữ liệu và nhiều vấn đề phức tạp như dịch ngôn ngữ không có sẵn các bộ dữ liệu.
Các phương pháp học sâu để thực hiện chuyển đổi ngôn ngữ máy thần kinh (neural
machine translation) sang và từ các ngôn ngữ tài nguyên thấp thường hoạt động
kém. Đồng thời các kỹ thuật như domain adaptation (áp dụng kiến thức thu được
từ việc phát triển các hệ thống tài nguyên cao sang các tình huống tài nguyên thấp)
đã cho thấy nhiều hứa hẹn trong những năm gần đây. Đối với các vấn đề như ước
lượng, dự đoán tư thế (pose estimation), khó có thể tạo ra một khối lượng dữ liệu
lớn như vậy. Dữ liệu tổng hợp mà mô hình kết thúc quá trình đào tạo trên thực tế
khác rất nhiều so với thiết lập "trong tự nhiên" mà mô hình cuối cùng cần thực
hiện.

• Khả năng giải thích và sự công bằng: Mặc dù các thuật toán học sâu đã được
chứng minh là đánh bại độ chính xác ở cấp độ con người, nhưng không có cách rõ
ràng nào để quay lại và đưa ra lý do đằng sau mỗi dự đoán được đưa ra. Điều này
gây khó khăn cho việc sử dụng trong các ứng dụng như tài chính, nơi có nhiệm vụ
cung cấp lý do đằng sau mỗi khoản vay được chấp thuận hoặc từ chối.
Một khía cạnh khác có xu hướng trở thành một vấn đề là sự sai lệch cơ bản trong
chính dữ liệu, điều này có thể dẫn đến hiệu suất kém của mô hình trên các tập hợp
con quan trọng của dữ liệu. Ví dụ các tác nhân học tập sử dụng cơ chế dựa trên

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 19/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

phần thưởng đôi khi ngừng hành xử có đạo đức vì tất cả những gì họ yêu cầu để
giảm thiểu lỗi hệ thống là tối đa hóa phần thưởng mà họ tích lũy được. Mặc dù có
thể chấp nhận được trong một tình huống trò chơi, nhưng những quyết định sai lầm
hoặc phi đạo đức có thể gây ra tác động tiêu cực sâu sắc trong thế giới thực. Một
nhu cầu mạnh mẽ tồn tại để cho phép các mô hình học một cách cân bằng hơn.

2.6 Giới thiệu về học tăng cường (Reinforcement Learning)


2.6.1 Một số thuật ngữ
Dưới đây là định nghĩa của các thuật ngữ hay xuất hiện trong Reinforcement Learning:

• Environment (môi trường): Là không gian mà máy tương tác.

• Agent (máy): Máy quan sát môi trường và sinh ra hành động tương ứng.

• Policy (chiến thuật): Máy sẽ theo chiến thuật như thế nào để đạt được mục đích.

• Reward (phần thưởng): Phần thưởng tương ứng từ môi trường mà máy nhận được
khi thực hiện một hành động.

• State (trạng thái): Trạng thái của môi trường mà máy nhận được.

• Episode (tập): Một chuỗi các trạng thái và hành động cho đến trạng thái kết thúc .

2.6.2 Định nghĩa


Học tăng cường (Reinforcement Learning) là một phương pháp đào tạo học máy dựa
trên việc trao phần thưởng và/hoặc ngăn chặn và trừng phạt những hành vi không mong
muốn. Nói chung, agent có thể nhận thức và giải thích môi trường xung quanh nó, đồng
thời hành động và học hỏi thông qua thử và sai (trial & error).

Cụ thể, Reinforcement Learning là đào tạo các mô hình máy học để đưa ra một chuỗi
các quyết định. Tác nhân học cách đạt được mục tiêu thông qua liên hành động với một
môi trường không chắc chắn, có khả năng phức tạp để quan sát làm thế nào nó đáp ứng.
Trong học tăng cường, một trí tuệ nhân tạo phải đối mặt với một trò chơi với nhiều tình
huống. Nó phải đưa ra một chuỗi các quyết định, và sau mỗi chuỗi đó, agent được một
số điểm. Để agent thực hiện được những điều mà chúng ta mong muốn, điểm có thể là
phần thưởng hoặc hình phạt cho các hành động mà nó thực hiện trong state (trạng thái)
đó của môi trường. Mục tiêu của nó là tối đa hóa tổng phần thưởng.

Mặc dù chúng ta đã đặt ra chính sách phần thưởng, đó là quy tắc của trò chơi, tuy
nhiên ta không đưa ra gợi ý hay gợi ý nào cho agent về cách giải quyết trò chơi. Tùy thuộc
vào mô hình để tìm ra cách thực hiện nhiệm vụ để tối đa hóa phần thưởng, bắt đầu từ
những lần thử sức hoàn toàn ngẫu nhiên và kết thúc bằng những chiến thuật tinh vi và
kỹ năng có thể vượt trội hơn con người. Bằng cách tận dụng sức mạnh của tìm kiếm và
nhiều thử nghiệm, học tăng cường là hiện là cách hiệu quả nhất để gợi ý sự sáng tạo của
agent. Trái ngược với con người, trí thông minh nhân tạo có thể thu thập kinh nghiệm từ
hàng nghìn gameplays song song nếu một thuật toán Reinforcement Learning được chạy
trên cơ sở hạ tầng máy tính đủ mạnh.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 20/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

2.6.3 Lý do nên sử dụng học tăng cường


Học tăng cường gần với Trí tuệ tổng hợp nhân tạo (Artificial General Intelligence -
AGI), vì nó sở hữu khả năng tìm kiếm một mục tiêu dài hạn trong khi khám phá những
khả năng khác nhau một cách tự động. Một số lợi ích của Học tăng cường bao gồm:

• Học tăng cường có thể áp dụng cho nhiều loại phức hợp các vấn đề không
thể giải quyết bằng các thuật toán học máy khác. Ví dụ: để điều khiển chuyển
động của robot hoặc chiến thuật của bot trong trò chơi điện tử, bằng cách sử dụng
thuật toán học máy hoặc học sâu khác, robot chỉ có thể di chuyển không tự nhiên.

• Tập trung vào vấn đề một cách tổng thể: Thuật toán học máy thông thường
được thiết kế để vượt trội trong các nhiệm vụ cụ thể và chuyên biệt, mà không có
khái niệm về nhiệm vụ tổng thể. Mặt khác, học tăng cường không phân chia vấn đề
thành các bài toán con; nó trực tiếp hoạt động để tối đa hóa phần thưởng dài hạn.
Nó có mục đích rõ ràng, hiểu mục tiêu và có khả năng đánh đổi phần thưởng ngắn
hạn cho lợi ích lâu dài.

• Không cần một bước thu thập dữ liệu riêng biệt: Trong học tăng cường, dữ
liệu huấn luyện là thu được thông qua sự tương tác trực tiếp của tác nhân với môi
trường. Tập huấn dữ liệu là trải nghiệm của tác nhân học tập, không phải là tập
hợp dữ liệu riêng biệt phải được đưa vào thuật toán. Điều này làm giảm đáng kể
gánh nặng cho việc huấn luyện.

• Hoạt động trong môi trường động, không chắc chắn: Thuật toán được sử
dụng trong học tăng cường vốn đã thích nghi và được xây dựng để đáp ứng với
những thay đổi trong môi trường. Trong Học tăng cường, vấn đề thời gian và kinh
nghiệm mà agent thu thập không được phân phối độc lập và giống hệt nhau - không
giống như các thuật toán học máy thông thường. Vì chiều thời gian được chôn sâu
trong cơ chế của học tăng cường, việc học là thích nghi bẩm sinh.

2.6.4 So sánh với các kĩ thuật học máy khác

Hình 15: Hình ảnh minh hoạ sự khác biệt giữa các kĩ thuật học máy

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 21/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Sau đây là so sánh sự khác biệt giữa các kĩ thuật học máy: Học tăng cường (Re-
inforcement Learning), học có giám sát (Supervised Learning) và học không giám sát
(Unsupervised Learning).

• Học có giám sát (Supervised Learning): Mặc dù cả học có giám sát và học
tăng cường đều sử dụng ánh xạ giữa đầu vào và đầu ra, nhưng không giống như
học có giám sát trong đó phản hồi được cung cấp cho tác nhân là tập hợp các hành
động chính xác để thực hiện một nhiệm vụ, học tăng cường sử dụng phần thưởng
và hình phạt làm tín hiệu cho hành vi tích cực và tiêu cực.

• Học không giám sát (Unsupervised Learning): So với học không giám sát,
học tăng cường khác nhau về mục tiêu. Mặc dù mục tiêu của học không giám sát
là tìm ra những điểm tương đồng và khác biệt giữa các điểm dữ liệu, nhưng trong
trường hợp học tăng cường, mục tiêu là tìm ra một mô hình hành động phù hợp để
tối đa hóa tổng phần thưởng tích lũy của tác nhân.

2.6.5 Ứng dụng thực tế


Vì học tăng cường yêu cầu rất nhiều dữ liệu thông qua việc tương tác, do đó, nó được
áp dụng nhiều nhất trong các lĩnh vực có sẵn dữ liệu mô phỏng như trò chơi, người máy.

• Học tăng cường được sử dụng khá rộng rãi trong việc xây dựng AI để chơi trò chơi
trên máy tính. Alphago Zero là chương trình máy tính đầu tiên đánh bại một nhà
vô địch thế giới trong trò chơi cờ vây cổ đại của Trung Quốc. những người khác bao
gồm các trò chơi Atari, Backgammon, v.v.

• Trong chế tạo robot và tự động hóa công nghiệp, học tăng cường được sử dụng
để cho phép robot tạo ra một hệ thống điều khiển thích ứng hiệu quả cho chính
nó, hệ thống này học hỏi từ kinh nghiệm và hành vi của bản thân nó. Nghiên cứu
của DeepMind về "Deep Reinforcement Learning for Robotic Manipulation with
Asynchronous Policy updates" là một ví dụ điển hình về điều tương tự.

• Các ứng dụng khác của học tăng cường bao gồm các công cụ tóm tắt văn bản trừu
tượng, tác nhân hộp thoại (văn bản, lời nói) có thể học từ các tương tác của người
dùng và cải thiện theo thời gian, học các cách điều trị tối ưu trong chăm sóc sức
khỏe và các tác nhân dựa trên học tăng cường cho giao dịch chứng khoán trực tuyến.

2.7 Giới thiệu về Học chuyển giao (Transfer Learning)


2.7.1 Định nghĩa Transfer Learning
Dựa theo định nghĩa của sách Deep Learning (Adaptive Computation and Machine
Learning series): "Transfer Learning là cải tiến việc học trong một nhiệm vụ mới thông
qua việc chuyển giao kiến thức từ một nhiệm vụ liên quan đã được học."[16]. Hay một
góc nhìn khác về Transfer Learning từ cuốn Handbook Of Research On Machine Learning
Applications and Trends: Algorithms, Methods and Techniques là: "Transfer Learning là
cải tiến việc học trong một nhiệm vụ mới thông qua việc chuyển giao kiến thức từ một
nhiệm vụ liên quan đã được học."[17].

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 22/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hay nói đơn giản hơn, Transfer Learning (TL) là một phương pháp Machine Learning
trong đó một mô hình được phát triển cho một nhiệm vụ được sử dụng lại làm điểm bắt
đầu cho một mô hình trong một nhiệm vụ khác.

Hình 16: Hình ảnh minh hoạ sự khác biệt giữa kĩ thuật Machine Learning truyền thống và
Transfer learning

Transfer Learning đã trở nên rất phổ biến nhờ nguồn tài nguyên khổng lồ cần thiết
để đào tạo các mô hình Deep Learning, đặc biệt là trong các lĩnh vực:

• Xử lý ngôn ngữ tự nhiên (NLP): Để giải quyết các vấn đề sử dụng văn bản
làm đầu vào hoặc đầu ra. Trong lĩnh vực này, có một số thuật toán hiệu quả tạo
ra các biểu diễn hoặc văn bản phân tán, chẳng hạn như từ hoặc câu. Các giải pháp
này thường được phát hành dưới dạng các mô hình đã được đào tạo trước, được
đào tạo trên một kho tài liệu văn bản rất lớn.

• Thị giác máy tính (CV): Trong đó việc huấn luyện toàn bộ Convolutional Neural
Network (CNN) từ đầu (với khởi tạo ngẫu nhiên) là điều rất bất thường, vì tương
đối hiếm khi có một tập dữ liệu đủ kích thước. Thay vào đó, người ta thường huấn
luyện trước một CNN trên một tập dữ liệu rất lớn và sau đó sử dụng mô hình đó
làm công cụ khởi tạo hoặc công cụ trích xuất tính năng cố định cho nhiệm vụ cần
được thực hiện. Bằng cách này, phần lớn CNN đã được đào tạo trước có thể được
sử dụng trên các mô hình mới thông qua Transfer Learning, chỉ cần đào tạo lại một
phần của nó.

2.7.2 Cách thức hoạt động của Transfer Learning


Mặc dù có nhiều cách tiếp cận khác nhau, hai trong số những cách tiếp cận chính là:

1. Feature-based: Không sửa đổi mô hình ban đầu và cho phép các tác vụ mới được
hưởng lợi từ các tính năng phức tạp đã học được từ các tác vụ trước đó. Tuy nhiên,
các tính năng này không chuyên dụng cho tác vụ mới và thường có thể được cải
thiện bằng cách tinh chỉnh.

2. Fine-tuning: Sửa đổi các tham số của một mô hình hiện có để huấn luyện một tác
vụ mới. Mô hình gốc sẽ được "đóng băng" và được đào tạo lại trên dữ liệu mới,
giúp tăng hiệu suất cho tác vụ mới.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 23/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 17: Mô tả cơ chế hoạt động của Original Model, Fine-tuning và Feature Extraction

Những cách tiếp cận này có thể được tích hợp trong Transfer Learning, tạo ra quy
trình công việc sau:

1. Lấy các lớp từ một mô hình được đào tạo trước đó.

2. Đóng băng chúng để tránh thay đổi bất kỳ thông tin nào chúng chứa trong các vòng
huấn luyện trong tương lai.

3. Thêm một số lớp mới, có thể huấn luyện lên trên các lớp đã đóng băng. Các layers
này sẽ học cách biến các tính năng cũ thành dự đoán trên tập dữ liệu mới.

4. Huấn luyện các lớp mới trên tập dữ liệu tùy chỉnh. Tại bước này, người ta có thể
thực hiện tinh chỉnh mô hình: giải phóng toàn bộ mô hình thu được ở trên (hoặc
một phần của mô hình) và đào tạo lại mô hình trên dữ liệu mới với tốc độ học
rất thấp. Điều này có khả năng đạt được những cải tiến có ý nghĩa bằng cách điều
chỉnh dần dần các tính năng được đào tạo trước với dữ liệu mới.

Sau đây là workflow như một cách tiếp cận chung để thực hiện Transfer Learning

Hình 18: Workflow tổng quát cho việc huấn luyện sử dụng Transfer Learning

2.7.3 Ưu/nhược điểm của Transfer Learning


Ưu điểm

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 24/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Transfer Learning là một cách để tiết kiệm thời gian , nguồn lực và đạt được hiệu suất
tốt hơn trong việc huấn luyện mô hình. Mặc dù không rõ ràng rằng sẽ có lợi khi sử dụng
TL trong cho đến khi mô hình được phát triển và đánh giá, nhưng có một số lợi ích có
thể có như:

• Kỹ năng ban đầu cao hơn: Kỹ năng ban đầu (trước khi tinh chỉnh mô hình)
trên mô hình nguồn cao hơn so với cách truyền thống.

• Độ dốc cải thiện cao hơn: Tốc độ cải thiện kỹ năng trong quá trình đào tạo mô
hình nguồn cao hơn so với cách truyền thống.

• Hội tụ nhanh hơn: Kỹ năng hội tụ của mô hình được đào tạo tốt hơn so với cách
truyền thống.

Hình 19: Workflow tổng quát cho việc huấn luyện sử dụng Transfer Learning

Cả ba lợi ích có thể được thấy rõ nhất nếu:

• Có sẵn dữ liệu đủ lớn để cải tiến mô hình, và sau đó sử dụng cho một nhiệm vụ
khác.

• Có sẵn mô hình phù hợp đã được pre-trained và sử dụng nó như một điểm tựa và
dùng nó để chỉnh sửa, chuyển giao tri thức cho bài toán chúng ta cần.

Nhược điểm

Mặc dù mục tiêu của Transfer Learning là cải thiện hiệu suất của một mô hình, nhưng
nó cũng có thể gặp phải các vấn đề sau:

• Làm giảm hiệu suất: Nếu nhiệm vụ Transfer Learning hoàn thành với hiệu suất
hoặc độ chính xác của mô hình mới giảm, thì nó sẽ tạo ra hiệu ứng gọi là chuyển
giao tiêu cực (negative transfer). Negative Transfer có thể được gây ra bởi sự khác
biệt quá lớn của các problem domains hoặc mô hình không có khả năng huấn luyện
cho tập dữ liệu của domain mới.

• Overfitting: Điều này xảy ra khi mô hình mới học các chi tiết và nhiễu từ những dữ
liệu huấn luyện trước đó có tác động không tốt đến kết quả đầu ra của nó.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 25/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

• Xu hướng phân phối, định kiến xã hội, các dữ liệu đào tạo có khả năng tiết lộ và các
tác hại có thể xảy ra khác: Trong trường hợp các mô hình ngôn ngữ được pre-trained
của NLP, một loại tác hại cụ thể là tạo ra ngôn ngữ độc hại, bao gồm ngôn từ kích
động thù địch, lăng mạ, tục tĩu và đe dọa.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 26/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

3 Kiến trúc hệ thống


Dựa theo sự tính toán của nhóm, kiến trúc chung của hệ thống sẽ có cấu trúc như
sau:

Hình 20: Cấu trúc của toàn bộ hệ thống

Trong đó các module hiện tại được hiện thực và có các chức năng sau (lưu ý phần
trình bày chi tiết bên dưới sẽ có nhiều cách tiếp cận cho một vấn đề, và cách tiếp cận
cuối cùng sẽ được áp dụng vào phiên bản hiện tại)

• Module phát hiện làn đường: Nhận đầu vào là ảnh trực tiếp từ camera, module
sẽ xử lý và tìm hai phương trình đường thẳng đại diện cho hai làn đường theo góc
nhìn bird eye view và gửi đi toạ độ bốn vị trí đầu mút của mỗi làn đường.

• Module né vật cản: Đưa ra hành vi di chuyển của robot dựa vào module phát
hiện làn đường, thông tin về biển báo, đèn giao thông và các tín hiệu lidar. Kết quả
của module này là hành vi di chuyển của robot.

• Module nhận diện và phân loại biển báo giao thông: Sử dụng YOLO (You
Only Look Once) để tìm kiếm vị trí tồn tại biển báo và model CNN để phân biệt
kích thước biển báo. Sau đó gửi cho module né vật cản thông tin của biển báo gần
nhất.

• Module nhận diện & phân loại đèn giao thông: Sử dụng xử lý ảnh để tìm
kiếm và gửi thông tin về kích thước và màu của đèn giao thông hiện tại đang được
thấy bởi camera.

3.1 Module nhận diện làn đường


3.1.1 Giới thiệu chức năng
Module nhận diện làn đường là một trong những module nhận dữ liệu trực tiếp từ
camera. Sau quá trình xử lý, module sẽ có được phương trình đường thẳng của hai làn

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 27/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

đường được hai làn đường dự đoán và trả về dữ liệu cần thiết cho các module cần dữ liệu
này.

3.1.2 Mô tả chi tiết


Ta có thể tưởng tượng Module nhận diện làn đường như một hàm có đầu vào và đầu
ra như sau:
• Input: Hình ảnh được trích xuất từ camera với kích cỡ 640 × 480 × 3
• Output: Toạ độ 4 điểm:
– T L(x0 , y0 ), BL(x1 , y1 ): Lần lượt là điểm đầu và cuối của đoạn thẳng thể hiện
làn đường bên trái
– T R(x2 , y2 ), BR(x3 , y3 ) : Lần lượt là điểm đầu và cuối của đoạn thẳng thể hiện
làn đường bên phải
Dữ liệu bên trong module sẽ đi qua các bước sau:

Hình 21: Cấu trúc của module nhận diện làn đường

• Tiền xử lý (thời gian không đáng kể): Đưa ảnh từ camera thành ảnh Gray có kích
thước 128x128, ép kiểu thành số float32 và sẵn sàng đưa vào model.
• UNet model (khoảng 80ms với GTX1050 và CUDA2 10.2): Segmentation những
vùng có làn đường và trả về một bức ảnh gray 128x128.
• Backend (khoảng 20ms): Sử dụng dữ liệu trả về bởi model, lọc những nhiễu và xử
lý để cho ra phương trình đường thẳng hai làn đường.
• Bird eye view (thời gian không đáng kể): Chuyển hai đường thẳng từ góc nhìn
camera sang góc nhìn bird eye view, gửi tọa độ của 4 điểm TopLeft (TL), TopRight
(TR), BottomLeft (BL), BottomRight(BR).
Để tối đa hoá thời gian xử lý, một máy tính sử dụng ubuntu sẽ lấy ảnh từ camera
và gửi TCP đến máy window có CUDA để tốc độ xử lý nhanh hơn. So với việc sử dụng
CPU tốn 350ms, giờ đây nhóm chỉ cần 78ms cho xử lý và 2ms cho truyền nhận dữ liệu.

Lưu ý rằng hình minh hoạ bên trên chỉ là ví dụ của hướng tiếp cận thứ hai (tham
khảo 4.1.5). Với những hướng tiếp cận khác nhau, dữ liệu ở mỗi bước có thể khác nhau
nhưng kiến trúc sẽ được giữ nguyên.
2
một kiến trúc tính toán song song do NVIDIA phát triển

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 28/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

3.2 Module tránh vật cản


3.2.1 Giới thiệu chức năng
Mục đích của khối này là đưa ra quyết định điều khiển vận tốc và hướng của xe giúp
đảm bảo:
1. Né được các vật cản trên đường với tỉ lệ thành công cao (mục tiêu hiện tại là né
được các vật cản tĩnh và động. Đối với vật cản động thì có khả năng né phía trước
mặt và bên hông robot robot với tốc độ chậm)

2. Ngoài né được vật cản, robot có khả năng né vật cản ở khoảng cách an toàn.

3. Ưu tiên việc chạy vào giữa mỗi làn để đảm bảo tối ưu được đường đi, và đúng luật
giao thông.

4. Chạy được hết quãng đường và đạt đến đích trong một môi trường không xác định,
xử lý và đưa ra quyết định chỉ dựa vào các đầu vào sẵn có.

5. Trọng tâm của xe phải luôn được giữ bên trong làn đường.

3.2.2 Mô tả chi tiết

Hình 22: Hình ảnh giới thiệu tổng quan về module né vật cản

Ở module tránh vật cản này, mục đích chính là có thể né được các vật cản có chiều
cao lớn hơn hoặc bằng so với vị trí đặt LIDAR. Khối này có thể được biểu diễn input đầu
vào và đầu ra như sau:
• Input:

– Toạ độ 4 điểm của làn đường: Tín hiệu này sẽ được gửi liên tục từ module
phát hiện làn đường. Module này sẽ đảm bảo những tín hiệu gửi là đúng đắn,
những tín hiệu lỗi sẽ được module phát hiện làn đường bỏ qua và không gửi.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 29/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Chính vì vậy, nếu không nhìn thấy làn đường hoặc việc xử lý bị lỗi, ta sẽ không
nhận được dữ liệu về 4 điểm này. Thay vào đó ta sẽ tiến hành tính toán dựa
trên những dữ liệu cũ.
– Thông tin khoảng cách từ robot đến vật thể xung quanh: Tín hiệu này được
gửi từ phần cứng lidar với tốc độ gửi 20 FPS, gồm thông tin về khoảng cách
từ robot đến các 360◦ xung quanh. Khoảng cách tối đa mà lidar detect được
là 3.5m.
– Tín hiệu loại biển báo: Tín hiệu này được gửi từ khối nhận diện biển báo giao
thông. Thông tin này sẽ không được gửi liên tục, thay vào đó, khi robot tiến
vào đủ gần với biển báo, hệ thống sẽ thống kê tất cả các biển báo đã nhìn thấy
và đưa ra quyết định dựa trên biển báo được nhìn thấy nhiều nhất. Nhờ việc
giảm tần số gửi, đã giảm tải cho việc truyền nhận gói tin của khối này.

• Output: Output sẽ được gửi trực tiếp đến topic cmd_vel nhằm điều khiển robot
di chuyển:

– v_linear: Vận tốc đi thẳng của robot (m/s)


– v_angular: vận tốc xoay của robot (rad/s)

3.3 Module nhận diện và phân loại biển báo giao thông
3.3.1 Giới thiệu chức năng
Trong thực tế, hệ thống hỗ trợ điều hướng sẽ phải xử lý những tín hiệu liên quan
đến biển báo giao thông để có thể đưa ra các quyết định tuân thủ đúng luật giao thông.
Module này nhằm mục đích mô phỏng lại sự khả thi của hệ thống hỗ trợ của nhóm khi
áp dụng vào thực tế khi phải xử lý các tín hiệu giao thông.

3.3.2 Mô tả chi tiết


Nhằm việc nhận diện biển báo một cách chính xác, nhóm đã áp dụng mô hình học
sâu CNN (Convolutional Neural Network). Tuy nhiên, việc này yêu cầu lượng lớn dữ liệu
trong quá trình training.

Nhằm giảm tải lượng dữ liệu cần thiết nhóm đã lọc lại tập dữ liệu và giữ lại 5 biển
báo, bao gồm:

• Biển báo cấm

• Biển báo dừng

• Biển báo đi thẳng

• Biển báo quẹo trái

• Biển báo quẹo phải

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 30/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 23: 5 loại biển báo được sử dụng trong đồ án

Ta có thể coi đây là một hàm nhận và cho ra đầu ra như sau:

• Input: Hình ảnh 640 × 480 × 3 được trích xuất từ camera của robot.

• Output: Mã định danh của biển báo (0: dừng, 1: đi thẳng, 2: quẹo trái, 3: quẹo
phải, 4: cấm).

Lưu ý rằng, ở module nhận diện và phân loại biển báo giao thông, bên cạnh việc phát
hiện vị trí biển báo và đưa vào phân loại ý nghĩa biển báo thành công, ta còn phải định
nghĩa một số hành vi tương ứng với biển báo giao thông nhất định. Nhóm có định nghĩa
một số luật cơ bản như sau khi gặp các biển báo:

• Biển báo dừng: Hành vi robot sẽ dừng.

• Các biển báo còn lại: Hành vi robot sẽ tiếp tục đi thẳng.

3.4 Module nhận diện và phân loại tín hiệu đèn giao thông
3.4.1 Giới thiệu chức năng
Lấy ngữ cảnh xe tự hành di chuyển trong một đô thị thông minh. Nếu đô thị đó chỉ
gồm làn đường và biển báo, thì sự tham gia của người đi bộ sẽ khiến hành vi của xe bị
thay đổi và thậm chí là xe có hành vi lạ thường. Bởi, xe tuy có thể né và tránh va chạm
với người băng qua đường bằng module vật cản. Tuy nhiên, khi này xe sẽ có xu hướng
lạng lách để đi tới trước mà không đụng vào người đi bộ (vật cản). Như vậy, nhằm tạo
cho người đi bộ có thể qua đường một cách thoải mái, nhóm đã lấy ý tưởng từ Phố đi bộ
Nguyễn Huệ, nơi mà người đi bộ muốn băng qua đường có thể bấm nút. Từ đó trụ đèn
giao thông sẽ chuyển dần qua đèn vàng và từ đó là đèn đỏ trong khoảng 15 giây (một
khoảng thời gian vừa đủ để người đó băng qua đường), sau đó đèn sẽ tự động chuyển
xanh lại. Nhằm giải quyết vấn đề đó, nhóm đã xây dựng module nhận diện tín hiệu đèn
giao thông này.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 31/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

3.4.2 Mô tả chi tiết

Hình 24: Kiến trúc khối đèn giao thông

Như vậy đầu vào và đầu ra của khối này bao gồm:

• Input: Ảnh RGB có kích thước 640x480, đây là ảnh lấy trực tiếp từ camera của
robot.

• Output: Tín hiệu đèn mà xe bắt được: "red", "green", "yellow". Trong trường hợp
không có trụ đèn giao thông, hay không phát hiện được đèn, khối sẽ không gửi bất
kỳ tín hiệu kết quả nào. Và ngược lại, khi tín hiệu đèn giao thông đủ lớn (robot đã
ở đủ gần với đèn giao thông), robot sẽ gửi tín hiệu nhìn thấy một cách liên tục về
khối điều khiển. Ở khối này, ta không áp dụng cơ chế gửi tín hiệu một lần như khối
biển báo. Bởi đèn giao thông có thể chuyển màu, chính vì vậy, ta cần gửi tính hiệu
một cách liên tục khi robot đã ở đủ gần với biển báo.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 32/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4 Hiện thực hệ thống


4.1 Module nhận diện làn đường
4.1.1 UNet model
Trong Computer Vision có ba bài toán chính, đó là Image Classification, Image
Detection và Image Segmentation. Ta có thể hiểu đơn giản về sự khác nhau đó thông
qua hình sau.

Hình 25: Phân biệt image segmentation và những bài toán khác

Đối với bài toán classification, ta quan tâm sự xuất hiện của các vật thể trong
hình ảnh. Đối với bài toán detection ta xác định vị trí của đối tượng trong hình ảnh
sau đó vẽ 1 boundary box xung quanh đối tượng. Còn đối với bài toán segmentation
ta cần phải xác định class cho mỗi pixel trong bức ảnh. Kỹ thuật chung khi ta xây
dựng mạng cho bài toán này là ta sẽ xây dựng mạng gồm 2 thành phần encoder và decoder.

Hình 26: cấu trúc chung của bài toán Segmentation

Trong đó phần encoder dùng để giảm chiều dài và chiều rộng của ảnh bằng việc sử
dụng các lớp convolution và các lớp pooling. Trong đó phần decoder dùng để phục hồi lại
kích thước ban đầu của ảnh. Phần encoder thường chỉ là một mạng CNN thông thường
nhưng bỏ đi những layer fully connected cuối cùng. Chúng ta có thể sử dụng những mạng
có sẵn trong phần encoder như VGG16, VGG19, Alexnet,... Còn decoder tùy vào các kiến
trúc mạng mà ta có thể xây dựng khác nhau. Ví dụ như mạng FCN (Fully Convolutional
Network) có kiến trúc như bên dưới.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 33/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 27: Kiến trúc mạng FCN

Trong kiến trúc FCN, có 3 cách để xây dựng phần decoder tạo thành 3 loại FCN
khác nhau là FCN32, FCN16, FCN8. Đối với FCN32, sau khi đến lớp pooling cuối cùng
(trong ví dụ trên là lớp pooling thứ 5) ta chỉ cần upsample về kích thước ban đầu.
Đối với FCN16 thì tại lớp pooling thứ 5 ta nhân 2 lần để được kích thước bằng với
kích thước của lớp pooling thứ 4, sau đó add 2 lớp vào với nhau rồi upsample lên bằng
với kích thước ảnh ban đầu. Tương tự với FCN8 ta kết nối tới lớp pooling thứ 3. Còn
trong kiến trúc mạng Unet ta xây dựng phần decoder gần như đối xứng với phần decoder.

Hình 28: Kiến trúc mạng UNet

Trong phần decoder ngoài việc upsample ta còn thực hiện kết nối đối xứng với các
layer phần encoder cho đến tận layer cuối cùng. Rõ ràng nếu như ta upsample ngay từ
layer cuối cùng ở phần encoder thì thông tin của bức ảnh ban đầu bị mất đi rất nhiều.
Do đó việc ta kết nối đối xứng với phần encoder sẽ giúp ta phục hồi lại thông tin đã mất
tại các lớp pooling. Nhìn chung, UNet là một model tương đối chậm (So với các model
tốc độ cao trên dataset CULane, các kiến trúc đã khảo sát bao gồm các biến thể của
DLA, ResNet, ENet, SCNN và ERFNet). Tuy nhiên độ chính xác và khả năng lập luận
các trường hợp mới của UNet sẽ cao hơn, điều sẽ ảnh hưởng đến sự an toàn của thiết bị
nếu đồ án này được áp dụng vào thực tế.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 34/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.1.2 Hàm loss Focal Tversky


Dựa theo bài báo của tác giả Nabila Abraham và Naimul Mefraz Khan về việc thiết
kế hàm loss tối ưu quá trình segmentation UNet cho mục đích segmentation ảnh y tế.
Nhóm đã tham khảo và áp dụng vào đồ án với mong đợi cải thiện độ chính xác và giảm
số epoch cần huấn luyện. Model sử dụng phương pháp của A.Nabila hiện đang có điểm
Dice cao nhất trong danh sách các phương pháp segmentation trong ảnh y tế. Nguyên lý
của hàm loss Focal Tversky như sau. Trong cộng đồng y tế, hệ số Dice (DSC) được sử
dụng rộng rãi trong việc đánh giá độ hiệu quả các bài toán segmentation. Biến thể DSC
cho bài toán 2 label được cho trong công thức 1, trong đó gic ∈ (0, 1) và pic ∈ [0, 1] tương
ứng đại diện cho nhãn mong đợi và nhãn dự đoán. N là tổng số pixel trong một ảnh, ϵ là
hằng số đảm bảo sự ổn định, tránh trường hợp chia cho 0.
PN
pic gic + ϵ
DSCc = PN i=1
i=1 pic + gic + ϵ

Phương pháp phổ biến để giảm thiểu sự mất cân bằng giữa số lượng label là đưa ra trọng
số wc cho mỗi label c, tỉ lệ nghịch với tần số của label mà nó đại diện. Dó đó hàm mất
mát tuyến tính Dice (DL) được định nghĩa là min các pixel của quá trình overlap ảnh
mong đợi và ảnh dự đoán.
X
DLc = 1 − DSCc
c

Điều đáng lưu ý là hàm DL đối xử như nhau giữa hai vùng False Positive (FP) và False
Negative (FN). Do đó các kết quả tuy có độ chính xác cao nhưng recall thấp. Với những
data có độ bất cân bằng giữa các class lớn và vùng Region of Interest (ROI) nhỏ. FN cần
có trọng số cao hơn FP để cải thiện recall. Do vậy hàm Tversky Loss function (TL) được
đề xuất, cho phép thay đổi linh hoạt trọng số giữa FP và FN.
PN
pic gic + ϵ
T Ic = PN Pi=1
N PN
i=1 pic gic + α i=1 pic gic + β i=1 pic gic + ϵ

Trong đó pic là xác suất pixel i có label c và pic là xác suất pixel i không có label c. tương
tự với gic và gic . các tham số alpha và beta có thể thay đổi trong trường hợp mất cân
bằng label. Tversky index được áp dụng trong hàm loss TL bằng cách tối thiểu hàm:
X
1 − T Ic
c

Một vấn đề nữa với hàm DL là model sẽ gặp khó khăn trong việc segmentation những
vùng nhỏ vì điều đó không ảnh hưởng đáng kể lên hàm loss. Hàm loss focal Tversky (FTL)
được đề xuất để giải quyết vấn đề này. FTL có tham số y để kiểm soát giữa việc huấn
luyện background (dễ) và vùng cần segmentation (khó). tham số focal kiểm soát entropy
sụt giảm để tập trung vào các label khó với xác suất dự đoán đúng thấp hơn các vùng
còn lại. Ý tưởng tương tự cũng đã được mở rộng trong các bài báo cùng khoảng thời
gian của A.Nabila và cộng sự khi áp dụng luỹ thừa cho Dice hoặc kết hợp giữa dice và
cross-entropy. Sau cùng, tác giả đã để xuất hàm Forcal Tversky Loss (FTL) dạng tổng
quát, hàm mà nhóm sẽ dùng trong đề tài, như sau:
X 1
F T Lc = (1 − T Ic ) γ
c

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 35/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

trong hàm FTL, y nằm trong khoảng [1,3]. Trong quá trình huấn luyện, nếu pixel được
dự đoán sai với hệ số Tversky cao, FTL sẽ không bị ảnh hưởng lớn. Tuy nhiên nếu sai
lầm tương tự xảy ra đối với pixel có hệ sộ Tversky nhỏ, FTL sẽ giảm đáng kể.

Khi y>1, hàm số sẽ tập trung hơn vào các dự đoán sai. Nhóm đã thống kê một vài
trường hợp của FTL khi model gần hội tụ với hệ số y và Tversky. Kết quả quan sát này
được thể hiện trong hình 1. Dựa theo kết quả thống kê, nhóm nhận thấy hiệu suất tốt
nhất khi y= 43 . Ngoài ra, tác giả đề xuất việc áp dụng FTL với các layer trung gian nhưng
TL cho layer cuối cùng để hiệu suất tối hưu nhất có thể, tuy nhiên nhóm vẫn chưa nghiên
cứu được cách áp dụng vào source code và do đó FTL sẽ được áp dụng cho toàn bộ model.

Hàm mất mát có ba tham số là a,b và y. với a=b=0.5, FTL đơn giản hóa thành DSC,
khi y=1, FTL đơn giản hóa thành TL.

Tóm lại, hàm Focal Tversky loss được đề xuất dựa theo hàm DSC, là tổng độ
chênh lệch theo pixel giữa ảnh mong đợi và dự đoán. Với sự bổ sung các tham số a
và b giúp model tập trung hơn vào vùng FP hay FN. Và tham số y giúp model quan
tâm hơn những vùng segmentation có kích thước nhỏ. Trong phạm vi đồ án, ở model
sử dụng trong quá trình demo, nhóm sử dụng hàm FTL có tham số a=0.2, b=0.8, và y= 47 .

Dưới đây là so sánh UNet với cùng tập dữ liệu huấn luyện và số epoch, với hàm loss
Tversky(a=0.2,y= 74 ) và hàm loss Adam(learning rate = 3.10−5 ). Ta train với 64 epoch,
mỗi epoch có 1024 ảnh ngẫu nhiên được lấy từ dataset 2500 bức và trải qua bước Data
augmentation để tránh model overfit.

Hình 29: So sánh giữa hàm loss Tversky và Adam

Dễ thấy với Tversky, hàm loss và accuracy hội tụ nhanh hơn. Vì datatrain được tạo
mới sau mỗi epoch do đó cả hai model đều có accuracy hội tụ về 0.99, nhưng Tversky cho
tốc độ hội tụ nhanh hơn.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 36/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.1.3 Các phương hướng tiếp cận

Hình 30: Ba phương pháp label được đề xuất

Để label làn đường, Ta có ba cách tiếp cận khác nhau, mỗi cách có những ưu nhược
điểm như sau:

• Label tất cả các pixel thuộc bề mặt của tất cả làn đường: Đây là phương
pháp đầu tiên được thử nghiệm, tuy nhiên vấn đề sẽ phát sinh nếu tồn tại nhiều
làn đường trong một khung hình, hoặc đường có ngã ba, ngã tư. Hơn nữa, Unet
gặp nhiều khó khăn trong việc predict một bức ảnh có lượng label tương đối lớn
so với bề mặt bức ảnh. Với cùng một lượng ảnh train, phương pháp này cho ra kết
quả không khả quan nhất, do đó nhóm quyết định không tiếp tục. Nhóm gọi đây là
hướng tiếp cận 0.

• Label tất cả các pixel thuộc bề mặt của làn đường mà xe đang chạy:
Phương pháp này có ưu điểm là giảm tỉ lệ label là "yes" so với tổng số pixel, sau
khi thử nghiệm, nhóm đã thử phát triển phương pháp này và gọi là Hướng tiếp
cận 1 (mục 4.1.4).

• Label tất cả các pixel thuộc lề đường: Phương pháp này giảm tỉ lệ label "yes"
nhỏ hơn rất nhiều so với hướng tiếp cận 1. Hơn nữa hạn chế được các vấn đề khi
tồn tại vật cản trên làn đường. Nhóm gọi đây là Hướng tiếp cận 2 (mục 4.1.5).

4.1.4 Hướng tiếp cận 1


Không chỉ UNet, nhóm đã nghiên cứu và thử nghiệm rất nhiều model AI khác nhau
Để tối ưu hiệu suất cũng như độ chính xác. Mỗi model được kiểm định phải được train
và test trước với ảnh làn đường thực tế để đảm bảo tính tổng quát của đồ án. Do đó việc
đưa model ra sử dụng với làn đường thật là hoàn toàn khả thi. Các model sẽ được build
trên máy cá nhân của các thành viên và train với dataset KITTI, KITTI là bộ dataset
chuyên dùng trong huấn luyện model phát hiện làn đường với ba dạng chính, đường làn
rõ nét (UM), đường làn không rõ nét (UU) và đường nhiều làn (UMM), tổng cộng nhóm
sẽ có 283 bức ảnh làn đường đã được label. Tuy dataset của KITTI có cách label giống
hướng tiếp cận số 0, nhưng vì đường trong dataset tương đối hẹp, do đó tỉ lệ label "yes"
gần bằng với hướng tiếp cận 1. Hơn nữa đây chỉ là bước kiểm định model có đủ tốt để
tiếp tục hay không.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 37/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 31: Một vài ảnh trong dataset KITTI và label tương ứng

Test dataset bao gồm hai phần, phần 1 bao gồm quá trình cắt không quá 10% data
train để kiểm tra. Phần 2 bao gồm quá trình lấy một số ảnh ngẫu nhiên trong những
video quay làn đường ngẫu nhiên trên Youtube và kiểm tra bằng mắt thường (không quá
100 tấm cho mỗi model) để kiểm tra khả năng lập luận trong các trường hợp môi trường
thay đổi.

Huấn luyện model UNet cho mục đích nhận diện làn đường Làn đường mô phỏng bao
gồm 2 làn có lề đường nét liền, giữa hai làn có nét đứt. Ngoài ra còn có ngã tư, ngã ba,
đường cong, đường cụt và vạch dừng đèn giao thông. Dữ liệu mẫu được thu thập bằng
cách điều khiển robot bằng tay dọc làn đường. Các tình huống trong dữ liệu mẫu bao
gồm:

• Đường thẳng

• Đường nhiễu

• Robot nhìn xiên

• Không có làn đường

• Làn đường chói sáng

• Vật cản chắn giữa đường

• Vật cản cắt ngang làn đường

• Các góc đặt camera khác nhau khi robot đứng yên

Hình 32: Các thông số ảnh hưởng bởi vị trí đặt camera

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 38/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Ở quá trình huấn luyện, các thông số có được từ vị trí camera như sau:

Góc của camera so với mặt phẳng ảnh hưởng nhiều tới quá trình dự đoán của model.
Sự tương quan đó được thể hiện trong hình dưới đây:

Hình 33: Độ biến thiên của model A và model B so với góc nghiêng camera

Dựa vào đồ thị, ta thấy với model C2, độ chính xác càng thấp khi góc camera
càng nhỏ (khi camera càng nhìn xuống đất). Ta có thể cải thiện vấn đề bằng cách
tăng data cho trường hợp này và thay đổi tham số hàm loss, khi đó ta được model
C1. Dù độ chính xác với góc camera nhỏ đã được cải thiện, nhưng độ chính xác
trung bình lại giảm. Do đó nhóm chấp nhận đánh đổi và sẽ sử dụng model C2.
Người dùng có thể đặt camera ở một góc cho phép tương đối rộng (từ 20-90 độ). Tuy
nhiên, góc 55 độ là tối ưu nhất giữa độ chính xác của model và khả năng xử lý của backend.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 39/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 34: So sánh một vài trường hợp đặc biệt giữa hai model

Các bước huấn luyện model bao gồm:

1. Thu thập video về các tình huống thường gặp với làn đường.

2. Đánh nhãn với một số frame ngẫu nhiên trong một số video ngẫu nhiên (150 ảnh
có label).

3. Huấn luyện model với data có được từ bước 2.

4. Chạy dự đoán với toàn bộ data hiện có.

5. Kiểm tra bằng mắt thường để loại bỏ những dự đoán lỗi. Sau bước này, nhóm sẽ có
2700 tấm ảnh làn đường có label.

6. Huấn luyện lại model mới với data mới.

7. Chạy dự đoán và lọc ra các trường hợp ngoại lệ, label bằng tay và thêm vào data
train. Thu thập bộ data test mới.

8. Lặp lại hai bước trên cho tới khi độ chính xác model đạt được độ chính xác mong
muốn.

9. Thực hiện kiểm tra tổng quát và chạy demo.

Phương pháp data argument dùng cho bước 3 và 6 bao gồm:

• Flip ảnh theo chiều dọc

• Gaussian blur

• Nhiễu hạt tiêu

• Tăng giảm cường độ sáng

• Ép ảnh theo chiều dọc

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 40/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.1.4.1 Backend
Backend là một giải thuật xử lý ảnh. Có thể được định nghĩa như một hàm nhận
Input và Output như sau:

• Input: Kết quả dự đoán làn đường của model (dạng ảnh 3D, có kích thước là
128 × 128 × 3).

• Output:

– Trong trường hợp trên đường có đầy đủ dữ liệu về làn trái và phải, kết quả
sẽ là tỉ lệ giữa khoảng cách tới làn trái trên tổng chiều rộng làn đường gọi là
ratiolef t .
– Trong trường hợp trên đường không có đầy đủ dữ liệu về làn trái và làn phải,
chương trình sẽ trả về "không nhận diện được"/"error".

Mục tiêu chính của khối Backend là lọc được các trường hợp nhiễu và những frame không
có làn đường. Bởi vì AI không thật sự chính xác và đôi lúc sẽ đề xuất những frame bị lỗi.
Về tổng quan Backend sẽ có những bước như hình 35. Về chi tiết từng bước sẽ được diễn
tả một cách chi tiết sau.

Hình 35: Hình ảnh thể hiện tổng quan các bước của khối Backend

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 41/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Diễn giải chi tiết và các bước xử lý của Backend hiện tại được đề xuất bao gồm các
bước sau:

1. Ứng dụng Grayscale để làm giảm chiều của hình ảnh, thuận tiện cho việc xử lý sau
này.

Hình 36: Hình ảnh minh hoạ làn đường sau khi được grayscale

2. Sử dụng Adaptive Thresholding để phát hiện các cạnh của vùng dự đoán

Hình 37: Hình ảnh minh hoạ làn đường sau khi ứng dụng Adaptive threshold

3. Sử dụng Hough Line Transform để tìm kiếm những cạnh có dạng đường thẳng, các
đường được chia làm ba loại dựa theo góc giữa đường thẳng và trục hoành (α): đường
thẳng thuộc về làn đường bên trái (tan α < 0), đường thẳng thuộc về làn đường
bên phải (tan α > 0), đường nằm ngang (không thuộc về làn trái hay làn phải). Tập
đường thẳng con Li được lấy ra từ việc ứng dụng Hough Line Transform sẽ được
tách ra làm 2 tập xem thuộc về phía bên trái hay bên phải. Ta gọi tập cạnh/đường
thẳng thuộc về phía bên trái là Llef t = [L0 , L1 , ..., Lk−1 ] và tập cạnh/đường thẳng
thuộc về phía bên phải là Lright = [L0 , L1 , ..., Lm−1 ] với k và m lần lượt là số lượng
cạnh thỏa mãn điều kiện thuộc về làn đường phía bên trái và số lượng cạnh thỏa
mãn điều kiện thuộc về làn đường phía bên phải.

Hình 38: Hình ảnh minh hoạ làn đường sau khi ứng dụng Hough Line Transform

4. Mỗi đường thẳng con Li ở đây sẽ được đặc trưng bởi cặp tham số (ri , αi ). Trong đó
ri biểu thị cho khoảng cách từ trục tọa độ đến đường thẳng Li và α là góc được tạo
thành bởi đường thẳng Li và trục Ox.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 42/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 39: Giá trị α và r đặc trưng cho mỗi đường thẳng làn đường

5. Ta tiến hành tính toán các thông số về độ lệch chuẩn bao gồm:
q P
• Độ lệch chuẩn của làn đường bên trái: σlane(lef t) = k1 k−1
i=0 (αi − αlef t )
q P
• Độ lệch chuẩn của làn đường bên phải: σlane(right) = m1 m−1
j=0 (αj − αright )
q P
• Độ lệch chuẩn r của làn đường bên trái: σr(lef t) = k1 k−1
i=0 (ri − r lef t )
q P
• Độ lệch chuẩn r của làn đường bên phải: σr(right) = m1 m−1 j=0 (rj − r right )

6. Gọi β và γ là các giá trị ngưỡng mà tại đó một trong các điều kiện sau xảy ra thì kết
quả sẽ coi như chương trình này bị lỗi và không công nhận kết quả của làn đường
này:
• σlane(lef t) > β
• σlane(right) > β
• σr(lef t) > γ
• σr(right) > γ
7. Visualization: Khi không vi phạm bất kỳ ràng buộc nào thỏa các điều kiện kể trên,
tức xảy ra đồng thời σlane(lef t) > β và σlane(right) > β và σr(lef t) > γ và σr(right) > γ
thì khi này chúng ta coi như thực sự tồn tại 2 làn đường trên hình. Và bắt đầu tiến
hành tính toán phương trình đường thẳng của làn bên trái (ylef t = alef t x + blef t ) và
bên phải (yright = aright x + bright ) sao cho thỏa giá trị đại diện là cặp (rlef t , αlef t )
và (rright , αright ). Mục đích của việc có 2 phương trình này để thuận tiện cho việc
visualize kết quả nhận diện làn đường được trích xuất từ output của khối Backend.

Hình 40: Hình ảnh kết quả cuối cùng của khối backend

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 43/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

8. Tính left ratio: Ta có thể dễ dàng suy ra được tỉ lệ từ tâm làn đường (trung điểm
của hình ) so với làn ở phía bên trái bằng cách lấy nó chia với độ rộng làn đường
(droad ): ratiolef t = (width/2)
droad

4.1.4.2 Cải tiến khối Backend


Khối Backend ở phiên bản tiền nhiệm tỏ ra còn nhiều yếu điểm cần khắc phục. Chẳng
hạn như:

• Sai sót về việc phân loại các điểm dữ liệu thuộc về làn trái và làn phải: Khi phân
loại dữ liệu thuộc về làn trái hoặc phải hiện chúng tôi đang dựa vào góc α. Tuy
nhiên một nhược điểm dễ có của phương pháp này đó chính là việc tồn tại một
điểm có tan α < 0, theo mô hình backend trên thì chúng ta sẽ giả định đây là
phần dữ liệu thuộc về làn đường phía bên trái, tuy nhiên trong thực tế nó lại thực
sự xuất hiện ở làn đường phía bên phải. Hay ngược lại việc tồn tại một điểm có
tan α > 0, theo mô hình backend trên thì chúng ta sẽ giả định đây là phần dữ liệu
thuộc về làn đường phía bên phải, tuy nhiên trong thực tế nó lại thực sự xuất hiện
ở làn đường phía bên trái. Từ đó dẫn đến sai sót trong việc phân loại điểm dữ liệu
thuộc về làn trái hay làn phải của làn đường. Kéo theo một số hậu quả có thể có
chẳng hạn như: Tính sai αlef t , αright , rlef t , rright dẫn đến độ lệch lớn trong việc tính
σlane(lef t) , σlane(right) , σr(lef t) , σr(right) và gây ảnh hưởng tới việc xét điều kiện với 2
tham số ngưỡng γ và β.

• Sai sót về tỉ lệ khoảng cách giữa tâm so với làn đường bên trái: Hạn chế của cách
làm này là việc đo tỉ lệ khoảng cách không thực sự khớp với thực tế bởi vì làn đường
trên hình đôi khi bị khuất đi dẫn đến việc sai sót, chẳng hạn như hình sau:

Về sự cải tiến của Backend, vẫn sẽ giữ nguyên Input và Output, tuy nhiên có một số
thay đổi lớn trong giải thuật xử lý.

• Input: Kết quả dự đoán làn đường của model (dạng ảnh binary, có kích thước là
128 × 128)

• Output:

– Trong trường hợp trên đường có đầy đủ dữ liệu về làn trái và phải, kết quả
sẽ là tỉ lệ giữa khoảng cách tới làn trái trên tổng chiều rộng làn đường gọi là
ratiolef t .
– Trong trường hợp trên đường không có đầy đủ dữ liệu về làn trái và làn phải,
chương trình sẽ trả về "không nhận diện được"/"error".

Về tổng quan, sự cải tiến này sẽ được diễn ra theo luồng của hình 41. Phần diễn tả
chi tiết sẽ được đề cập ngay sau đó.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 44/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 41: Hình ảnh thể hiện tổng quan các bước của khối Backend sau khi được cải tiến

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 45/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Sau đây là phần diễn tả chi tiết hơn cho sơ đồ của khối Backend sau khi được cải tiến.
Đầu tiên chúng ta sẽ nói về phần Preprocessing (tiền xử lý) trước khi bước vào thảo luận
sâu hơn về phần giải thuật kiểm định làn đường (Lane Verification Algorithm).
1. Tiến hành Grayscale nhằm mục đích tăng tốc độ xử lý (do giảm số chiều của hình)
đồng thời cũng dễ dàng hơn cho việc xử lý dữ liệu (mảng 2 chiều xử lý dễ hơn mảng
3 chiều). Lúc này chúng ta sẽ thu được một ảnh có dạng 128x128x1 từ hình ảnh
đầu vào là 128x128x3.

Hình 42: Hình ảnh sau khi được grayscale

2. Khử nhiễu và làm mượt hình ảnh bằng Gaussian Blur, sau đó ứng dụng thêm kỹ
thuật Canny Edge Detection để phát hiện những cạnh tồn tại trong hình. Đó là
những thành phần tiềm năng để thuận tiện cho việc tìm kiếm làn đường sau này.

Hình 43: Hình ảnh sau khi được Gaussian Blur và ứng dụng Canny Edge Detection

3. Từ đầu ra của bước 1, thresholding hình để nhận được một bức hình nhị phân. Việc
này nhằm tạo tiền đề cho việc ứng dụng tìm kiếm các contour.

4. Từ bức ảnh nhị phân, chúng ta có thể tìm các countours tồn tại trong hình. Ở bước
này lưu ý rằng cần phải loại bỏ những contour phạm phải một trong các điều kiện
sau:
• wcontour < µ: Các countours có kích thước chiều rộng (wcontour ) bé hơn một số
cho trước. Trong các trường hợp xảy ra thực, độ rộng của làn đường dao động
thông thường rơi vào con số lớn hơn con số µ đã được đo đạc trước. Vì thế nếu
wcontour < µ thì ta sẽ loại đi những countour này.
• ybottom,lef t < δ: Trong hệ tọa độ Oxy mà ở đó Ox hướng qua phải và Oy hướng
xuống dưới, tọa độ y của cạnh dưới countours cách đáy của hình thực quá một
khoảng δ cho trước. Trong đó δ là khoảng chênh lệch so với cạnh dưới cùng
của hình thực cho phép mà làn đường được công nhận là đúng đắn.
5. Sau khi đã qua quá trình lọc bỏ countours, vẫn còn tồn tại các countours thỏa điều
kiện thì chọn ra countours có bề rộng wcontour là lớn nhất. Ngược lại, báo lỗi "không
nhận diện được"/"error".

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 46/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 44: Hình ảnh minh hoạ việc làn đường đã được đóng khung với contour lớn nhất

6. Tọa độ, độ rộng, chiều cao (x, y, w, h) của countour lớn nhất được giữ lại để crop
hình đã qua bước Canny Edge Detection được xuất ra từ bước 2. Sau đó bức hình
đã được crop được đưa vào thuật toán kiểm nghiệm và tìm kiếm làn đường (Lane
Verification Algorithm) để xử lý.

Hình 45: Hình ảnh minh hoạ việc khung ảnh được cắt sau khi xác định được max contour

Về Lane Verification Algorithm, thuật toán này được chúng tôi đề xuất nhằm mục
đích kiểm thử bức hình đã được crop ra từ bức hình gốc có thật sự là chứa làn đường phù
hợp hay không (phần được dự đoán thực sự là có tiềm năng chứa làn đường). Nếu không
thì sẽ trả về "không nhận diện được"/"error", còn nếu khả thi thì sẽ trả về tập hợp các
điểm dữ liệu thuộc về làn trái và làn phải. Tổng quát lại, Lane Verification Algorithm sẽ
được coi như một hàm có Input và Output sau:

• Input: Bức hình m × n × 1 được trích xuất ra từ bức hình đã được thông qua bước
Canny Edge Detection 128 × 128 × 1 với m, n < 128.

• Output: Tập hợp các pixels thuộc về làn trái (ptsLeft=[]) và làn phải (ptsRight=[]).

Lưu ý rằng bản chất của Lane Verification Algorithm không tổng quát hết tất cả mọi
thứ, mà dựa vào những trường hợp thông dụng mà output của AI gặp phải và dựa vào
đó để loại bỏ bớt các lỗi và xử lý mang lại kết quả khả quan nhất có thể. Giải thuật được
biểu diễn một cách tổng quát qua sơ đồ sau, chi tiết sẽ được diễn tả chi tiết hơn sau:

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 47/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 46: Hình ảnh giới thiệu tổng quan về các bước của Lane Verification Algorithm

Đầu vào của khối giải thuật này là một bức hình có kích thước m × n × 1 được trả về
từ khối Preprocessing, sau đó bắt đầu công đoạn xử lý. Dưới đây là phần diễn tả chi tiết
hơn cho sơ đồ của giải thuật kiểm định làn đường (Lane Verification Algorithm).

1. Trước tiên chúng ta cần các định vùng "Non-necessary" Polygon, nghĩa là ta coi
như mọi thứ nằm bên trong polygon này đều không có nghĩa. Mục đích của việc
này là để giảm thiểu đi các điểm ngoại lai về sau cho đầu ra của chúng ta. Thông
qua các trường hợp mà chúng tôi đã gặp phải, phần lớn những đối tượng không
có nghĩa xuất hiện ở phía bên trong của 2 làn đường (như hình) và cần phải định
nghĩa ra một polygon để che đi những pixels dư thừa đó đi. Đây là một polygon
được định nghĩa cố định và không thay đổi.

2. Sau khi đã định nghĩa được vùng này thì tiến hành masking hình nhận được với
hình này và tạo ra được một hình mới đã được masking (khử bỏ bớt những điểm
không cần thiết nằm ở giữa 2 làn đường), gọi là Masking "Non-necessary" Polygon.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 48/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 47: Hình ảnh sau khi được masking một lớp polygon để khử nhiễu

3. Sau khi đã khử nhiễu được một phần để giảm số lượng xuất hiện của các điểm ngoại
lai. Chúng tôi tiến hành việc tạm thời tạo ra các bộ điểm ảnh thuộc về làn trái và
làn phải (tạm gọi là ptsLeft=[] và ptsRight = []) bằng các điều kiện như sau:

(a) Những điểm pixels nào là có màu trắng (do hình là binary image) sẽ được công
nhận là một phần thuộc về làn đường, ngược lại thì không công nhận.
(b) Từ bức ảnh m × n × 1 thu được, tiến hành tạo ra trung điểm có tọa độ ( n2 , m).
Những điểm được công nhận là pixels thuộc về làn đường có tọa độ x ≤ n2 thì
thuộc về làn trái và x > n2 thuộc về làn phải.

4. Tuy nhiên, những bộ dữ liệu làn trái/phải này chưa thực sự chính xác vì việc
loại đi những vùng không cần thiết ở bước Masking "Non-necessary" Polygon
chưa thực sự đủ. Cần phải cải tiến bằng cách loại bỏ đó các điểm ngoại lai theo
−→
phương của trục Ox. Giả sử mỗi điểm trong ptsLeft hoặc ptsRight có tọa độ là
(xi(lef t) , yi(lef t)) và (xi(right) , yi(right)) . Từ đó, ta rút trích một dãy theo dữ liệu chỉ
có tọa độ x để dễ dàng hơn trong việc lọc: A = [x0(lef t) , x1(lef t) , ..., xw(lef t) ] và
B = [x0(right) , x1(right) , ..., xu(right) ]. Từ đó, ta đi tìm các thông số sau:
−→
• Trung vị của dữ liệu làn trái và phải theo phương Ox. Tạm gọi là mA và mB
• A′ = [|x0(lef t) − mA |, |x1(lef t) − mA |, ..., |xw(lef t) − mA |]
• B ′ = [|x0(right) − mB |, |x1(right) − mB |, ..., |xu(right) − mB |]
• Tìm kiếm trung vị của A’ và B’, gọi là mA′ và mB ′
|x0(lef t) −mA | |x1(lef t) −mA | |x −m |
• Slef t = [ mA′
, mA′
, ..., w(lefmt) ′ A ]
A
|x0(right) −mB | |x1(right) −mB | |x −mB |
• Sright = [ mB ′
, mB ′
, ..., u(right)
mB ′
|]

5. Gọi từng phần tử thuộc về Slef t hoặc Sright là Si với i là chỉ số vị trí của phần tử
Si trong ma trận của nó. Gọi γ là ngưỡng chấp nhận được. Ta chỉ giữ lại những vị
trí i nào sao cho Si < γ. Từ đó rút ra được những vị trí thỏa điều kiện trong ma
trận A và B. Gọi 2 ma trận đã rút trích ra được thỏa mãn điều kiện là A∗ và B ∗ .
Những vị trí tọa độ xi vẫn còn tồn tại (do thỏa mãn điều kiện) trong ma trận A∗ sẽ
được đem vào để lọc lại ptsLef t và vị trí tọa độ xj vẫn còn tồn tại trong ma trận
B ∗ sẽ được đem vào để lọc lại ptsRight. Miễn những cặp tọa độ (xi , yi ) nào thỏa
điều kiện tồn tại trong x ∈ A∗ sẽ được giữ lại ở ptsLeft và cặp tọa độ (xj , yj ) nào
thỏa điều kiện tồn tại trong x ∈ B ∗ sẽ được giữ lại ở ptsRight.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 49/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

6. Từ đó ta rút trích ra được bộ dữ liệu đã được lọc bớt nhiễu và các điểm ngoại lai.
Lý do là vì khi phác hoạ đường thẳng sẽ cần ứng dụng hồi quy tuyến tính. Việc để
xuất hiện những điểm ngoại lai, chệch giá trị nhiều sẽ dẫn tới đường hồi quy bị sai
lệch, do đường hồi quy dễ bị ảnh hưởng bởi các điểm ngoại lai.

Hình 48: Hình ảnh minh hoạ kết quả của backend sau khi được cải tiến

7. Kể từ bước này, việc kiểm thử làn đường đã thực hiện xong. Việc còn lại sẽ là
visualization và tính ra được giá trị Left Ratio.

Chúng ta tiến hành phân tích visualization và tính Left Ratio

• Visualization: Sau khi đã có tập hợp các điểm thuộc làn trái và phải ptsLef t và
ptsRight, chúng ta có thể dễ dàng dùng hồi quy tuyến tính để ra phương trình
ylef t = alef t x + blef t và phương trình yright = aright x + bright để visualize lên hình.

• Left Ratio: Sau khi đã có được phương trình đường thẳng của làn đường trái và
phải, ta tiến hành xác định trung điểm của hình gốc (lưu ý hình gốc ở đây là hình
chưa qua bất kỳ xử lý nào, 128 × 128 × 3), có tọa độ (xmid , ymid ). Đồng thời tìm
kiếm giao điểm giữa phương trình làn đường và phương trình y = h (với h là chiều
cao hình). Gọi giao điểm của y = h với ylef t = alef t x + blef t là (xG(lef t) , yG(lef t) ) và
y = h với yright = aright x + bright và (xG(right) , yG(right) ).

d |xmid −xlef t |
Khi này ta dễ dàng có ratiolef t = w
= |xG(lef t) −xG(right) |

Hình 49: Hình ảnh minh hoạ việc tính toán left ratio

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 50/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.1.4.3 Đánh giá

Hình 50: So sánh giữa hai phương pháp backend

Trong biểu đồ trên, phân phối bên trái đại diện cho phương pháp 4.1.3 và phân phối
bên phải đại diện cho khối backend cải tiến ở mục 4.1.4. Ta dễ thấy phương pháp cũ có
trung bình thời gian thực thi lớn hơn phương pháp mới, tuy nhiên khoảng giá trị lại nhỏ
hơn. Do tính chất của phương pháp cũ có cận trên thời gian, nghĩa là thời gian tính toán
sẽ không vượt quá khoảng 0.0012 và min có thể rất gần 0. Còn phương pháp mới sẽ có
cận dưới lớn hơn (khoảng 0.0004) và không có cận trên, tức là chỉ có một số trường hợp
đặc thù cần thời gian tính toán lớn. Nhóm sẽ nghiên cứu phát triển thêm hai hướng này
để tìm ra cách tối ưu nhất hoặc kết hợp hai phương pháp để cho ra kết quả tối ưu cuối
cùng.

4.1.4.4 Phân tích kết quả


Có thể thấy, dù hệ thống hoạt động tương đối tốt, robot có thể chạy được trong môi
trường lý tưởng không có vật cản, nhưng module vẫn còn một số hạn chế sau:

• Data chưa thực sự có tính tổng quát: Với giới hạn về nguồn lực, nhóm chỉ có
thể thu thập data ở 5 môi trường khác nhau, do đó nhóm cần có sự cải tiến về model
cũng như phương pháp huấn luyện để hạn chế hành vi không xác định ở background
mỗi khi di chuyển robot sang những môi trường mới với những background mà model
chưa từng thấy.

• Thiếu tính tổng quát của backend: Do chỉ dựa vào quan sát trên data sau khi
được model hiện tại predict, chúng ta sẽ bỏ lỡ một số trường hợp có thể xảy ra
nhưng model chưa nhìn thấy trường hợp đó hay đôi khi là những hành vi mới khi
thay đổi model, do vậy dù backend hoạt động tốt trên toàn bộ dữ liệu hiện tại vẫn
chưa đủ để đảm bảo tính tổng quát của backend.

• Giới hạn về tốc độ thực thi: Hiện tại model chạy trên thiết bị window sử dụng
Cuda với hệ số tính toán 6.1. Tuy nhiên FPS hiện tại dao động trong khoảng từ

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 51/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

5-8 FPS. Do đó sẽ có một số thử thách và nhu cầu tái phân bổ các tác vụ cần thực
hiện giữa các máy thay vì thực thi toàn bộ trên turtlebot.

4.1.5 Hướng tiếp cận 2


Vì vấn đề thay đổi từ yêu cầu xác định vùng làn đường mà robot đang ở, sang xác
định lề trái và lề phải làn đường. Do đó phương pháp huấn luyện và data đều sẽ bị thay
đổi, ưu điểm lớn nhất của hướng tiếp cận 2 về mặt model là khi có vật thể chắn làn đường,
model ở hướng tiếp cận 1 sẽ có các dự đoán tương đối hỗn loạn, khiến backend không tìm
được đúng vị trí của làn đường, trong khi nếu ta label theo phương pháp 2, những vùng
có vật cản chỉ cần không label, khi đó model sẽ học nhanh hơn và độ chính xác cao hơn.

Hình 51: So sánh hai phương pháp label, (phương pháp cũ bên trái và phương pháp mới bên
phải)

Ở trên là so sánh ảnh hưởng của cách label với cùng số lượng data và phương pháp
train. Trong khi model phương pháp 1 có sự nhiễu loạn không xác định ở vị trí có vật
cản, thì phương pháp 2 có độ ổn định cao hơn, dễ trích xuất thông tin hai làn đường hơn.
Nhóm gặp tương đối nhiều thử thách trong quá trình cố gắng xây dựng backend nếu tiếp
tục sử dụng phương pháp 1.

4.1.5.1 Thu thập, thiết kế data


Để thu thập data, ta cần trải qua các bước sau, một số ảnh ví dụ của từng bước được
thể hiện ở hình 52:

• Thu thập data: Thu thập các video khi xe chạy trên đường, bao gồm các trường
hợp camera rung lắc, làn đường bị chắn một phần hoặc toàn bộ bởi vật cản, không
thấy làn đường, các điều kiện ánh sáng khác nhau, ...

• Sinh data: Nhóm chụp ngẫu nhiên các vật thể đa dạng, loại bỏ background và đặt
ngẫu nhiên từ 1-6 vật thể vào làn đường, nếu vật thể chạm làn trái hoặc phải, cần
loại bỏ pixel label tương ứng.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 52/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

• Thu thập ảnh ngẫu nhiên: Nhóm cần thu thập lượng lớn ảnh ngẫu nhiên với
điều kiện bên trong ảnh không có làn đường, để tránh trường hợp robot bị overfit
với background ở những môi trường thu thập dữ liệu train. Khiến cho khi chạy ở
môi trường khác, background dễ bị bắt nhầm thành làn đường, gây ra những hành
vi không xác định ở backend.

• Chỉnh sửa data: Vì data được label bởi người, do đó label sẽ là những đường
thẳng có kích thước cố định, và không phải pixel nào thuộc làn đường cũng được
label. Do đó ta cần train overfit một model, cho model chạy predict với toàn data
train và kiểm định bằng mắt thường, xóa các label sai. Khi đó ta sẽ có một tập dữ
liệu chuẩn, với từng pixel làn đường đều được label, kích thước data chuẩn khoảng
85% so với data thô (560 bức có làn đường).

• Tổng hợp data và thiết kế data augmentation: Ta sẽ kết hợp data chuẩn có
làn đường, ảnh background ngẫu nhiên, ảnh sinh ngẫu nhiên vật thể trên làn đường,
tổng cộng có 2630 bức. Nhóm sẽ thiết kế thêm khối argument để sinh thêm data
trong quá trình train, bao gồm flip, vẽ các đường ngẫu nhiên, xoay, làm mờ, nhiễu
hạt tiêu, chỉnh độ sáng, vẽ các vùng rectangle có pixel ngẫu nhiên. Mục đích để
model quen với những nhiễu loạn xảy ra trên làn đường.

• Thu thập data test: Data test phải được quay ở một môi trường khác, chưa từng
có trong tập train. Các môi trường có trong tập train bao gồm phòng thí nghiệm
101C6, và xung quanh tòa C6, nhà riêng. Môi trường được sử dụng để test là môi
trường không nằm trong tập train.

Hình 52: Quá trình xây dựng data cho model

4.1.5.2 Huấn luyện mô hình


Trước khi huấn luyện, ta cần xác định hai hyperparameter của hàm loss Forcal Tversky.
Tham số α có giá trị mặc định 0.5, đặc trưng cho việc ưu tiên False Positive hay False

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 53/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Negative. Trong ngữ cảnh hiện tại, nhóm dễ chấp nhận False Negative hơn, vì thiếu các
pixel làn đường sẽ ít ảnh hưởng đến backend hơn dư pixel. Tham số γ có giá trị 0.75, đặc
trưng cho việc model sẽ tập trung luyện tập với các trường hợp khó hay xem xét một
cách tổng quát, nhóm không có sự ưu tiên cụ thể nào cho tham số này. Để nghiên cứu và
tìm kiếm tham số tối ưu, nhóm sẽ sử dụng bicubic interpolation cho một mặt phẳng hai
chiều, một chiều cho α và chiều còn lại cho γ.

Hình 53: Quá trình Findtune hai parameter cho model

Ta xây dựng một bề mặt hai chiều với trục x và y lần lượt là α và γ, trục z là trung
bình điều hoà của độ chính xác tập train và tập validation. Mục tiêu là xây dựng được
một bề mặt đặc trưng cho sự ảnh hưởng của hai parameter đối với trung bình điều hoà.
Từ đó suy ra được giá trị tối ưu của hai parameter. Để đảm bảo chỉ có sự ảnh hưởng của
parameter tới độ chính xác, Nhóm đã cố định tham số của model ban đầu, cũng như cố
định data huấn luyện, loại bỏ tính ngẫu nhiên khỏi quá trình train. Dưới đây là kết quả
sau khi model chạy với 16 param ngẫu nhiên và 38 param dựa theo interpolation.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 54/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 54: Đồ thị xây dựng được từ quá trình findtune hai parameter

Dựa vào đồ thị trên và quan sát các giá trị thực tế, nhóm chọn giá trị α = 0.2 và γ =
1.75.

4.1.5.3 Chuyển kết quả thành Bird’s-Eye View và quá trình Calibration
Để chuyển dữ liệu từ dạng camera view sang dạng Bird’s-Eye View, ta sẽ cần một vài
thao tác ở môi trường thật, lý thuyết về Affine Transformations và ma trận warp. Khi
nói về Affine Transformations, chúng ta nói đến một loại phép biến đổi hình học trong
không gian hai hoặc ba chiều. Khi áp dụng phép biến đổi này, các điểm trong không gian
được di chuyển, xoay và co giãn để tạo thành một hình học mới. Điều này có thể được
biểu diễn bằng ma trận biến đổi affine.

Ma trận biến đổi Affine được biểu diễn dưới dạng ma trận 3x3 cho biến đổi trong
không gian hai chiều. Ma trận này bao gồm các thông số để biểu diễn các phép biến đổi
như dịch chuyển, xoay và co giãn. Cụ thể, ma trận Affine cho phép dịch chuyển bằng
cách thêm một vector tịnh tiến vào tọa độ ban đầu của điểm. Xoay được thực hiện bằng
cách sử dụng các phép toán ma trận để xoay điểm quanh một trung tâm quay. Co giãn
được thực hiện bằng cách thực hiện phép nhân ma trận với một vector giữa các hệ số co
giãn tương ứng cho mỗi chiều.

Để tìm được ma trận biến đổi Affine, nhóm sử dụng phương pháp đo thực nghiệm

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 55/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

gọi là calibration như sau. Đầu tiên ta cần đặt các mảnh giấy ở những mốc cố định được
đo trong bề mặt thực tế. Những vị trí này sẽ tương ứng với những vị trí xác định trong
bề mặt Bird’s-Eye View. Vậy nhóm sẽ có bốn cặp điểm ở bề mặt thực tế tương ứng
với bề mặt Bird’s-Eye View. Nhóm sử dụng hàm cv2.getPerspectiveTransform để suy ra
được ma trận biến đổi affine từ bốn cặp điểm trên. Ma trận này đặc trưng cho vị trí của
camera so với robot và bề mặt nằm ngang, do đó các thay đổi như thay đổi về chiều cao
robot hoặc vị trí camera, nhóm sẽ phải thực hiện lại bước calibration để đảm bảo tính
đúng đắn của ma trận affine.

Hình 55: Vị trí các mảnh giấy trong quá trình calibration

13 71
113 76
Vị trí bốn điểm ở hệ toạ độ ảnh từ camera 
 37 42

91 43
Vị trí bốn điểm tương ứng ở hệ toạđộ thực (bird
 eye view, gốc toạ độ là tâm robot,
16 2
38 2 
một đơn vị độ dài tương đương 2cm) : 19 −21

 37 −21 
1.461 1.864 −55.96
Ma trận affine thu được: Maf = −0.147 3.201 −2.134
0.002 0.069 1
Khi đã có ma trận affine, Ta chuyển một điểm từ toạ độ camera (x1 , y1 ) sang toạ độ
birdeyeview (x2 , y2 ) như sau:
x2 x1
 y2  =  y1  Maf
1 1

4.1.5.4 Thiết kế Backend


Backend là một module nhận đầu vào là dữ liệu dự đoán của model, với mục tiêu xử
lý dữ liệu và trả về vị trí làn đường. Vị trí làn đường có dạng hai điểm, là giao điểm của
đường thẳng đại diện cho làn đường và một hình vuông kích thước 128x128 đặt ở gốc tọa
độ. Backend có thể trả về thông tin 2 làn đường hoặc không trả về thông tin nào (với
trường hợp backend nhận quá nhiều nhiễu từ model và không có khả năng sửa chữa).

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 56/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 56: Mô phỏng các bước của backend với những trường hợp

Khối backend có hai giai đoạn chính. Xử lý dữ liệu model và sửa lỗi, ở bước xử lý dữ
liệu model, module làm các bước như sau:

• Phân cụm các pixel: Các Pixel nằm cạnh nhau theo chiều ngang, dọc và chéo sẽ
được gom thành một cụm, mỗi cụm sẽ tồn tại duy nhất một hình chữ nhật sau cho
kích thước nhỏ nhất nhưng tất cả điểm của cụm đều nằm trong hình chữ nhật. Ở
cột thứ 2, hàng đầu tiên. Visual tổng cộng ba hình chữ nhật đặc trưng cho ba cụm.

• Kiểm tra tính đúng đắn: Mỗi cụm tương ứng với một hình chữ nhật đặc trưng.
Cụm được xem là lỗi nếu kích thước quá nhỏ, hoặc tỉ lệ giữa hai cạnh của hình chữ
nhật vượt quá một khoảng cho trước, hoặc cạnh dài của hình chữ nhật tạo với trục
hoành một góc dưới 30 độ. Nếu cụm không lỗi, ta sẽ dựa vào góc của cạnh dài để
quyết định cụm đó thuộc về cạnh trái hay cạnh phải.

• Kết luận vị trí làn đường: Làn đường được tạo bởi hai cụm có kích thước lớn
nhất không lỗi ở mỗi bên làn đường.

Với mục tiêu của backend là lọc tối đa lỗi có thể xảy ra từ model. Do đó các tầm giá
trị được đặt tương đối dẹp, backend trả về giá trị chỉ khi làn đường được thấy rõ nét và
đủ dài. Nếu không, backend sẽ không gửi dữ liệu. Vì chỉ cần một tính hiệu làn đường
sai được backend gửi đi, toàn hệ thống sẽ vô cùng hỗn loạn và robot sẽ có các hành vi
không được định trước.

Bước sửa lỗi sẽ hoạt động khi ở bước xử lý dữ liệu chỉ trả về một làn đường. Ở bước
này, vị trí của làn còn lại sẽ được tính toán dựa trên vị trí của làn đã thấy và kích thước
làn đường (tính theo chiều rộng). Sơ đồ mô tả các bước của backend được thể hiện như
bên dưới.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 57/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 57: Kiến trúc backend

a) Chi tiết cách thức song song hóa 2 làn đường

Lý do cho việc phải thực hiện công đoạn song song hóa làn đường là để tránh rủi
ro cho khối né vật cản sau này, cụ thể là trong tương lai tín hiệu làn đường sẽ được
gửi qua cho khối né vật cản, việc làn đường không song song song sẽ dẫn đến nguy cơ
hệ thống xác định được mục tiêu để thực hiện tìm đường (tham khảo thêm tại mục 4.2.2.5).

Ta có thể coi như khối này nhận đầu vào là phương trình đường thẳng của làn đường
trái (L) : yL = aL xL + bL và phương trình đường thẳng của làn đường phải (R) : yR
= aR xR +bR và đầu ra là (L′ ) : yL′ = a′L xL +b′L và (R′ ) : yR′ = a′R xR +b′R , sao cho (L′ )//(R′ ).

• Input: (aL , bL ), (aR , bR )

• Output: (a′L , b′L ), (a′R , b′R )

Chi tiết hàm này sẽ được diễn tả tuần tự theo các bước sau:

1. Tìm kiếm giao điểm của phương trình đường thẳng (L) : yL = aL xL + bL và (R) : yR
= aR xR + bR với trục y = h, y = h, x = 0 và x = w (h và w lần lượt là chiều cao và
chiều rộng của khung hình) sao cho tìm được 4 giao điểm mà trong đó các giao điểm
được tìm kiếm thấy sẽ nằm ở trên cạnh của khung hình. Tạm gọi là L1 (xL1 , yL1 ),
L2 (xL2 , yL1 ) đại diện cho giao điểm của yL và R1 (xR1 , yR1 ), R2 (xR2 , yR2 ) đại diện
cho giao điểm của yR .

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 58/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 58: Hình ảnh minh hoạ cho việc xác định giao điểm L1 , L2 , R1 , R2

2. Tìm kiếm ML (xML , yML ) và MR (xMR , yMR ) lần lượt là trung điểm của L1 L2 và R1 R2 .
−1 −1
3. Tìm kiếm hệ số góc trung bình các phép biến đổi sau: aavg = tan( tan (aL )+tan
2
(aR )
+
f (k)) trong đó: f (k) = 0 khi aL .aR < 0 (yL và yR không cùng đồng biến hoặc không
cùng nghịch biến) và f (k) = (2k+1)π 2
khi aL .aR > 0 (cùng đồng biến hoặc cùng
nghịch biến). Điều này nhằm tinh chỉnh lại góc phân giác của 2 đường thẳng cho
nằm đúng vị trí mà ta mong muốn.

4. Gán a′L = aavg và a′R = aavg . Nhiệm vụ tiếp theo là cần phải tìm được b′R và b′L .
Đường thẳng bên trái sau khi đã song song hóa sẽ đi qua ML (xML , yML ) và đường
thẳng bên phải sau khi đã song song hóa sẽ đi qua MR (xMR , yMR ). Vậy ta sẽ tìm ra
được b′L = yML − a′L xML và b′R = yMR − a′R xMR . Từ đó ta có kết quả được hiển thị
như hình sau, trong đó đường được biểu diễn gạch đứt nét sẽ biểu thị kết quả song
song hóa của làn đường và vạch liền là input ban đầu.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 59/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 59: Kết quả của việc song song hóa 2 làn đường

b) Chi tiết cách thức nội suy làn đường còn lại dựa vào dữ kiện 1 đường

Lý do cho việc phải thực hiện công đoạn nội suy làn đường để ta có được 2 làn
đường để sử dụng tiếp là vì khi dữ liệu tín hiệu từ làn đường không còn ổn định hoặc
có sai sót, việc ghi nhớ làn đường trước đó và dựa vào dữ liệu vận tốc, vận tốc góc để
dự đoán vị trí tiếp theo của làn đường có thể tồn tại (tham khảo thêm tại mục 4.2.2.5).
Tuy nhiên rằng không có gì chắc chắn việc dự đoán sẽ diễn ra suôn sẻ bởi việc tính toán
sẽ xảy ra sai số tích lũy nếu như khối né vật cản phải tiến hành công việc dự đoán quá lâu.

Chính vì thế ta phải tiến hành nội suy làn đường để tăng xác suất có 2 làn đường
gửi về cho khối né vật cản, nhằm giảm thiểu rủi ro việc dự đoán vị trí tiếp theo của làn
đường dẫn đến sai số tích lũy theo thời gian. Sau khi hoàn thành việc này, đồng nghĩa
với việc dù việc phân đoạn làn đường của mô hình AI có diễn ra sai sót, hoặc không đủ
mạnh để có thể có được hoàn toàn 2 làn đường, mà chỉ phát hiện được 1 làn đường (do
có vật thể chắn, hoặc góc xoay camera dẫn đến khuất mạnh phần đường còn lại, ...) thì
ta có thể dựa vào dữ liệu khoảng cách giữa 2 làn đường cũ trước đó kèm theo dữ kiện 1
làn đường hiện tại để nội suy ra phần làn đường bị thiếu còn lại.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 60/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Tương tự như phần trước, ta có thể định nghĩa khối này như một hàm với input và
output như sau:
• Cho một đường thẳng biết trước, (Li ) : yi = ai xi + bi với i ∈ {L, R}.
• Cho khoảng cách d được cho sẵn, cụ thể trước khi được đưa vào hàm này thì giá
trị d sẽ được tính bằng công thức d = αd + (1 − α)dt−1
. Điều này đồng nghĩa với việc khi ta tăng α lên thì sẽ ưu tiên các giá trị khoảng
cách làn đường đã được tính nhiều lần trước đó và (1 − α) giá trị của khoảng cách
làn đường tại thời gian liền kề trước thời điểm hiện tại được cập nhật vào d.
• Cho biết β với β ∈ L, R. Nếu β = L thì cần kiếm làn bên trái so với yi , ngược lại
nếu β = R thì cần kiếm làn bên phải so với yi . Và tất cả những làn cần được tìm
kiếm gọi là yj (i ̸= j) sẽ có khoảng cách trong không gian so với yi là d và song song
với yi .
Vậy từ đó, ta có thể định nghĩa hàm ngắn gọn như sau:
• Input: (ai , bi ) với i ∈ {L, R}, β với β ∈ {L, R} và d
• Output: (aj , bj ) với j ∈ {L, R} và j ̸= i
Chi tiết hàm này sẽ được diễn tả tuần tự theo các bước sau:
1. Tìm kiếm 2 điểm bất kỳ thuộc yi , gọi là A(xA , yA ) và B(xB , yB )
2. Từ phương trình đường thẳng yi = ai xi + bi ta có thể dễ dàng rút ra được vector
đơn vị chỉ phương →
− B −xA yB −yA
u = ( x||AB|| , ||AB|| ) = (u1 , u2 )

3. Từ vector chỉ phương dễ dàng suy ra vector đơn vị pháp tuyến v = (−u2 , u1 ) =
(v1 , v2 )
4. Lần lượt tính các điểm sau bằng công thức dịch điểm trong không gian, nhằm có
được một điểm mới cách điểm ban đầu một khoảng cách là d và vuông góc với
đường thẳng yi (do ta đang dịch theo chiều của vector đơn vị pháp tuyến)

• A′1 = (xA + dv1 , yA + dv2 )


• B1′ = (xB + dv1 , yB + dv2 )
• A′2 = (xA − dv1 , yA − dv2 )
• B2′ = (xB − dv1 , yB − dv2 )

5. Ta dễ dàng kiếm được 2 phương trình đường thẳng đi qua A′1 và B1′ gọi là yA′1 B1′ , và
phương trình đường thẳng đi qua A′2 và B2′ gọi là yA′2 B2′ .

6. Gọi M (xM , yM ) và N (xN , yN ) lần lượt là giao điểm của yA′1 B1′ = aA′1 B1′ x + bA′1 B1′ và
yA′2 B2′ = aA′2 B2′ x + bA′2 B2′ với trục x = 0. Vậy:

• Nếu β = L: nếu xM < xN thì return (aL , bL ) = (aA′1 B1′ , bA′1 B1′ ), ngược lại return
(aL , bL ) = (aA′2 B2′ , bA′2 B2′ )
• Nếu β = R: nếu xM > xN thì return (aR , bR ) = (aA′1 B1′ , bA′1 B1′ ), ngược lại return
(aR , bR ) = (aA′2 B2′ , bA′2 B2′ )

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 61/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.1.6 So sánh hai hướng tiếp cận


Dễ thấy rằng phương pháp 2 hoạt động ổn định và cho ra độ chính xác cao hơn trong
trường hợp đường tồn tại vật cản. Ngoài ra Unet tỏ ra tương đối yếu kém trong việc dự
đoán các ảnh có tỷ lệ label "yes" lớn. Do đó, ở phương pháp 1, ta cần tính toán trước
góc của camera và giữ cố định vị trí đó. Trong khi đó, ở phương pháp 2, ta có thể đặt
camera ở bất kỳ góc độ nào, chỉ cần đảm bảo backend có thể thông qua đa số trường hợp
và calibration lại ma trận chuyển đổi để kết quả Bird’s-Eye View làn đường là chính xác.
Bảng 1: So sánh hai phương pháp tiếp cận

Hướng tiếp cận 1 Hướng tiếp cận 2


Độ ổn định Chỉ chạy tốt khi không có vật cản. Cho ra kết quả đủ để backend xử
lý dù có vật cản trên đường.
Vị trí đặt cam- Model chạy tốt nhất khi vị trí Có thể đặt camera một góc từ 25-
era giống hoàn toàn với dữ liệu train 60 độ, Độ chính xác của model
và nằm trong khoảng từ 30-45 độ. không ảnh hưởng bởi góc nghiêng
camera mà là độ dài làn đường
tối thiểu mà backend chấp nhận
khiến backend khó trả kết quả
hơn nếu quá ít làn đường được
thấy.
Tỷ lệ gửi dữ liệu Cao hơn khi xe nhìn thấy cả hai Backend sẽ hạn chế chấp nhận
làn đường làn đường, nhưng sẽ không gửi những giá trị làn đường đứt nét,
nếu xe chỉ thấy một làn đường. tuy nhiên nếu chỉ thấy một làn
đường, khối backend vẫn có khả
năng suy luận ra vị trí của làn
đường còn lại.
Lượng dữ liệu Thấp hơn, chỉ cần đa dạng các Nhiều hơn, cần thêm data chuyên
cần cho huấn thứ tự mảnh đường, trường hợp về background và chuyên về vật
luyện model background và ánh sáng. cản.
Backend Backend cần xử lý nhiều trường Backend chỉ quan tâm các cụm,
hợp hơn, các nhiễu loạn về dự do đó sẽ hạn chế tối đa trường
đoán dễ ảnh hưởng đến kết quả hợp lỗi, các nhiễu loạn của model
backend. cũng khó ảnh hưởng đến kết quả
Backend.

4.2 Module né vật cản


4.2.1 Hướng tiếp cận 1: Sử dụng Q-learning

Ở đây vấn đề của chúng ta là né vật cản có khả năng di chuyển và ở môi trường không
xác định trước. Vì vậy việc áp dụng các giải thuật tìm đường đi tối ưu khi biết trước môi
trường cũng như vật cản tĩnh là hoàn toàn không khả thi. Bởi trong hoàn cảnh mà vật
thể di chuyển, chúng ta hoàn toàn không biết trước được vật thể sẽ ở vị trí nào trong
tương lai cũng như môi trường sắp tới mà chúng ta sẽ phải đối mặt là gì. Chính vì thế
chúng tôi đã tiếp cận phương pháp Học tăng cường (Reinforcement Learning) - cụ thể là
Q-Learning để xe có thể học hỏi từ những kinh nghiệm lái trước đó, từ đó dự đoán được

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 62/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

từng trường hợp nên xử lý như thế nào.

4.2.1.1 Giới thiệu về Q-Learning


1. Nhắc lại về học tăng cường: Mục tiêu của học tăng cường là tối đa hóa phần
thưởng của một agent bằng cách thực hiện một loạt hành động để đáp ứng với môi
trường thay đổi liên tục.

Hình 60: Hình ảnh minh hoạ cách thực hoạt động của học tăng cường (reinforcement learning)

Học tăng cường là khoa học đưa ra quyết định tối ưu bằng cách sử dụng kinh
nghiệm. Khi chia nhỏ, quá trình Học tăng cường bao gồm các bước đơn giản sau:

Hình 61: Hình ảnh minh hoạ toán bộ quá trình hoạt động của học tăng cường (reinforcement
learning)

• Quan sát môi trường.


• Quyết định cách hành động bằng cách sử dụng một số chiến lược hành động
phù hợp.
• Nhận phần thưởng hoặc hình phạt.
• Học hỏi từ những kinh nghiệm và tinh chỉnh chiến lược.
• Lặp lại cho đến khi tìm được chiến lược tối ưu.

Có 2 loại thuật toán Reinforcement Learning (RL) chính: model-based và model-free.


Trong đó:

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 63/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

• Giải thuật model-free: Ước tính chính sách tối ưu mà không sử dụng hoặc
ước lượng tính dynamic (transition function và và reward function) của môi
trường.
• Giải thuật model-based: Sử dụng hàm chuyển đổi (transition function) và
hàm phần thưởng (reward function) để ước tính chính sách tối ưu.

2. Định nghĩa về Q-learning: Q-learning là một thuật toán model-free, value-based,


off-policy sẽ tìm ra chuỗi hành động tốt nhất dựa trên trạng thái hiện tại của
agent. “Q” là quality - viết tắt của chất lượng. Chất lượng thể hiện giá trị của hành
động trong việc tối đa hóa phần thưởng trong tương lai.

Các thuật toán model-based sử dụng các hàm chuyển tiếp (transition function)
và phần thưởng (reward function) để ước tính chính sách tối ưu và tạo mô hình.
Ngược lại, các thuật toán model-free tìm hiểu hậu quả của các hành động của chúng
thông qua trải nghiệm mà không thông qua các hàm chuyển tiếp và và phần thưởng.

Phương pháp value-based huấn luyện hàm giá trị (value function) để tìm hiểu trạng
thái nào có giá trị hơn và thực hiện hành động. Mặt khác, các phương pháp policy-
based trực tiếp để tìm hiểu hành động cần thực hiện trong một trạng thái nhất định.

Trong trường hợp off-policy, thuật toán sẽ đánh giá và cập nhật một chính sách
khác với chính sách được sử dụng để thực hiện một hành động. Ngược lại, thuật
toán theo chính sách sẽ đánh giá và cải thiện chính sách tương tự được sử dụng để
thực hiện một hành động.

3. Một số thuật ngữ:

• Q(st+1 , a): Giá trị Q tối ưu dự kiến để thực hiện action trong một state cụ thể.
• Q(st , at ): Ước tính hiện tại của Q(st+1 , a)
• Q-table: Agent sẽ sử dụng Q-table để thực hiện hành động tốt nhất có thể dựa
trên phần thưởng dự kiến cho từng trạng thái trong môi trường. Nói một cách
đơn giản, Q-table là cấu trúc dữ liệu gồm các tập hợp hành động (actions) và
trạng thái (states) và sử dụng thuật toán Q-learning để cập nhật các giá trị
trong bảng.
• Temporal Differences: Được sử dụng để ước tính giá trị kỳ vọng của Q(st+1 , a)
bằng cách sử dụng trạng thái và hành động hiện tại cũng như trạng thái và
hành động trước đó.
• Q-function: Q-function sử dụng phương trình Bellman và lấy các states và
actions làm đầu vào. Phương trình đơn giản hóa các giá trị trạng thái và tính
toán giá trị action/state. Phương trình Bellman được diễn tả như sau, ý nghĩa
cho biết rằng Q-value cho trạng thái đưa ra một trạng thái cụ thể sẽ bằng dự
kiến chiết khấu phần thưởng tích lũy khi đã biết trước một cặp (st , at )

Qπ (st , at ) = E[Rt+1 + γRt+2 + γ 2 Rt+3 + ...|st , at ]

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 64/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4. Cơ chế hoạt động của thuật toán Q-learning Hình ảnh tổng quát của thuật
toán Q-learning sẽ được mô tả như hình sau:

Hình 62: Hình ảnh minh hoạ quy trình hoạt động của thuật toán Q-learning

• Initialize Q-Table - Khởi tạo Q-Table: Đầu tiên chúng ta sẽ khởi tạo Q-table
bằng cách xây dựng bảng với các cột dựa trên số lượng hành động và hàng
dựa trên số lượng trạng thái.

Ví dụ, chúng ta có bốn actions (left, right, up, down) và bốn states (start, idle,
hole và end). Chúng ta sẽ có thể khởi tạo Q-table với các giá trị bằng 0 như
hình.

Hình 63: Hình ảnh minh hoạ khởi tạo Q-table

• Choose an Action - Lựa chọn Action: Khi bắt đầu, agent sẽ chọn thực hiện
hành động ngẫu nhiên và ở lần chạy thứ hai, agent sẽ sử dụng Bảng Q được
cập nhật để chọn hành động.
• Perform an Action - Thực hiện Action: Việc chọn một hành động và thực
hiện hành động đó sẽ lặp lại nhiều lần cho đến khi vòng huấn luyện dừng lại.
Action và state đầu tiên được chọn bằng Q-Table. Trong trường hợp của này,

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 65/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

tất cả các giá trị của Q-Table đều bằng 0.

Sau đó, agent sẽ di chuyển xuống và Q-Table bằng phương trình Bellman. Với
mỗi nước đi, chúng ta sẽ cập nhật các giá trị trong Q-Table và cũng sử dụng
nó để xác định hướng hành động tốt nhất.

Ban đầu, agent ở chế độ khám phá (exploration) và chọn một hành động ngẫu
nhiên để khám phá môi trường. Chiến lược "Epsilon greedy policy" là một
phương pháp đơn giản để cân bằng giữa khám phá (exploration) và khai thác
(exploitation). Epsilon là viết tắt của xác suất chọn khám phá và khai thác
khi có cơ hội khám phá nhỏ hơn.

Khi bắt đầu, tỷ lệ epsilon cao hơn, nghĩa là tác nhân đang ở chế độ khám phá
(exploration). Trong khi khám phá môi trường, epsilon giảm và các tác nhân
bắt đầu khai thác môi trường (exploitation). Trong quá trình khám phá, với
mỗi lần lặp lại, tác nhân trở nên tự tin hơn trong việc ước tính Q-value. Việc
xác định thực hiện action nào phụ thuộc vào biểu thức sau:
(
random action from A(s), if ξ < ϵ
π(s) =
argmaxa∈A(s) Q(s, a), otherwise

• Measuring the Rewards - Ước lượng phần thưởng: Sau khi thực hiện hành động,
chúng ta sẽ đo lường kết quả và phần thưởng. Ví dụ như sau:
– Phần thưởng khi đạt được mục tiêu là +1.
– Phần thưởng cho việc không làm gì là 0.
– Phần thưởng cho việc đi sai đường là 0.
• Update Q-Table - Cập nhật Q-Table: Chúng ta sẽ cập nhật hàm Q(st , at ) bằng
cách sử dụng phương trình sau:

Q(st , at ) ← Q(st , at ) + α[Rt+1 + γmaxQ(st+1 , a) − Q(st , at )]

Biểu thức trên sử dụng các Q-value được ước tính, learning rate và lỗi Tem-
poral Differences. Lỗi Temporal Differences được tính bằng cách sử dụng phần
thưởng hiện tại (Immediate reward), phần thưởng dự kiến tối đa trong tương
lai đã nhân với hệ số chiết khấu, và Q-value ước tính trước đây. Quá trình
này được lặp lại nhiều lần cho đến khi Q-table được cập nhật và hàm Q-value
được tối đa hóa. Khi bắt đầu, agent đang khám phá môi trường để cập nhật
Q-table. Và khi Q-Table đã sẵn sàng, agent sẽ bắt đầu khai thác và bắt đầu
đưa ra quyết định tốt hơn.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 66/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 64: Hình ảnh diễn tả chi tiết ý nghĩa của biểu thức cập nhật Q-table

5. Sự cải tiến của Epsilon Greedy Policy - Decaying Epsilon Greedy Policy:

Ý tưởng cải thiện của Epsilon Greedy Policy là Decaying Epsilon Greedy Policy.
Điều này giúp giảm số lượng episodes mà agent phải trải qua để có được kinh
nghiệm lấy phần thưởng cao nhất, bằng cách giảm epsilon qua mỗi episode. Sau
đây là đồ thị so sánh sự khác biệt giữa 3 loại policy.

Trong hình 65, biểu đồ cho thấy Total Regret của Decaying Epsilon Greedy Policy
rõ ràng thấp hơn các policy còn lại.

Hình 65: Hình ảnh so sánh giữa 3 policy dựa theo độ Total Regret

Trong hình 66, Greedy Policy chỉ tập trung vào khai thác. Bên cạnh đó, Epsilon
Greedy Policy và Decaying Epsilon Greedy Policy làm tốt nhất trong việc kết hợp
và xen kẽ. Tuy nhiên, Decaying Epsilon Greedy Policy cần ít hành động hơn khi
agent vượt qua môi trường với nhiều lần.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 67/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 66: Hình ảnh so sánh giữa 3 policies về số lượng hành động thực hiện

Cuối cùng, như chúng ta có thể thấy trong hình 67, Decaying Epsilon Greedy Policy
và Epsilon Greedy Policy, đều giữ ở đỉnh khi xét về tổng phần thưởng mà agent có
thể nhận được khi thực hiện các hành động qua từng thời gian.

Hình 67: Hình ảnh so sánh giữa 3 policies về tổng phần thưởng nhận được

Vì việc huấn luyện Q-learning cần để vật thể tương tác với thế giới xung quanh để
model có thể học hỏi từ những tương tác đó, chính vì thế phải lựa chọn một môi trường
phù hợp. Chúng ta có thể có những lựa chọn, đồng thời đi kèm một số ưu nhược điểm
sau:
• Môi trường thực tế:
– Ưu điểm: Có những tương tác thật hơn và đúng hơn trong trường hợp triển
khai xe chạy trong thực tế do các thông số dùng để huấn luyện đều là những
thông số được lấy từ thực tế.
– Nhược điểm: Có nhiều rủi ro, chẳng hạn như việc tiêu tốn nhiều tài nguyên
(điện), hư hỏng xe do va chạm, thời gian lâu do không điều khiển được mặt
thời gian trong thực tế, ...
• Môi trường mô phỏng Gazebo:

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 68/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

– Ưu điểm: Có những tương tác gần giống với môi trường thực tế vì được thiết
lập các chỉ số mô phỏng gần sát với thực tế.
– Nhược điểm: Việc chạy làm tiêu tốn nhiều tài nguyên máy tính vì chương trình
mô phỏng cực kì năng, không thể tối ưu được thời gian huấn luyện vì không
thể co dãn về mặt thời gian được.

• Môi trường mô phỏng sử dụng thư viện Pygame:

– Ưu điểm: Có thể tối ưu về mặt thời gian huấn luyện vì chỉ sử dụng một lượng
nhỏ tính toán (giảm tối đa về mặt đồ hoạ), toàn bộ tài nguyên dồn về việc
huấn luyện. Tuy nhiên vẫn sẽ thể hiện được đồ hoạ nếu cần thiết.
– Nhược điểm: Những thông số được thiết lập chưa thực sự sát với thực tế, phải
thông qua một số hàm biến đổi để chuyển từ dữ liệu thực tế sang cho input
của model được huấn luyện và ngược lại.

Dựa vào việc đánh giá các ưu điểm, cũng như nhược điểm. Vấn đề lớn nhất là về thời
gian huấn luyện. Chính vì thế chúng tôi sử chọn cách sử dụng môi trường mô phỏng với
thư viện Pygame để tạo ra môi trường và huấn luyện model Q-learning cho xe tự hành,
cụ thể là sử dụng cho việc né vật cản.

4.2.1.2 Giới thiệu về môi trường mô phỏng


Môi trường mô phỏng sẽ được chia làm 3 mode để thuận tiện cho việc điều khiển thủ
công (manual mode), huấn luyện (training mode), điều khiển bằng model Q-learning đã
được thông qua huấn luyện (deploy mode). Cụ thể hơn:

• Manual mode: Chế độ chỉ có thể điều khiển bằng bàn phím để tiện cho việc kiểm
thử xem môi trường đã được setup, lập trình đúng hay chưa vì nếu sai sẽ ảnh hưởng
đến kết quả huấn luyện.

• Training mode: Chế độ cho phép chương trình tắt hết tất cả đồ hoạ để tập trung
sức mạnh máy tính cho việc huấn luyện model, từ đó tối ưu về mặt thời gian huấn
luyện. Tuy nhiên vẫn linh hoạt có thể visualize để xem diễn biến của quá trình huấn
luyện nếu cần thiết.

• Deploy mode: Chế độ này khi được bật thì hoàn toàn tự động chạy và né vật cản
mà không có sự can thiệp của con người. Ở chế độ này cần thiết việc đã có sẵn một
bảng Q-table đã được huấn luyện trước đó để làm đầu vào và cũng là luật để agent
có thể dựa vào tuân theo.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 69/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.2.1.3 Đặc tả môi trường mô phỏng

Hình 68: Giao diện môi trường của PyGame

Bên trên là giao diện môi trường của quá trình huấn luyện. Điểm đỏ viền đỏ tượng
trưng cho robot, điểm đỏ viền xanh tượng trưng cho vật cản. Cả hai đều có một thanh
xanh lá đại diện cho hướng di chuyển. Các tính chất của vật cản bao gồm:

• Kích thước: 10 pixel

• Vùng xuất hiện: Vùng có viền xanh lá

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 70/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

• Hành vi: Đứng im, không di chuyển


Ngoài ra, việc sinh các vật thể phải thoả điều kiện luôn tồn tại ít nhất một đường
đi từ vùng đỏ sang vùng xanh dương sao cho robot luôn nằm bên trong vùng xanh
lá.
Tính chất của robot bao gồm:
• Kích thước: 10 pixel
• Vùng xuất hiện: Vùng có viền đỏ, với góc tạo thành giữa vector hướng của robot
và trục tung không quá 90 độ.
• Mục tiêu: Di chuyển trong phạm vi vùng đỏ và xanh lá sao cho tới được vùng
xanh dương. Không được quay đầu về phía sau (tích vô hướng giữa vector hướng
và trục tung là âm).
Ngoài ra, việc sinh vị trí robot phải thoả điều kiện trong vùng lidar của robot không
có vật thể nào.

4.2.1.4 Xác định bộ states, actions và hàm reward


Sau quá trình thử nghiệm lâu dài, chúng tôi đã rút trích ra một mô hình với bộ states,
actions và hàm reward mang lại kết quả đáp ứng được nhu cầu né vật cản tốt nhất trong
quá trình thử nghiệm của nhóm.
• Đặc tả action: Danh sách action bao gồm
– Đi tới: Robot đi về phía trước một khoảng s
– Đi lùi: Robot đi lùi về sau một khoảng s
– Quay trái: Robot quay sang trái một khoảng b
– Quay phải: Robot quay sang phải một khoảng b
Trong đó, s là một khoảng cách mang tính tượng trưng, trong quá trình thử nghiệm,
nhóm thiết lập s là 5 pixel. b có giá trị là 18 độ. Lí do có con số 18 sẽ được giải
thích bên dưới, vì giá trị này sẽ ảnh hưởng đến số state và hành vi của robot.
• Đặc tả state:

Hình 69: 3 vùng lidar của robot

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 71/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Mỗi state là sự kết hợp của 5 trạng thái theo thứ tự là ABCDE với các giá trị sau:

– A (0-1) Nếu có vật thể trong phạm vi vùng 1, trạng thái A sẽ là 1, ngược lại
sẽ là 0.
– B (0-1) Nếu có vật thể trong phạm vi vùng 2, trạng thái B sẽ là 1, ngược lại
sẽ là 0.
– C (0-1) Nếu có vật thể trong phạm vi vùng 3, trạng thái C sẽ là 1, ngược lại
sẽ là 0.
– D(0-9) Đại diện cho hướng di chuyển của robot, vì robot chỉ quay một góc 18
độ mỗi lần, nên trong phạm vi góc -90 đến 90, ta có 10 giá trị góc mà robot
có thể tồn tại.
– E(0-9) Đại diện cho vị trí robot so với chiều ngang của vùng xanh lá. Ta chia
vùng xanh lá ra thành 10 vùng theo chiều dọc và đánh số từ 0 đến 9 từ trái
qua phải, trạng thái E sẽ là giá trị vùng mà robot đang ở. Nghĩa là nếu robot
đang ở giữa làn đường, E có thể là 4 hoặc 5, tận cùng bên trái là 0 và tận cùng
bên phải là 9.

Tổng cộng, ta sẽ có tất cả 800 state và 4 action.

• Đặc tả hàm reward:

– Trừ 100 điểm Nếu có vật thể nằm trong vùng 2.


– Trừ 10000 điểm Nếu robot cách lề trái hoặc lề phải dưới 40 pixel.
– Trừ 50 điểm Nếu robot nằm về phía bên trái nhưng có action quay trái hoặc
nằm bên phải nhưng action quay phải.
– Trừ 100 điểm Nếu robot có action đi lùi.
– Trừ 50 điểm Nếu robot chọn quay trái hoặc quay phải.
– Sau khi thực hiện action, robot sẽ gần điểm giữa làn đường hơn một khoảng
x. Reward sẽ được cộng 10x nếu ít nhất một trong ba vùng lidar có vật thể và
50x nếu không có vật thể nào.
– Sau khi thực hiện action, robot sẽ tiến lên một khoảng s theo phương y, reward
được cộng thêm 2s.
– Reward sẽ được cộng một khoảng bằng góc giữa hướng di chuyển robot và trục
tung, nhân với 0.5.
– Trừ 1 triệu điểm và reset môi trường Nếu Robot quay lưng về vùng xanh
dương.
– Trừ 1 triệu điểm và reset môi trường Nếu robot không nằm trong vùng
xanh lá hoặc đỏ.
– Trừ 1 triệu điểm và reset môi trường Nếu robot va chạm với vật thể.
– Reset môi trường Nếu vật thể tới được vùng xanh dương.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 72/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.2.1.5 Thiết kế kịch bản huấn luyện


Ta sẽ cho robot tham gia liên tục những màn chơi, mỗi màn chơi bao gồm nhiều
lượt chơi. Khi có một màn chơi mới, vị trí các vật cản sẽ được đặt lại ngẫu nhiên. Nếu
robot có thể đi tới vùng xanh một số lần nhất định, ta xem như robot hoàn thành màn
chơi và qua màn tiếp theo. Nếu không, ta sẽ đặt robot về lại vùng đỏ, các vật cản không
bị thay đổi. Dưới đây là những tham số cụ thể hơn về môi trường dùng để huấn luyện
model được sử dụng trong quá trình demo. với ϵ α và γ là những tham số của phương
trình Q-function (tham khảo mục 4.2.3).

Tham số Giá trị


Chiều dài môi trường 800
Chiều rộng môi trường 200
Số lượng vật cản 10
Bán kính vật cản 10
Bán kính lidar 120
Số lượng action đối đa mỗi lượt 500
Số lượng lượt chơi cần để qua màn 20
ϵ từ 0.41 đến 0.01
α từ 0.2 đến 1
γ 0.8

Để robot tập trung hơn trong việc khám phá môi trường, mỗi một màn chơi mới, ϵ sẽ
có giá trị ban đầu là 0.41 và giảm 0.02 cho mỗi lượt chơi tới được đích.
Trong 100000 lượt chơi đầu tiên, α sẽ tăng dần đều từ 0.2 đến 1 và duy trì giá trị cho tới
khi hoàn tất quá trình train.

4.2.1.6 Đánh giá

Ở Q-table sử dụng trong demo, nhóm đã train tổng cộng 3314 màn chơi, 700492 lượt
chơi với tổng thời gian chạy khoảng 7 giờ. Biểu đồ thể hiện sự biến đổi các tham số trong
quá trình huấn luyện được thể hiện bên dưới.

Hình 70: Sự biến thiên reward so với số lượt chơi

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 73/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 71: Số lượt chơi cần thực hiện để hoàn thành một màn chơi

Hình 72: Độ bao phủ của những tham số được huấn luyện so với màn chơi

Tuy nhiên, ta có thể có thể nhận thấy một số nhược điểm sau:

1. Thiếu thông tin vận tốc các vật thể xung quanh: Về cơ bản, những gì con
người làm được thì AI mới có thể thực hiện được. Việc thiếu thông tin vận tốc mà
khi vật thể xung quanh chuyển động là vô cùng nguy hiểm và không khả thi để
di chuyển. Chính vì thế việc cần nạp thêm thông tin vận tốc của các vật thể xung
quanh là cần thiết.

2. Các giá trị state là rời rạc dẫn đến bùng nổ states: Dựa vào việc thiếu thông
tin vận tốc, giả sử rằng việc biết thông tin vận tốc là có thể đạt được thì vấn đề lại
nằm ở chỗ chia state sao cho hợp lý và hiệu quả từ thông tin vận tốc (vốn dĩ là dữ
liệu liên tục) sang tín hiệu rời rạc.

3. Vùng quan sát còn yếu: Có thể thấy thay vì sử dụng toàn bộ vòng cung trước
mặt thì hiện tại chỉ được nhận diện trong vùng 3 ô chữ nhật. Điều này làm tăng
nguy cơ agent bị đụng khi có vật thể di chuyển vào vùng không được sự phát hiện
tín hiệu.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 74/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.2.2 Hướng tiếp cận 2: Sử dụng giải thuật Best First


Do sự thiếu hụt về phần cứng, và những điểm yếu ở hướng tiếp cận Q-Learning. Nên
ta cần hướng tiếp cận khác có thể thích ứng với robot có phần cứng yếu nhiều hơn. Bằng
cách sử dụng giải thuật tìm kiếm đường đi Best First.

Sau đây là hình ảnh để chúng ta có một cái nhìn tổng quan hơn về cách mà module
né vật cản hoạt động.

Hình 73: Hình ảnh giới thiệu tổng quan về module né vật cản

4.2.2.1 Cơ chế hoạt động của Best First


Thuật toán Best First Search là một dạng tổng quát của thuật toán Dijkstra. Nó
khác với thuật toán Dijkstra ở cách nó quyết định node nào sẽ được khám phá tiếp theo.
Trong khi Dijkstra luôn mở rộng node với chi phí thấp nhất, Best First Search sử dụng
estimation function để xác định node hứa hẹn nhất để khai phá tiếp theo. Estimation
function được tính theo công thức sau:

f (n) = g(n) + h(n) (1)

Trong đó:

• f (n): estimation function hay evaluation function

• g(n): chi phí thực tế từ node bắt đầu đến node n hay độ dài đường đi từ node bắt
đầu đến node n

• h(n): chi phí ước tính từ node n đến node goal hay độ dài ước tính từ node n đến
node goal

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 75/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Trong đó h(n) là một hàm heuristic. Hàm heuristic sẽ tính toán chi phí chấp nhận
được để đi đến node goal từ bất kỳ node nào. Một số đặc điểm của hàm heuristic tốt:

• Admissibility (tính chấp nhận): Không được đánh giá quá cao khoảng cách
thực tế đến node goal. Điều này giúp đảm bảo thuật toán có thể tìm thấy đường đi
tối ưu.

• Consistency (tính nhất quán): Những thay đổi nhỏ trong map sẽ dẫn đến những
thay đổi nhỏ trong giá trị khám phá. Điều này cải thiện hiệu suất và tốc độ của
thuật toán.

• Computational (tốc độ tính toán): Sở hữu tốc độ tính toán nhanh.

Một số hàm heuristic cơ bản thường được sử dụng:

• Khoảng cách Manhattan: được tính bằng công thức độ dài Manhattan. Đây là
một hàm heuristic đơn giản nhưng hiệu quả cho ma trận lưới.

• Khoảng cách Euclide: được tính bằng công thức độ dài khoảng cách đường thẳng
giữa hai điểm. Khoảng cách Euclide có thể chấp nhận được nhưng thường không
nhất quán.

Hình 74: Khoảng cách Manhattan và khoảng cách Euclide

Sau khi tính toán estimation function, node có giá trị f(n) thấp nhất sẽ được chọn
làm node tiếp theo cần duyệt. Điều này làm cho Best First search trở thành thuật toán
informed" search algorithm (tìm kiếm khi có đầy đủ thông tin), bởi vì nó sử dụng thông
tin về điểm goal truyền vào hàm heuristic để đưa ra quyết định tốt hơn về việc mở rộng
các node nào. Bên cạnh đó, giá trị g(n) đảm bảo rằng các node đã biết chi phí thực có
sự ưu tiên cao hơn giá trị h(n). Sự kết hợp giữa g(n) và h(n) trong f(n) mang lại sự cân
bằng tốt giữa thăm dò và khai thác trong quá trình tìm kiếm.

Dưới đây là kết quả chạy giải thuật Best First trong bộ thư viện pathfinding3 trong
Python và một số giải thuật tìm đường khác. Trong môi trường MacBook Pro (13-inch,
M2, 2022), 8-core CPU, 16GB RAM, với 1000 lần chạy với map có kích thước 50x50, so
sánh với một số giải thuật tìm đường khác, ta thấy Best First cho ra kết quả với tốc độ
xử lý nhanh hơn các giải thuật tìm đường tương tự:
3
Bộ thư viện python của tác giả Andreas Bresser [22]

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 76/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Bảng 2: So sánh thời gian chạy của các giải thuật tìm đường
Min time (s) Max time (s) Mean time (s)
A Star 0.00213 0.02388 0.01036
Dijkstra 0.00239 0.02328 0.01046
Best First 0.00054 0.00894 0.00150
Bi A Star 0.00108 0.01012 0.00356
Breadth First 0.00189 0.00812 0.00457

4.2.2.2 Ánh xạ môi trường thật lên map tự vẽ

Ở hướng tiếp cận này, ta cũng ánh xạ vật cản từ môi trường lên map mà ta tự vẽ.
Map này có các tính chất sau:
• Kích thước: Map là một mảng 2 chiều, có kích thước 50x50 pixels, ứng với kích
thước thật là 100x100 cm2 . Như vậy một pixel trên map sẽ ứng với một vùng
2cmx2cm trên thực tế.
• Vị trí robot: Robot luôn nằm ở trung tâm của bức hình (tọa độ (25,25)).
• Góc nhìn: Map được vẽ dựa trên góc nhìn của robot. Nói cách khác, cạnh trên
cùng của map sẽ biểu hiện những vật cản trước mặt robot, nếu robot xoay sang
phải, thì các vật cản (giả sử tĩnh) sẽ quay sang trái.
• Vật cản: Các vật cản nhận được từ lidar sẽ được phình lên (bằng hàm dilate của
thư viện openCV) và ánh xạ vào map. Độ phình cả vật cản có độ lớn bằng bán kính
của robot. Do robot chỉ được thể hiện là 1 điểm (1 pixel) trong hình, đại diện cho
tâm của robot, nên nếu ta không tiến hành phình vật cản, robot khi di chuyển sẽ va
vào nửa thân của robot. Ngoài ra, do robot chỉ nhận diện được vật cản trong tầm
quét của lidar, nên các vật cản thấp hơn tầm của robot sẽ không được phát diện.
• Làn đường: Tín hiệu làn đường từ Khối nhận diện làn đường sẽ được vẽ lên map,
với độ dày 2 pixel (4cm ngoài thực tế). Việc làm dày làn đường giúp cho robot
không lấn quá nhiều ra khỏi làn đường.

(a) Thông tin từ lidar hiển (b) Sau khi phình vật cản (c) Sau khi crop lại
thị lên map kích thước thật bằng kích cỡ map
(1 pixel = 1cm) mong muốn

Hình 75: Ánh xạ thông tin lidar lên map

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 77/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Trong đó, thông tin từ môi trường thực tế, sẽ được robot thu thập thông qua lidar,
và tín hiệu làn đường được gửi từ module làn đường. Đối với thông tin trích xuất từ
lidar, do đây là phần cứng có tốc độ gửi dữ liệu không quá nhanh, chỉ 20 FPS. Bên cạnh
đó, tốc độ xử lý của khối module làn đường có phần chậm hơn vào khoảng 0.1 đến 0.15
giây tương đương 8 FPS.

Việc cập nhật thông tin từ môi trường sẽ được chạy song song với giải thuật tìm làn
đường. Mỗi khi lidar hay module làn đường gửi tín hiệu đến, hệ thống sẽ lưu đè giá trị
mới nhất vào biến. Và cứ cách mỗi 0.1 giây, hệ thống sẽ gọi hàm tìm đường đi với những
giá trị mới nhất từ môi trường để đem đi tính toán.

4.2.2.3 Cách chọn điểm goal ở từng frame


Trước tiên, ta cần xác định từ "goal ở từng frame" có ý nghĩa gì? Goal ở đây không
phải là điểm goal cuối cùng mà xe hướng tới, cũng không phải điểm goal mà khi robot
đến được thì tiến trình sẽ chấm dứt. Điểm goal trong ngữ cảnh này là điểm goal tạm
thời, có giá trị ở frame hiện tại. Đây là tọa độ mà robot sẽ hướng tới ở một thời điểm,
hay đây là điểm đích sẽ được truyền vào giải thuật best first nhằm tìm đường đi khi
né vật cản. Khi qua frame mới, các thông tin vật lý sẽ được cập nhật (như vị trí 2 làn
đường, tọa độ vật cản), khi này một hoặc nhiều điểm goal tạm thời mới sẽ được tính
toán lại. Nhằm tiện cho việc diễn đạt, thuật ngữ "goal" bên dưới mang hàm ý các điểm
goal tạm thời, có giá trị trong 1 frame. Chính nhờ việc xác định lại điểm goal sau từng
frame, mà robot có khả năng né vật cản động chậm và có quỹ đạo đơn giản.

Do bài toán mà nhóm đang giải quyết là hỗ trợ điều hướng xe tự hành trên đường
có 2 làn được phân cách bởi nét đứt. Nên nếu xe chỉ có khả năng né vật cản, thì xe có
thể rơi vào trường hợp chạy đè lên đường nét đứt. Chính vì thế, ngoài việc chỉ né vật cản
trên đường, xe còn có khả năng trở về trung điểm của lane đường gần robot nhất. Như
vậy để hành vi của robot sẽ thân thiện và thực tế hơn, ta sẽ chọn goal là trung điểm của
mỗi làn đường xe có thể chạy.

Hình 76: Vị trí đặt điểm goal

Như hình trên, ở loại làn đường đôi 2 làn điển hình, ta có thể xác định được 2

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 78/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

goal cùng lúc, ứng với hai trung điểm của 2 làn đường. Hai điểm này được xác định
là điểm nằm trong đoạn thẳng nối hai điểm A và B (như hình 76). Với A, B lần
lượt là điểm trên cùng bên trái và điểm trên cùng bên phải của làn đường. Khi này
điểm goal bên trái (điểm màu xanh lá) sẽ cách A một khoảng bằng 1/4 độ dài đoạn
thẳng AB, tương tự với điểm goal bên phải (màu xanh ngọc) có vị trí cách B một
khoảng tương đương. Như vậy, việc chọn goal thích hợp sẽ giúp hành vi của robot
thân thiện và có thể né được vật cản một cách chính xác. Ngoài ra, để giúp cải thiện
hành vi né vật cản một cách an toàn hơn, mỗi khi có vật cản ở một làn đường (trình
bày ở Hướng 3 bên dưới), thì xe sẽ chọn làn đường còn lại để đi. Trong trường hợp
vật cản ở vị trí bất kỳ hơn, xe sẽ tiến hành chọn goal mà robot gần hơn (trình bày ở
Hướng 2 bên dưới). Chính vì thế, nhóm đã áp dụng một số cơ chế chọn điểm goal như sau:

a) Hướng 1: Kiểm tra một goal có bị chặn hay không

Nếu một trong hai điểm goal ta hướng đến đã bị chặn bởi vật cản, một cách tự nhiên
nhất, ta sẽ hướng robot đến điểm goal còn lại.

Hình 77: Khi chỉ có một goal bị chặn

Với trường hợp 2 goal đều không bị chặn, ta sẽ áp dụng Hướng 2 để kiếm điểm goal
phù hợp với vị trí hiện tại của robot.

Hình 78: Trường hợp cả hai goal đều trống

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 79/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Tuy nhiên, đối với trường hợp cả 2 điểm goal đều bị chặn như hình 79, ta có thể
thấy, vẫn tồn tại đường đi hướng về phía trước (khe hở giữa vật cản và làn đường
bên phải như hình). Nếu ta không xử lý, giải thuật Best First sẽ không thể tìm ra
đường đi đến goal đã bị chặn. Cũng như việc ta không thể đi vào bên trong núi
nếu không có đường hầm. Khi này, ta sẽ tiến hành xóa 1 hàng ngang tại điểm goal
như hình 79a, nhằm hỗ trợ giải thuật tìm đường có thể kiếm được đường đi tạm
thời. Và sau một khoảng thời gian, khi xe đã tiến tới một vị trí gần vật cản hơn,
điểm goal mới sẽ được xác lập xa hơn (do điểm cuối làn đường A, B đã được dịch
xa hơn), khi này giải thuật Best First sẽ hoạt động lại một cách bình thường như hình 79b.

(a) Before (b) After

Hình 79: Trường hợp cả hai goal bị chặn

Như vậy, liệu việc xóa một hàng khi hai goal đang bị chặn có phải giải pháp hiệu quả
trong trường hợp đường thật sự bị chặn? Trong trường hợp vật cản đã chặn hết đường
như hình 80, khi này việc xóa đi 1 hàng ở 2 điểm goal không ảnh hưởng đến giải thuật
tìm đường, bởi sau khi xóa, vẫn không tồn tại đường đi từ robot tới được goal.

Hình 80: Trường hợp vật cản chặn hết đường đi

b) Hướng 2: Dựa vào khoảng cách từ robot đến 2 làn đường

Ta sẽ tính khoảng cách từ robot đến làn đường bằng độ dài hình chiếu vuông góc từ
robot đến đường thẳng nối dài của làn bên trái và làn bên phải như hình 81. Khi này, ta

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 80/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

sẽ chọn điểm goal mà có độ dài hình chiếu là nhỏ hơn. Nếu trong trường hợp có độ dài
hình chiếu bằng nhau, ta sẽ chọn điểm goal bên phải.

(a) Before: Vị trí của xe gần làn (b) After: Vị trí của xe gần làn
đường bên phải hơn đường bên trái hơn

Hình 81: Chọn goal dựa vào khoảng cách từ robot đến làn đường

c) Hướng 3: Kiểm tra khoảng trống phía trước goal

Ở hướng thứ 1, việc định goal đã khá hoàn thiện, tuy nhiên, ở một vài trường hợp
như hình 82. Trong hình này, vị trí goal cả 2 bên đều trống, nên việc định goal sẽ theo
Hướng 2 (dựa vào khoảng cách) để định đoạt. Tuy nhiên, vị trí của robot lại lệch về bên
làn đường trái. Từ hai điều trên, goal được chọn sẽ là goal bên trái. Khi này đường đi sẽ
hướng robot vào goal bên trái trước (đâm đầu về hướng có vật cản), rồi mới bẻ cua gắt
qua phải để né. Như vậy hành vi của robot sẽ bị lắc, đồng thời rủi ro khi né cũng tăng cao
(do né bẻ cua gắt). Chính vì thế việc kiểm tra khoảng trống hình chữ nhật trước robot
có tồn tại vật cản hay không. Như trường hợp trên, điểm goal sẽ được đổi thành điểm
goal còn lại (goal bên phải), giúp hành vi của robot được ổn định và an toàn hơn.

Hình 82: Xét khoảng trống trước goal

4.2.2.4 Điều khiển vận tốc cho xe dựa vào đường đi đến đích và biển báo:
Nhằm điều chỉnh cho vận tốc xe mượt mà, và phù hợp với hướng robot hướng tới, ta
nhân với vận tốc thẳng và vận tốc góc một giá trị sin và cos.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 81/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 83: Hướng di chuyển của robot (Góc tọa độ được đặt theo góc tọa độ trong openCV)

Đầu tiên, ta cần xác định hướng di chuyển của robot bằng cách dựa vào kết quả của
giải thuật Best First. Giải thuật Best First trả về danh sách tọa độ các pixel thể hiện
đường đi từ điểm bắt đầu (robot) đến điểm kết thúc (goal). Khi này, ta chọn pixel thứ
84 (điểm N trong hình) trong danh sách tọa độ trên để tính vector hướng di chuyển của
−−→
robot (vector M N ). Như vậy, nhằm xác định hướng quay trái/phải, ta có thể dễ dàng
−−→ −→
kiếm được góc α hợp bởi vector M N và vector Ox. Nếu góc α < 90◦ , robot hướng qua
phải, và ngược lại nếu α > 90◦ , robot hướng qua bên trái.

Trong thực tế, khi chạy thẳng, ta thường chạy ở một vận tốc tối đa mà mỗi người có
thể xử lý được. Và khi người lái chuẩn bị quẹo, thì tuỳ vào vận tốc quẹo (quẹo gắt hay
không) mà người lái xe thường giảm vận tốc tới và tăng vận tốc quẹo. Như vậy, vận tốc
góc và vận tốc thẳng tỉ lệ nghịch với nhau. Từ hình 83, khi α = 90◦ , xe sẽ đi thẳng và có
vận tốc thẳng lớn nhất cũng như vận tốc góc = 0. Và ngược lại khi α = 0◦ hoặc α = 180◦ ,
vận tốc thẳng = 0 và vận tốc góc đạt tối đa. Ta viết được phương trình vận tốc tương
quan đó:
(
vlinear = vlinear(max) × cos(| π2 − α|)
(2)
|vangular | = vangular(max) × sin(| π2 − α|)

Trong đó:

• vlinear : Vận tốc thẳng của robot (m/s)

• vangular : Vận tốc góc của robot (rad/s), với vận tốc dương robot sẽ hướng về bên
trái và vận tốc âm robot sẽ hướng về bên phải. Dấu của vangular sẽ phụ thuộc vào
phép so sánh góc α và 90◦

• vlinear(max) , vangular(max) : Các hằng số chỉ vận tốc tối đa, lần lượt là vận tốc thẳng
tối đa và vận tốc góc tối đa
4
Được chú thích trong bảng thông số (bảng 12)

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 82/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

−−→ −→
• α: Góc tạo bởi M N và Ox
Bên cạnh các hàm tính toán trên, giá trị biển báo được khối module phân biệt biển
báo có độ ưu tiên cao hơn, nên có khả năng ghi đè giá trị hiện tại. Chính vì thể hành vi
của robot sẽ bị ảnh hưởng bởi loại biển báo mà khối module phân biệt biển báo gửi đến.
Có một số hành động ứng với 5 loại biển báo (hình 23):
• Dừng: Khi thấy biển báo này, robot sẽ ngừng di chuyển, và đứng im tại vị trí.
• Cấm: Đường thẳng phía trước là đường cấm, robot sẽ tiến hành rẽ trái hoặc phải.
• Rẽ trái: Robot tiến hành rẽ trái.
• Rẽ phải: Robot tiến hành rẽ phải.
• Đi thẳng: Robot tiếp tục đi thẳng và bỏ qua ngã ba hoặc ngã tư.

4.2.2.5 Cơ chế xoay map khi không có tín hiệu từ khối nhận diện làn đường
Tuy nhiên, việc quá phụ thuộc vào module UNet của module nhận diện làn đường
cũng kèm theo rủi ro như:
• Không tồn tại làn đường trong khung hình (do xe có hành vi nghiêng để né vật
cản).
• Module UNet bị nhiễu nên kết quả sai. Đối với trường hợp này, module nhận diện
làn đường sẽ không gửi tính hiệu về.
• Module nhận diện làn đường gửi tính hiệu về chậm.
Nhằm giải quyết được vấn đề trên, ta có thể căn cứ vào vận tốc hiện tại của robot
mà áp dụng cơ chế xoay map mỗi khi hàm Best First được gọi nhưng, chưa có dữ liệu
mới về làn đường.

Dựa vào vận tốc góc (rad/s) và vận tốc tới (m/s), ta có thể dễ dàng vẽ được phương
trình di chuyển của robot như hình bên dưới:

Hình 84: Vị trí của robot ở thời điểm t và thời điểm t+1

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 83/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Khi này, đường tròn của quỹ đạo robot di chuyển sẽ có bán kính R và góc quay α theo
công thức:

R = v/ω (3)

α = ω × ∆t (4)

Trong đó:

• v: Vận tốc theo phương thẳng của robot (pixel/s)

• ω: Vận tốc góc của robot (rad/s)

• R: Bán kính quỹ đạo đường tròn (pixel)

• ∆t : thời gian từ tọa độ chính xác cuối cùng đến khi hàm Best First được gọi

• α: Góc tạo ra khi robot di chuyển trong khoảng thời gian ∆t (như hình 84)

Từ hình 84, Ta thấy được robot sẽ dịch chuyển 1 đoạn có độ dài là BH theo phương
thẳng đứng, và AH theo phương ngang:

AH = AB × sin(α/2)
(5)
= (2R × sin(α/2)) × sin(α/2)

BH = AB × cos(α/2)
(6)
= (2R × sin(α/2)) × cos(α/2)

Sau khi ta tính được độ dịch của robot, ta có thể ánh xạ được sự thay đổi vị trí của
các vật cản. Tuy nhiên, do yếu tố góc nhìn của map tương ứng với góc nhìn của robot.
Nên khi này robot đã quay mặt sang một góc α, nên tọa độ các vật cản lúc này cần quay
một góc −α theo công thức xoay:
(
Px′ = Ax + (Px − Ax ) × cos(α) − (Py − Ay ) × sin(α)
(7)
Py′ = Ay + (Px − Ax ) × sin(α) − (Py − Ay ) × cos(α)

Trong đó:

• P : tọa độ của vật cần xoay

• P ′ : tọa độ của vật sau khi xoay

• A: tọa độ của robot làm tâm để xoay

• α: góc cần xoay

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 84/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.2.3 So sánh các hướng tiếp cận


Dưới đây là bảng so sánh hai hướng tiếp cận của module né vật cản:
Bảng 3: So sánh hai phương pháp tiếp cận

Hướng tiếp cận 1: Q-Learning Hướng tiếp cận 2: Best First


Search
Thời gian hiện Cần tốn nhiều thời gian train. Có thể tích hợp dễ dàng và nhanh
thực chóng.
Tính khả thi Tính khả thi thấp trong việc de- Tính khả thi cao hơn do có thể
ploy lên robot, cũng như việc chứng minh biện chứng bằng toán
thiết kế hàm reward gặp khó học.
khăn.
Phạm vi né vật Có khả năng mở rộng vùng né vật Chỉ có thể né vật cản phía trước
cản cản lên tới 360◦ (nhưng sẽ gặp mặt từ 0◦ đến 180◦ (hình 132).
một số nhược điểm về bùng nổ
state, và cần phương và độ lớn
vận tốc của vật cản).
Độ an toàn khi Phụ thuộc vào hàm reward khi Nhờ vào việc phình vật cản, ta có
né vật cản train Reinforcement Learning, ta thể đảm bảo robot né vật thể ở
có thể hướng hành vi robot né vật một khoảng cách an toàn.
cản ở một khoảng cách an toàn,
không quá sát vật cản.
Bộ nhớ dữ liệu Cần lượng lớn bộ nhớ để lưu trữ Cần ít bộ nhớ hơn.
Q-Table do bùng nổ state.
Tốc độ xử lý Có tốc độ xử lý nhanh O(1). Tốc độ xử lý phụ thuộc vào kích
thước của map O(n * log n)
với n là tổng số pixel của map.
Tuy nhiên, nhờ cơ chế thu gọn
map thành 50x50, nên thời gian ở
phương pháp này được cải thiện
đáng kể.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 85/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.3 Module nhận diện và phân loại biển báo giao thông
4.3.1 Bộ dữ liệu dùng để huấn luyện

Hình 85: Tập dataset dùng để train model

Bộ dữ liệu huấn luyện là tập dataset của Đức [7], tập biển báo này bao gồm 2405
tấm hình của mỗi loại biển báo như hình 85. Mặc dù có tổng cộng 53 biển báo trong bộ
dữ liệu này, tuy nhiên nhóm chỉ sử dụng 5 biển báo dại diện trong phạm vi đề cập gồm:
cấm, dừng, đi thẳng, quẹo trái và quẹo phải.

4.3.2 Chi tiết về kiến trúc mạng CNN được sử dụng trong bài toán Traffic
Sign Classification
CNN (Mạng thần kinh chuyển đổi) là một loại mạng thần kinh phổ biến thường được
sử dụng trong học sâu cho các tác vụ xử lý hình ảnh và video, chính vì thế nó phù hợp
cho bài toán phân loại biển báo.

4.3.2.1 Kiến trúc model Traffic Sign Classification


Như đã giới thiệu sơ bộ ở trên CNN (Convolutional Neural NetWork) là Mạng nơ-ron
tích chập, đây là một trong những mô hình deep learning được sử dụng phổ biến hiện
nay. Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác
cao như hiện nay.

Trong CNNs có sử dụng quá trình trượt một window trong một ma trận ảnh như
hình 87. Cụ thể ta sẽ trượt khối màu cam 3x3 trên một ma trận ảnh cần detect vật gì
đó (ma trận ảnh sẽ lớn hơn khối màu cam). Kích thước của khối màu cam sẽ được gọi là
filter. Và sau khi trượt hết ma trận ảnh, ta sẽ thu được Convolved Feature.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 86/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 86: Hình ảnh minh họa về Sliding window

Mạng CNN là tập hợp của nhiều lớp Convolution chồng lên nhau. Ta có thể áp dụng
các hàm nonlinear activation như ReLU, softmax, hàm optimizer như adam và hàm loss
cụ thể là categorical_crossentropy.

Khi đó, Các layer liên kết được với nhau thông qua cơ chế convolution. Như vậy,
mỗi neuron ở lớp kế tiếp được sinh ra từ kết quả của filter áp đặt lên một vùng
ảnh của neuron trước đó. Và trong mỗi một layer đó, ta lại sử dụng các thông số
khác nhau, cùng với các layer khác nhau như (conv2D, MaxPooling, Flatten, Dense,
....) Như vậy tùy thuộc vào các lớp layer và các thông số, ta sẽ đạt được model mong muốn.

Hình 87: Ví dụ về CNNs Layers

Lưu ý: Ta không thể tìm được một model có thể thỏa mãn tất cả các trường hợp
được. Nên chỉ cố gắng tăng độ chính xác cao nhất có thể cho các model.

Ban đầu nhóm áp dụng theo một giải thuật có sẵn trên mã nguồn mở, nhưng không
đạt được yêu cầu của nhóm. Model sau khi train gặp tình trạng overfitting (nghĩa là
model lúc testing trên các tập dữ liệu mới thì không thể classify ra đúng biển báo, và dù
kết quả ra sai, nhưng accuracy mà model thông báo lại rất cao).

Chính vì thế nhóm tuy vẫn giữ nguyên các lớp layer, nhưng thay đổi các thông số như
filter và của layer Dense. Cụ thể ta có bảng tóm tắt model sau (hình 88):

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 87/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 88: Tóm tắt các layer trong model

4.3.2.2 Huấn luyện và đánh giá kết quả


Nhóm có thu thập số liệu và vẽ các biểu đồ liên quan đến quá trình train. Đường diễn
tả màu đen là tập train và màu xanh lá là tập validation.

Hình 89: Sự thay đổi của Accuracy theo Epoch

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 88/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 90: Sự thay đổi của Loss theo Epoch

4.3.3 Hướng tiếp cận 1: Sử dụng Native Computer Vision kết hợp với Con-
volutional Neural Network
Để phân biệt được biển báo trên đường ta cần trải qua 2 bước chính: traffic sign
detection và traffic sign classification.

• Traffic sign detection: camera của turtlebot là một camera nhìn bao quát, trong
góc nhìn đó có cả biển báo, phần lane đường, và một bộ phận gây nhiễu như bầu
trời, cây cối, ... Traffic sign detection là việc giúp tìm ra vùng chú ý (interest place)
đúng ngay vùng có biển báo và crop hình có biển báo đó ra, sau đó mới tiến hành
phân biệt biển báo gì.

• Traffic sign classification: đây là bước quan trọng nhất, là yếu tố quyết định độ
thành công của xe. Nhiệm vụ của classification là tìm ra được model có thể nhận
biết được nhiều biển báo nhất, và độ chính xác không quá thấp.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 89/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 91: Giới thiệu tổng quan về module phân biệt biển báo

4.3.3.1 Nhận diện biển báo (Traffic sign detection)


Hệ thống xử lý dữ liệu thông qua hình ảnh mà camera truyền về. Từ bức ảnh này ta
có thể đọc ra các dữ liệu về làn đường, dữ liệu về vật cản và cả dữ liệu về biển báo. Như
vậy ta cần thông qua một quy trình để nhận diện được biển báo trên bức ảnh đầy thông
tin đó:

1. Chuyển ảnh về hệ V trong mô hình màu YUV.

2. Áp dụng phân ngưỡng ảnh (threshold).

3. Áp dụng findContours() để tìm vùng chú ý.

4. Lọc các contour vừa tìm được, để tìm vùng chú ý tối ưu nhất.

5. Crop vùng chú ý từ bức tranh lớn ban đầu và đưa cho model phân biệt biển báo.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 90/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

a) Chuyển ảnh về hệ màu V trong mô hình màu YUV

Hình ảnh ta thu được từ camera là tấm hình với 3 kênh màu RGB (Red, Green,
Blue), hình RGB thường được sử dụng trong các phần mềm photoshop bởi nó thân thiện
với người dùng. Nhưng trong lĩnh vực thị giác máy tính, hệ màu YUV lại tối ưu hơn,
bởi về sự mã hóa hiệu quả về màu sắc của nó giúp giảm băng thông hơn so với RGB.

Hình 92: Chuyển ảnh từ rgb sang yuv và tách làm 3 kênh màu y, u, và v

Đi sâu hơn về mô hình màu YUV, màu YUV gồm 3 giá trị Y, U, và V. Trong
đó Y biểu thị độ sáng (Luminosity), U và V biểu thị độ khác biệt về màu sắc (Color
Difference). Đối với mắt người, thông thường kênh Y là kênh chứa nhiều thông tin
nhất, nhưng ta đang cần giảm bớt lượng thông tin mà bức ảnh đem lại, thay vào đó
là tập trung vào đúng khu màu của biển báo, nên ta sẽ sử dụng một trong hai kênh
màu U hoặc V cho bước tiếp theo. Như trong hình 92, ta có thể thấy bức ảnh y
còn chứa nhiều thông tin không cần thiết như vạch kẻ đường, vùng sọc ngựa vằn,...,
trong khi đó ảnh u và v số thông tin hiển thị đã ít đi, nhưng vẫn tồn tại biển báo trong đó.

Việc chuyển đổi về hệ YUV và chỉ lấy một kênh màu V này sẽ giúp giảm nhỏ lại
mảng thông tin của bức ảnh, đồng thời tăng tốc độ xử lý fps của quá trình phát hiện
ảnh lên.

b) Phân ngưỡng ảnh (threshold)

Phân ngưỡng là gì? Phân ngưỡng đúng như tên gọi của nó,từ một ảnh xám và một
ngưỡng thresh T cho trước, và ta sẽ duyệt hết mảng thông tin của một bức ảnh và so
sánh từng giá trị với ngưỡng đó. Ta có hai loại phân ngưỡng:

1. Threshold: Hàm threshold đơn giản này cũng có nhiều phương thức gán giá trị
khác nhau:

• THRESH_BINARY:
– Nếu giá trị pixel lớn hơn ngưỡng thì gán bằng maxval.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 91/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

– Ngược lại gán bằng 0.


• THRESH_TRUNC
– Nếu giá trị pixel lớn hơn ngưỡng thì gán giá trị bằng ngưỡng.
– Ngược lại giữ nguyên giá trị.
• THRESH_TOZERO
– Nếu giá trị pixel lớn hơn ngưỡng thì giữ nguyên giá trị.
– Ngược lại gán bằng 0.

Hình 93: Ví dụ về Threshold với T=127

2. Adaptive Threshold: Bơi phương pháp threshold thông thường có nhược điểm
là ánh sáng không đồng đều trong ảnh, nên Adaptive Threshold được ra đời.
Phương pháp này sẽ tính giá trị trung bình của n điểm xung quanh pixel đó và trừ
cho một số nguyên C. Adaptive Threshold cũng có 2 phương thức thường được sử
dụng:

• ADAPTIVE_THRESH_MEAN_C: giá trị của pixel phụ thuộc vào các pixel
lân cận.
• ADAPTIVE_THRESH_GAUSSIAN_C: giá trị của pixel cũng phụ thuộc vào
các pixel lân cận, tuy nhiên được khử nhiễu.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 92/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 94: Ví dụ về Adaptive Threshold

Hiện tại, nhóm đang áp dụng threshold cơ bản với loại phân ngưỡng
THRESH_BINARY để phát hiện biển báo, với tác dụng nhằm tăng độ tương
phản, với mục tiêu tách biệt khối biển báo và nền phía sau. Do đây là project hiện
tại chỉ được thực hiện trong môi trường mô phỏng với ánh sáng giả lập khá đồng
đều, nên nhóm ban đầu mới áp dụng THRESH_BINARY, nhưng trong tương
lai, nếu có sự hỗ trợ để dự án được tiếp tục, nhóm sẽ cải tiến bằng việc áp dụng
ADAPTIVE_THRESH_GAUSSIAN_C nhằm cải thiện khả năng nhận diện
trong điều kiện thực tế có ánh sáng không đồng đều.

Vậy ta cần lựa chọn ngưỡng T phù hợp để có thể nhận biết tối ưu nhất biển báo.
Bằng việc chạy vòng for từ T=0 đến T=255, ta kiếm được giá trị T=110 giúp ta nhận
diện biển báo tốt nhất (đối với các biển turn left, turn right, và go ahead màu xanh
dương như hình 95).

Hình 95: Phát hiện biển báo

Tuy nhiên, khi ta áp dụng ngưỡng T=110 đó đối với biển báo stop, và forbid màu

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 93/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

đỏ, hình ảnh thu được sau khi qua threshold lại là một vùng đồng màu (như hình 96).

Hình 96: Không phát hiện được biển báo đỏ

Như vậy với ngưỡng 110, hệ thống ta sẽ bị mù màu đỏ. Và để giải quyết vấn đề
trên, nhóm đã thử thay đổi ngưỡng T bằng việc chạy vòng for như cũ, và phát hiện với
T=150, hệ thống có thể phát hiện màu đỏ nhưng không phát hiện màu xanh.

Tổng hợp cả hai ý trên, để nhận biết được biển báo, ta sẽ thông qua cả hai threshold
T=110 và T=150 để nhận biết vùng của biển báo.

c) Áp dụng findContours() để tìm vùng chú ý và lọc các vùng không cần thiết

Như tên gọi của hàm findContours() ta sẽ đi tìm contour. Vậy contour là gì? Contour
được hiểu nôm na là một đường cong liên kết toàn bộ những điểm liên tục theo đường
biên mà có cùng màu sắc hay giá trị về cường độ.

Hình 97: Nhiều hơn 1 contour được phát hiện

Và khi áp dụng vào thực tế, ta lại gặp phải một vấn đề. Đó là có nhiều hơn 1 vùng
được phát hiện như hình 97 (các contour được đóng trong khung màu đen là các contour

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 94/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

phát hiện được và chưa qua bộ lọc). Mà biển báo ta cần là một trong những contour được
phát hiện trên. Khi đó để lọc và loại bỏ các vùng contour không mong muốn bằng cách:
• Tính diện tích của các contour, và chặn hai đầu của giá trị diện tích đó (loại bỏ các
contour quá nhỏ hoặc quá lớn).
• Bởi biển báo có hình tròn, nên khung của biển báo sẽ là hình vuông, từ đó để loại
bỏ các contour rác, ta có thể loại bỏ các contour có tỷ lệ chiều dài và chiều rộng
quá lớn (loại các contour hình chữ nhật).
Tuy nhiên, bộ nhận diện vẫn có khả năng nhận nhầm các vật thể hình tròn khác. Ta
chạy thử với một số hình ảnh thực tế:

Hình 98: Tiền xử lý và tìm Contour trong môi trường thực tế

Theo như hình 98, ta thấy hệ thống có khả năng bắt được các vật thể hình tròn
và nằm trong các khoảng đã định nghĩa, tuy nhiên, do chỉ áp dụng tìm đường bo
contour, nên nó chỉ nhìn vào hình dáng và các đường giáp ranh của các vật thể với
nhau. Nên còn một số hình ảnh hình tròn có kích cỡ tương đương gây ảnh hưởng. Trong
kỳ tới, nhóm sẽ áp dụng thêm lọc màu, giúp loại bỏ thêm các vật thể không cần thiết khác.

d) Crop vùng chú ý sau khi đã tối ưu

Sau bước trên, ta đã kiếm thầy vùng có biển báo, tuy nhiên khi ta chỉ crop phần ảnh
là vùng có biển báo thì accuracy khi test với model sẽ thấp. Nghĩa là ví dụ sau khi loại bỏ
các contour rác, ta đã có được contour tối ưu nhất chứa biển báo, nếu ta crop y nguyên
phần ảnh có cùng kích thước với contour đó thì accuracy lúc thử nghiệm với model sẽ
thấp.

Hình 99: Tập dataset gồm các ảnh được crop rộng hơn biển báo

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 95/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Nguyên nhân dẫn đến việc này là từ nguồn dataset mà model được train, chúng bao
gồm phần lớn các biển báo với kích thước rộng hơn biển báo (như hình 99).

Hình 100: Mở rộng khung detection

Chính vì thế, ta sẽ crop rộng hơn một ít như hình 100 nhằm tăng độ chính xác cho
model phân biệt biển báo. Như vậy, độ chính xác đã tăng từ 64% lên 87%.

4.3.3.2 Phân biệt biển báo (Trafic sign classification)


Sau khi đã lấy được ảnh từ robot message, ta tiến hành truyền ảnh qua bộ traffic sign
detection và classification như đã trình bày ở trên.

Hình 101: Kết quả chạy với một số biển báo

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 96/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.3.4 Hướng tiếp cận 2: Kết hợp YOLOV8 và Convolutional Neural Network
4.3.4.1 Giới thiệu về YOLO
Thuật toán YOLO (You Only Look Once) là một hệ thống phát hiện đối tượng theo
thời gian thực được thiết kế để xử lý hình ảnh và video. Nó hoạt động dựa trên việc chia
hình ảnh đầu vào thành một grid và dự đoán các bounding box và xác suất lớp cho mỗi
grid. YOLO là one-stage detector, đồng nghĩa với việc nó thực hiện cả localization và
classification trong một bước duy nhất.

Kiến trúc YOLO bao gồm được tạo từ một mạng neural network duy nhất và lấy
toàn bộ hình ảnh làm đầu vào và xuất ra các bounding box và xác suất của lớp. Mạng
được chia thành 24 lớp tích chập, sau đó là 2 lớp Fully Connected. Kiến trúc được
thiết kế nhanh và hiệu quả, cho phép nó xử lý hình ảnh trong thời gian thực. Các lớp
tích chập chịu trách nhiệm trích xuất các đặc trưng từ hình ảnh đầu vào, trong khi
các lớp Fully Connected được sử dụng để phân loại đối tượng và dự đoán các bounding box.

Hình 102: Theo tác giả, mạng YOLO bao gồm 24 lớp CNN và 2 lớp FC. Không gian đặc trưng
được giảm so với các lớp trước bằng cách xen kẽ các lớp tích chập 1x1. họ huấn luyện trước các
lớp tích chập trong nhiệm vụ phân loại ImageNet ở độ phân giải một nửa (hình ảnh đầu vào 224
x 224) và sau đó tăng gấp đôi độ phân giải để phục vụ cho mục đích phát hiện [19]

Một trong những ưu điểm chính của YOLO là tốc độ và hiệu quả. Bởi vì nó hoạt
động trên toàn bộ hình ảnh trong một lần chuyển tiếp duy nhất, nên nó có thể xử lý
hình ảnh trong thời gian thực, làm cho nó phù hợp với các ứng dụng như phân tích video
và người máy. Ngoài ra, YOLO có số lượng tham số tương đối nhỏ so với các hệ thống
phát hiện đối tượng khác, giúp đào tạo và triển khai dễ dàng hơn.

Tuy nhiên, thuật toán YOLO có một số hạn chế trong việc phát hiện đối tượng. Nó
chỉ có thể dự đoán 2 bounding box trên mỗi ô grid và một lớp, điều này gây khó khăn
cho việc phát hiện các đối tượng ở gần. Nó cũng gặp khó khăn với những vật thể nhỏ
xuất hiện theo nhóm, chẳng hạn như đàn chim, hay trong việc dự đoán các đối tượng
có hình dạng hoặc cấu hình bất thường. Ngoài ra, YOLO sử dụng các đặc trưng không
quá chi tiết do downsampling. Cuối cùng, thuật toán xử lý các lỗi theo cùng một cách
đối với các boundary box nhỏ và lớn, nhưng một lỗi nhỏ trong một boundary box nhỏ
có tác động lớn hơn đến độ chính xác của việc phát hiện. Nguyên nhân chính gây ra lỗi
trong YOLO là việc localization không chính xác.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 97/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4.3.4.2 Giới thiệu YOLOV8 và sự cải tiến so với các phiên bản tiền nhiệm
Ultralytics YOLOv8, phiên bản mới nhất của mô hình phân đoạn hình ảnh và phát
hiện đối tượng thời gian thực nổi tiếng. YOLOv8 được xây dựng dựa trên những tiến bộ
tiên tiến trong học sâu và thị giác máy tính, mang lại hiệu suất vô song về tốc độ và độ
chính xác. Thiết kế hợp lý của nó giúp nó phù hợp với nhiều ứng dụng khác nhau và dễ
dàng thích ứng với các nền tảng phần cứng khác nhau, từ thiết bị biên cho đến Cloud API.

Lịch sử và quá trình cải tiến của YOLO qua từng giai đoạn:

• Joseph Redmon và Ali Farhadi từ Đại học Washington đã phát triển YOLO, một
mô hình phân đoạn hình ảnh và phát hiện đối tượng được sử dụng rộng rãi, vào
năm 2015. YOLO nhanh chóng trở nên phổ biến nhờ tốc độ và độ chính xác cao.
Vào năm 2016, YOLOv2 đã được phát hành, cải tiến trên mô hình ban đầu bằng
cách kết hợp batch normalization, anchor boxes, và dimension clusters.

• YOLOv3, ra mắt vào năm 2018, đã nâng cao hơn nữa hiệu suất của mô hình bằng
cách sử dụng backbone network hiệu quả hơn, nhiều anchors và spatial pyramid
pooling. YOLOv4, được phát hành vào năm 2020, đã giới thiệu các tính năng mới
như tăng cường dữ liệu Mosaic, anchor-free detection head mới và loss function mới.

• YOLOv5 đã được phát hành với các tính năng bổ sung như tối ưu hóa siêu tham
số, theo dõi thử nghiệm tích hợp và xuất tự động sang các định dạng xuất phổ biến.
Meituan đã cung cấp mã nguồn mở YOLOv6 vào năm 2022 và nó hiện đang được
sử dụng trong nhiều robot giao hàng tự động của công ty. YOLOv7 đã thêm ước
tính hình dáng trên bộ dữ liệu chính của COCO.

• Phiên bản mới nhất của YOLO là YOLOv8 của Ultralytics, đây là một mô hình
tiên tiến, hiện đại (SOTA) được xây dựng dựa trên sự thành công của các phiên
bản trước. YOLOv8 giới thiệu các tính năng và cải tiến mới để nâng cao hiệu suất,
tính linh hoạt và hiệu quả, khiến nó trở thành một mô hình linh hoạt cho các tác
vụ AI tầm nhìn khác nhau, bao gồm phát hiện, phân đoạn, ước tính tư thế, theo
dõi và phân loại.

Sau đây là đồ thị thể hiện sự vượt trội của YOLOV8 so với các phiên bản tiền nhiệm
của nó, về số lượng parameters (M) và COCO mAP 50−95 .

Hình 103: Đồ thị so sánh YOLOV8 với các phiên bản tiền nhiệm [21]

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 98/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Bảng so sánh performance các model từ nhỏ tới lớn của YOLOV8 trong bài toán
Detection ở kích cỡ hình 640px mà ở đó:

• mAP val : các giá trị dành cho quy mô đơn mô hình trên bộ dữ liệu COCO val2017.

• Speed: Tốc độ trung bình trên hình ảnh COCO val sử dụng phiên bản Amazon EC2
P4d.

Bảng 4: Bảng so sánh các YOLOv8 models [21]


Model mAPval 50-95 Speed CPU ONNX (ms) Speed A100 TensorRT (ms)
YOLOv8n 37.3 80.4 0.99
YOLOv8s 44.9 128.4 1.20
YOLOv8m 50.2 234.7 1.83
YOLOv8l 52.9 375.2 2.39
YOLOv8x 53.9 479.1 3.53

4.3.4.3 Mô hình biểu diễn sự kết hơp của YOLOV8 và CNN


Trong sự kết hợp này, YOLO đóng vai trò như một khối thực hiện nhiệm vụ phát hiện
vị trí có biển báo giao thông, và sau đó kết quả sẽ được trả về để đưa vào mạng CNN
thực hiện nhiệm vụ classification. Toàn bộ quá trình được biểu diễn dưới dạng sơ đồ như
sau:

Hình 104: Luồng xử lý của ảnh thông qua sự kết hợp của YOLOV8 và CNN

Để diễn tả chi tiết hơn, quá trình sẽ được diễn ra tuần tự theo từng bước sau đây:

1. Nhận ảnh từ camera với kích cỡ 640x480x3.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 99/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

2. Ảnh sẽ được đưa qua YOLOV8, cụ thể là sử dụng model YOLOv8n để tiến hành
việc object detection vật thể có hình dáng là biển báo giao thông (lưu ý rằng tại
bước này chỉ cố gắng phát hiện biển báo giao thông, chứ chưa tiến hành việc phân
loại đây là loại biển báo giao thông nào).

3. Sau khi YOLOV8 đã phát hiện được vùng chứa biển báo, nó sẽ crop phần bounding
box đó.

4. Phần hình được cắt ra từ toạ độ bounding box sẽ được grayscale và resize về hình
dạng 32x32x1 để có thể phù hợp với input của model CNN.

5. Ứng dụng Contrast Limited Adaptive Histogram Equation để khử nhiễu của hình.

6. Đưa vào model CNN để phân loại ý nghĩa của các biển báo giao thông.

4.3.4.4 Ứng dụng YOLOV8 vào bài toán Traffic Sign Object Detection
a) Bộ dữ liệu được dùng để huấn luyện

Bộ dữ liệu được sử dụng trong quá trình huấn luyện gồm 374 bức ảnh được thu thập
dựa vào môi trường thực mà robot di chuyển. Sau đó được gán nhãn bounding box các
vùng chứa biển báo giao thông. Đồng nghĩa với việc ảnh đầu ra sẽ chỉ có 1 nhãn là "Traffic
Sign". Vì theo đánh giá của bài báo YOLO, YOLO sẽ không sử dụng các đặc trưng quá
chi tiết do downsampling nên nhóm không sử dụng trong việc phân loại các biển báo mà
chỉ dùng để phát hiện vị trí của biển báo giao thông để tránh tình trạng phát hiện nhầm
xảy ra, gây ảnh hưởng tới việc đưa ra quyết định của robot. Bộ dữ liệu dùng để huấn
luyện được diễn tả sơ bộ như hình dưới:

Hình 105: Tổng quan về bộ dữ liệu được dùng để training YOLO

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 100/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Về phần gắn nhãn dữ liệu, ta sẽ gắn nhãn thông qua phần mềm makesense.ai, sau
khi hiển thị vùng nhãn lên trên làn đường, ta sẽ có được phần hiển thị các nhãn đã được
đánh như hình sau:

Hình 106: Tổng quan về gán nhãn dữ liệu được dùng để training YOLO

b) Đánh giá kết quả huấn luyện

Một số kết quả thống kê đánh giá kết quả quá trình huấn luyện. Có thể thấy các thông
số đánh giá hiệu quả đều cho ra kết quả lớn hơn 95%. Một kết quả đạt mức chấp nhận
được để có thể đưa ra ngoài thực nghiệm để sử dụng.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 101/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 107: Một số thông số đánh giá kết quả object detection

Một thống thông số khác biểu thị sự hiệu quả của mô hình YOLO sau 200 epochs
huấn luyện:

Hình 108: Một số thông số đánh giá biểu thị sự hiệu quả tăng dần của YOLO sau 200 epochs

4.3.5 So sánh các hướng tiếp cận


Để so sánh ưu nhược điểm của các hướng tiếp cận, ta có thể thông qua các bảng thống
kê sau đây, cũng như dựa vào đánh giá riêng lẻ từng component của các lớp classifier và

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 102/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

object detection (tham khảo tại 4.3.2.2, 4.3.4.4). Cấu hình máy tính thử nghiệm là 8GB
RAM, i5-9300H CPU @ 2.40GHz, 8 cores và không chạy GPU.

Trước tiên, 2 phương pháp tiếp cận khác nhau ở khối object detection (Native Com-
puter Vision và YOLOV8).
Bảng 5: Bảng đo đạc thông tin về thời gian xử lý của bộ Object Detection với 2 phương pháp
xử lý bằng Native CV và YOLOV8
Statistics Native Computer Vision (s) YOLOV8 (s)
Min 0.0004 0.07068
Max 0.0099 1.26156
Mean 0.0015 0.2712
Std 0.0007 0.1429
Var 4.7387 × 10−7 0.02043

So sánh về thời gian xử lý:

• Native Computer Vision: Có thể thấy tốc độ xử lý của NCV nhanh gấp 180 lần
so với YOLO. Lý do là vì khối lượng xử lý nhỏ hơn, cũng như thư viện OpenCV
tận dụng tài nguyên tính toán của CPU tốt hơn.

• YOLOV8: Tốc độ xử lý bị giảm đi đáng kể so với NVC. Lý do là vì model AI bên


trong chỉ được tận dụng tốt nhất khi mà được kích hoạt GPU. Tuy nhiên ở đây
chúng ta chỉ sử dụng CPU nên kết quả thời gian thực thi khá cao, tuy nhiên vẫn
trong ngưỡng chấp nhận được.

So sánh về độ chính xác:

• Native Computer Vision: Yếu điểm của NVC là dễ bị ảnh hưởng khi đặt vào
một môi trường có quá nhiều biến động (ánh sáng, bóng tối, độ nghiêng, xoay của
vật thể cần xác định, chói, ...). Khi này nếu muốn cải tiến sẽ cực kỳ khó khăn. Vì
thế mặc dù chạy rất nhanh nhưng yếu điểm này khiến NCV đánh mất ưu thế tốc
độ xử lý vì trong hệ thống hỗ trợ xe tự hành, sự an toàn được đặt lên hàng đầu nên
việc nhầm lẫn hoặc không phát hiện được cần giảm xuống mức thấp nhất có thể.

• YOLOV8: Ở phần so sánh về thời gian, có thể thấy yếu điểm của YOLOV8 là về
mặt thời gian thực thi (khi được so sánh với NVC), nhưng vẫn ở ngưỡng chấp nhận
được. Đồng thời do được học từ dữ liệu, chính vì thế khi thay đổi môi trường cũng
dẫn tới việc phát hiện biển báo bị kém hiệu quả. Nhưng, việc muốn cải thiện thì
cũng sẽ dễ hơn, chỉ cần thu thập thêm dữ liệu chứ không phải thay đổi quá nhiều.
Đồng thời đối với phương pháp này chúng ta cũng dễ đánh giá độ chính xác hơn.
(Tham khảo tại 4.3.4.4).

Tiếp theo là việc so sánh thời gian thực thi khi kết hợp object detection với classifier.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 103/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Bảng 6: Bảng đo đạc thông tin về thời gian xử lý sau khi kết hợp object detection và classifier
của Native Computer Vision và YOLOV8 với CNN
Statistics NCV + CNN (s) YOLOV8 + CNN (s)
Min 0.0463 0.1269
Max 0.2901 1.3374
Mean 0.0667 0.3364
Std 0.0114 0.1421
Var 0.0001 0.0202

Về mặt thời gian, có thể thấy rõ sự kết hợp của YOLOV8 + CNN sẽ cho ra thời gian
thực thi trung bình cao gấp 5 lần so với sự kết hợp của NCV + CNN. Nhưng ở mức
0.3364s tương đương khoảng 3 FPS là khá đủ cho component này bởi lẽ sẽ được phát hiện
từ phía xa nên cần ưu tiên độ chính xác hơn thời gian thực thi. Và sự kết hợp YOLOV8
+ CNN đã làm tốt điều này hơn với NCV + CNN.

4.4 Module nhận diện và phân loại đèn giao thông


4.4.1 Hướng tiếp cận
Trên điều kiện thực tế, có rất nhiều loại và hình dáng đèn giao thông khác nhau.
Trong quá trình nghiên cứu và tìm hiểu, để nhận diện tín hiệu đèn giao thông, mô hình
học sâu Deep Learning thường được sử dụng rộng rãi. Tuy nhiên, do cả 3 module trước
đều đã áp dụng Deep Learning hoặc Reinforcement Learning, nên đã tiêu tốn một lượng
GPU/CPU lớn, nên ở module này nhóm chỉ áp dụng thị giác máy tính để tìm kiếm và
phân loại biển báo.

Hiện tại module này chỉ được áp dụng trong môi trường mô phỏng và phòng thí
nghiệm, bởi hướng tiếp cận của nhóm chỉ liên quan đến phát hiện hình trong và lọc màu,
nên có khả năng trong thực tế một số vật thể sáng khác có khả năng thấp bị nhìn nhầm
hoặc lầm tưởng là đèn giao thông.

Chi tiết về module nhận diện tín hiệu đèn giao thông:

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 104/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 109: Giới thiệu tổng quan về module phân biệt tín hiệu đèn giao thông

4.4.2 Giữ lại phần màu cần thiết


Ngược với RGB là bộ màu cơ bản, áp dụng rộng rãi, YUV là bộ màu thích hợp và
tăng tốc độ thị giác máy tính. Màu HSV (Hue, Saturation, Value) có độ tương thích với
con người nhiều hơn, bởi nó được cấu thành theo cách con người cảm nhận màu sắc.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 105/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 110: Bộ màu HSV

Không gian màu sắc này được cấu thành từ 3 kênh, và 3 chữ cái đầu của 3 kênh này
được ghép lại thành tên của bộ màu này:

• Hue: là phần màu của mô hình, có giá trị từ 0 độ đến 360 độ theo chiều xoay của
dải màu hình nón của HSV. (ví dụ xanh lá sẽ có Hue trong khoảng 120 đến 180).

• Saturation (độ bão hoà): là lượng màu trắng ở trong một màu. Việc giảm độ bảo
hoà có thể khiển bức ảnh trở nên mờ nhạt hơn. Độ bão hoà có giá trị từ 0 đến 1.
Với 0 là nhạt nhoà, và 1 là màu nguyên bản.

• Value (giá trị độ sáng): Giá trị này, kết hợp với độ bão hoà có thể mô tả được độ
sáng và cường độ màu sắc, với giá trị từ 0 đến 100, 0 là ít độ sáng nhất (tối nhất)
và 100 là sáng nhất và cho thấy màu sắc tinh khiết nhất.

YUV là bộ màu thích hợp cho việc giúp ta giữ lại các khoảng màu ta mong muốn.
Thao tác này ta sẽ thực hiện 3 lần cho 3 màu của đèn giao thông. Nhưng trước tiên, ta
cần định nghĩa và tìm ra các khoảng màu phù hợp đối với 3 loại tín hiệu đèn. Ta có thể
sử dụng tool để điều chỉnh các khoảng màu và tìm kiếm các khoảng màu phù hợp.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 106/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 111: Tool giúp tìm khoảng màu hsv cho các vật thể

Như vậy, ta có thể tìm được khoảng màu phù hợp cho đèn giao thông của bản thân:
Bảng 7: Khoảng màu theo hệ màu HSV của biển báo giao thông
Lower Color Upper Color
Màu đỏ 0 - 113 - 150 10 - 255 - 255
Màu xanh 80 - 50 - 115 90 - 255 - 255
Màu vàng 10 - 135 - 155 25 - 255 - 255

Ta tiến hành chạy thử với hình ảnh thực tế, và in ra các khoảng màu ở bảng trên:

Hình 112: Màu sắc được giữ lại lần lượt qua 3 trạm lọc màu

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 107/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Đối với bức ảnh 112, ta có thể lọc ra màu một cách chính xác và dễ dàng. Từ bức ảnh
này, ta chỉ cần tìm vùng contour và lấy contour lớn nhất và là hình tròn. Tuy nhiên đối
với một số bức ảnh với nhiều nhiễu hơn và có những vùng sáng khác dễ gây hiểu nhầm
thành đèn giao thông.

Hình 113: Tín hiệu đèn giao thông trong môi trường nhiều nhiễu

Như trong hình 113, ta có thể thấy, có các đèn xe, lá cây, và một số vùng có khả năng
gây nhiễu đến bộ lọc màu. Ta sẽ kiểm tra kỹ hơn ở bước sau.

4.4.3 Find contour và Filter các contour:


Đối với trường hợp nhiễu trên, ta sẽ thử áp dụng find Contour, và thuật toán Filter
contour riêng của nhóm.

Hình 114: Đèn giao thông với nhiều yếu tố gây nhiễu

Theo như Hình 114, thì ta có thể thấy được, có tồn tại vùng lá cây gây nhiễu đến bộ
lọc màu. Đồng thời, đèn hậu ở các đuôi xe máy cũng là một phần gây nhiễu. Chính vì

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 108/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

vậy, ta cần bộ lọc màu có thể loại bỏ đi càng nhiều nhiễu càng tốt. Ta lọc nhiễu với các
tiêu chí sau:

• Ta sẽ lọc với diện tích, bằng việc bỏ đi các vùng có diện tích quá nhỏ hoặc quá lớn
giúp ta loại đi các vùng bị bắt nhầm (xe cộ, phương tiện có màu đỏ, hoặc mái ngói).

• Áp dụng tỉ lệ chiều dài và chiều rộng, ta sẽ giới hạn tỉ lệ này không được chênh
lệch nhau quá nhiều, nhằm đảm bảo vùng bắt được phải có dạng hình vuông hoặc
tròn. Tuy nhiên ta không thể loại hết và chỉ nhận hình tròn, bởi nhiễu, và nhìn ở
góc nghiêng thì các đèn giao thông vẫn có khả năng bị bẻ nghiêng.

4.4.4 Tổng hợp và cho ra kết quả


Theo nguyên tắc vật lý, hai vật thể cùng kích thước, nếu vật thể ở gần hơn thì độ lớn
của ảnh sẽ lớn hơn vật thể còn lại. Chính vì vậy, ở bước cuối này, ta sẽ tổng hợp và cho
ra vùng có diện tích lớn nhất trong tập contour chấp nhận được. Việc này nhằm giúp xe
xác định đúng đèn khi ở các giao lộ ngã ba, hoặc ngã tư liên tiếp. Xe có thể thấy cả đèn
của mình và đèn hiệu ở ngã tư tới. Và khi này, chỉ đèn của giao lộ mình (đèn gần nhất)
được giữ lại.

Hình 115: Nhiều tín hiệu đèn xuất hiện cùng lúc

4.4.5 Xử lý chóa sáng


Tuy nhiên, khi áp dụng vào mô hình phòng thí nghiệm, Ta thấy thiết bị đèn giao
thông xuất hiện hiện tượng chóa sáng ở trung tâm đèn. Ví dụ như hình 116, ta có thể
thầy phần trung tâm của đèn là màu trắng, do hiện tượng chóa tới camera.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 109/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 116: Thiết bị đèn giao thông có hiện tượng bị chóa ở trung tâm đèn

Hiện tượng chóa là do sự khác biệt về đèn giao thông phòng thí nghiệm và đèn giao
thông thực tế. Đối với đèn giao thông thực tế, được cấu thành từ nhiều đèn LED nhỏ
(hình 117), nhờ vào sự giao thoa ánh sáng giữ nhiều led nhỏ, đồng thời có các vòm che
trên mỗi đèn giúp cho tránh được việc chóa sáng.

Hình 117: Cấu tạo đèn giao thông ngoài thực tế

Nhằm giải quyết vấn đề này, ta có thể tìm vùng chứa ánh sáng chóa. Sau đó, ta sẽ lấy
vài pixel xung quanh ánh sáng chóa đó làm màu cơ sở, từ đó tô vào phần bị chóa. Dưới
đây là kết quả sau khi loại bỏ được phần chóa:

Hình 118: Loại bỏ phần chóa sáng ở trung tâm của đèn

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 110/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

5 Kết quả thực nghiệm


5.1 Module nhận diện làn đường
Trong quá trình thí nghiệm, nhóm đã huấn luyện được một số model với những mục
đích sau:
Bảng 8: Bảng biểu thị các đối tượng được sử dụng trong việc xây dựng kịch bản thí nghiệm

Tên model Mục đích model


Model-CARLA9_epoch2 Model sử dụng hướng tiếp cận 1, hoạt động ổn định
trong môi trường thực tế.
Model- Model sử dụng hướng tiếp cận 1, hoạt động hoàn hảo
CARLA11_GAZEBO_4- trong môi trường gazebo, map demo_luanvan (hình 8).
2-e15
Model-NEW_METHOD1- Model sử dụng hướng tiếp cận 2, sử dụng data train sau
e5 xử lý của hướng tiếp cận cũ. Hoạt động ổn định ở một
vài môi trường và vật cản cụ thể.
Model-16_RAS-2 Model sử dụng hướng tiếp cận 2, thiết kế để hoạt động
tốt trong trường hợp thiếu sáng do camera hoặc môi
trường. Và ảnh nhòe, mờ do camera chụp trong khi robot
di chuyển.
Model-S1_AUTO-2 Model sử dụng hướng tiếp cận 2, hoạt động tốt trong
đa số môi trường và tồn tại vật cản.
Model-S5_AUTO-13 Model sử dụng hướng tiếp cận 2, hoạt động tốt trong
đa số môi trường thiếu sáng, rung lắc, có các vật thể
chắn làn đường hoặc có dạng giống làn đường. Là model
sử dụng cho phân tích tiếp theo và sử dụng trong thí
nghiệm tích hợp hệ thống.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 111/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 119: Các giá trị thống kê quá trình huấn luyện model Model-S5_AUTO-13

Dựa theo các thông số của quá trình huấn luyện 32 epochs, mỗi epoch huấn luyện
4096 bức ảnh. Ta dễ thấy được rằng model học tương đối nhanh. Cho ra độ chính xác
tập validation khoảng 0.95-0.98 từ epoch thứ 5-20. Sau epoch 20 ta thấy một số dấu hiệu
của overfit khi độ chính xác có xu hướng giảm. Model được sử dụng trong demo là model
ở epoch thứ 17. Vì đặc trưng của backend là tìm đường thẳng đại diện cho làn đường, do
đó backend không cần nhìn toàn bộ mà chỉ một phần làn đường. Vậy nên model cần đảm
bảo các pixel mà model phát hiện là chính xác, dù cho điều đó dẫn tới việc bắt thiếu
một số pixel. Đó là lí do accuracy cao trong khi F1 có xu hướng dao động tương đối lớn.

Hình 120: so sánh sự khác nhau giữa tham số alpha của hàm loss đến độ chính xác của backend

Trong ví dụ phía trên, đối với α = 0.2, model có thể bắt thiếu một số pixel, tuy
nhiên điều đó không ảnh hưởng nhiều đến mode. Tuy nhiên với trường hợp α = 0.7,

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 112/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

model cố gắng bắt toàn bộ pixel trên làn đường, gây ra việc bắt dư thừa một số pixel,
khiến cho kích thước các cụm trở nên quá lớn và không đủ đáng tin để backend thông qua.

Sau khi đã có một model đủ tốt, nhóm tiếp tục đem robot sang một môi trường chưa
tồn tại trong tập train, mục đích để giảm độ chính xác model và xem thử liệu backend
có khả năng sửa chữa những vấn đề phát sinh không, các trường hợp tiêu biểu được mô
tả ở hình bên dưới.

Hình 121: Một số trường hợp lỗi gây ra bởi AI nhưng được lọc bởi backend

Phía trên là một số trường hợp lỗi gây ra bởi model. Vì mục đích của backend là lọc
tối đa các trường hợp lỗi và loại hoàn toàn thay vì tìm cách sửa, do đó vẫn có một số
trường hợp tuy làn đường được bắt tương đối tốt nhưng chưa đủ rõ nét để AI thông qua,
với nhận định của nhóm, việc đó là hoàn toàn chấp nhận được. Vì nếu backend vô tình
thông qua một frame lỗi, hai làn đường cắt nhau sẽ được gửi tới khối né vật cản, khối sẽ
nhận thấy không có đường đi và đứng im, do đó camera sẽ luôn chụp ảnh ở vị trí đó, và
model luôn trả về bức ảnh gây ra lỗi backend. Đây sẽ là một vòng lặp deadlock, trừ khi
reset lại môi trường hoặc di chuyển thủ công robot sang một vị trí khác.

Có thể thấy, dù hệ thống hoạt động tương đối tốt, robot có khả năng chạy đủ ổn định
để hoàn thành kịch bản demo và đạt được mục tiêu đề ra, tuy nhiên vẫn còn một số vấn
đề còn tồn đọng như sau:

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 113/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

• Chưa có tính tổng quát về mặt data: Dù phương pháp hiện tại đã hạn chế
tối đa các label dư thừa tuy nhiên vẫn không loại bỏ được hoàn toàn. Đặc biệt là
những vùng có các đường nét thẳng, màu sáng sẽ dễ bị bắt nhầm thành làn đường,
từ đó ảnh hưởng đến đầu ra.

• Thiếu tính tổng quát của backend: Mặc dù ở phương pháp hiện tại, backend
đủ khó tính để đảm bảo kết quả gửi đi luôn chính xác 100%, tuy nhiên vẫn sẽ tồn
tại những trường hợp khiến backend thông qua một giá trị lỗi, ảnh hưởng đến giá
trị độ rộng làn đường lưu trữ, khi đó một giá trị lỗi sẽ ảnh hưởng đến nhiều kết quả
ở tương lai.

• Giới hạn về tốc độ thực thi: Hiện tại model chạy trên thiết bị window sử dụng
Cuda với hệ số tính toán 6.1. Tuy nhiên FPS hiện tại dao động trong khoảng từ
9-10 FPS. Dữ liệu được gửi từ máy ROS chạy module né vật cản, node này sẽ giao
tiếp TCP với thiết bị window để chạy cuda, do đó tốc độ thực thi module né vật
cản bị ảnh hưởng trực tiếp bởi tốc độ đường truyền mạng.

• Quá trình Calibration còn được thực hiện thủ công: Quá trình này được
thực thi bằng cách tìm vị trí trên bề mặt thực tế sử dụng thước thẳng. Nghĩa là các
sai số về mặt đo đạc sẽ ảnh hưởng vĩnh viễn đến kết quả của quá trình Bird’s-eye
view.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 114/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

5.2 Module né vật cản


5.2.1 Đánh giá quá trình ánh xạ thực tế lên map
Dưới đây là một số kết quả khi chạy module né vật cản. Đầu tiên, ta khảo sát tính
chính xác khi ánh xạ từ thực tế lên map 2D, việc này yêu cầu độ chính xác từ phần cứng
LIDAR, thuật toán ánh xạ LIDAR và thông tin làn đường của khối làn đường.

Hình 122: Kết quả ánh xạ làn đường và LIDAR lên map

Như hình 122, ta có thể thấy quá trình ánh xạ có độ chính xác cao. Tham số độ phình
cũng được đặt lớn hơn bán kính robot một ít nhằm giúp robot có thể né vật cản an toàn,
nhưng vẫn đảm bảo tồn tại đường đi đến đích.

Hình 123: Kết quả ánh xạ làn đường và LIDAR lên map (kết quả)

Như hình 123 mô tả quá trình sau khi robot né vật cản, chiếc hộp được đặt ở làn trái,
với độ phình hai bên hợp lý. Chính vì vậy, sau khi tiến hành né chiếc hộp, robot vẫn ở
một khoảng cách an toàn.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 115/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

5.2.2 Đánh giá giải thuật tìm đường Best First

Hình 124: Kết quả chạy module né vật cản

Ở bước tiếp theo, ta sẽ tiến hành đánh giá giải thuật tìm đường đi Best First sau khi
ánh xạ lên map. Như hình 124, ta có thể thấy giải thuật tìm đường hoạt động tốt và
đúng như mong đợi. Cũng như đã xử lý được các trường hợp đặc biệt như vật cản chặn
hết đường, hoặc trường hợp vật cản động (xem trong video demo trong link drive).

Về tốc độ xử lý, thống kê trong môi trường MacBook Pro (13-inch, M2, 2022), 8-core
CPU, 16GB RAM, với 1000 lần chạy với map có kích thước 50x50, ta thấy Best First cho
ra kết quả với tốc độ xử lý nhanh:
Bảng 9: So sánh thời gian chạy của giải thuật tìm đường Best First
Min time (s) Max time (s) Mean time (s)
Best First 0.00054 0.00894 0.00150

5.3 Module nhận nhận diện và phân loại biển báo giao thông
Nhiệm vụ của YOLO trong bài toán này là traffic sign object detection. Trong khi đó,
nhiệm vụ của CNN trong trường hợp này dùng để phân loại ý nghĩa biển báo đó thuộc
về loại biển báo nào trong 5 loại: rẽ trái, rẽ phải, đi về phía trước, cấm và dừng.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 116/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

5.3.1 Kết quả thực nghiệm của YOLO

Hình 125: Kết quả sau khi thực hiện object detection bằng YOLOV8 trong môi trường thực
nghiệm

5.3.2 Kết quả thực nghiệm của CNN

Hình 126: Kết quả sau khi dùng CNN thực hiện classification dữ liệu được crop từ YOLOV8
trong môi trường thực nghiệm

Đồng thời, đối với kết quả thực nghiệm này ta còn quan tâm về mặt thời gian. Thời
gian thực thi từ khi nhận đầu vào đến lúc cho ra kết quả dự đoán của khối CNN này
như bảng sau, cấu hình môi trường là 8GB RAM, i5-9300H CPU @ 2.40GHz, 8 cores và

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 117/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

không chạy GPU. Có thể thấy kết quả tương đối chạy ổn định và nhanh chóng với tốc
độ xử lý trung bình khoảng 0.0652s, rơi vào khoảng 17 FPS:

Bảng 10: Bảng đo đạc thông tin về thời gian xử lý của CNN Classifier trong phân loại ý nghĩa
biển báo giao thông
Statistics CNN (s)
Min 0.0449
Max 0.2887
Mean 0.0652
Std 0.0113
Var 0.0001

Ta có bảng performance về thời gian xử lý của sự kết hợp YOLO + CNN như sau, có
thể thấy thời gian xử lý phù hợp với tốc độ phản ứng của robot.
Bảng 11: Bảng đo đạc thông tin về thời gian xử lý sau khi kết hợp YOLOV8 với CNN
Statistics YOLOV8 + CNN (s)
Min 0.1269
Max 1.3374
Mean 0.3364
Std 0.1421
Var 0.0202

Do là môi trường thực nghiệm, nên đánh giá của nhóm dựa vào kết quả hành vi thực
tế thì sự kết hợp này dẫn đến kết quả vô cùng tốt trong điều kiện ánh sáng không quá
tệ (quá tối hoặc quá sáng/ chói). Còn trong mọi điều kiện bình thường khác thì kết quả
hầu hết đúng trong mọi trường hợp.

Ở đây lưu ý rằng với sự phát hiện biển báo của YOLO, những boundary box có
accuracy thấp (accuracy < 75%) sẽ được bỏ qua và chỉ giữa lại những boundary box có
accuracy cao, đồng thời trong những boundary box được giữ lại sẽ chỉ ưu tiên giữ lại
phần boundary box có diện tích là lớn nhất (chứng tỏ gần nhất so với robot).

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 118/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

5.4 Module đèn giao thông


Nhờ vào việc loại bỏ chóa, module detect đèn giao thông trả về độ chính xác cao hơn
và có thể nhận diện được các biển báo có độ chóa nhất định.

Hình 127: Kết quả nhận diện đèn giao thông

Tuy nhiên, do đây chỉ áp dụng lọc màu, nên vẫn không thể bao phủ hết các trường
hợp, đồng thời dễ bị các vật sáng khác ảnh hưởng (đèn xe, đèn đường, ...). Bên cạnh đó,
phần cứng camera là một yếu tố quan trọng ảnh hưởng đến kết quả. Như hình 128, ta có
thể thấy khó có thể phân biệt được màu của đèn giao thông khi độ tương phản màu sắc
của camera khá tệ.

Hình 128: Ảnh chụp đèn giao thông, sử dụng camera của robot

Ngoài ra, khi đổi môi trường sang mô phỏng, hoặc mô hình phòng thí nghiệm hoặc
đổi qua quốc gia khác, ta cần căn chỉnh lại khoảng màu cho phù hợp nhất. Nhưng nhìn
chung, trong môi trường không quá phức tạp, thì module nhận diện tính hiệu đèn giao
thông vẫn có độ chính xác tốt.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 119/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

5.5 Kết quả thực nghiệm khi tích hợp hệ thống hoàn chỉnh
5.5.1 Các thông số kỹ thuật được sử dụng trong thí nghiệm tích hợp hệ thống

Bảng 12: Bảng thông số kĩ thuật được sử dụng

Thông số Mô tả Giá trị


Module né vật cản
sizemap Kích thước map dùng cho giải 50x50 pixel (1pixel = 2x2cm2 )
thuật né vật cản
vlinear(max) Vận tốc thẳng tối đa của robot 0.05 (m/s)
vangular(max) Vận tốc xoay tối đa của robot 0.5 (rad/s)
thicknesslane Độ dày làn đường 2 (pixel)
thicknessobstacle Độ phình của vật cản ≈ radiusrobot
n Để xác định điểm N (là điểm thứ 8
n trong array đường đi trả về
từ hàm Best First) mà xe sẽ bẻ
hướng sau 1 frame
Module phát hiện biển báo
sizeinput(cnn) Độ lớn ảnh đầu vào của model 32x32 pixel
CNN biển báo
accuracymin Độ chính xác tối thiểu của model 75%
YOLO và CNN
Module nhận diện làn đường
dim kích thước của ảnh đầu vào model 128
Phát hiện làn đường và đầu vào
model backend
af f inesrc Toạ độ nguồn, đại diện cho 4 điểm (13,71), (113,76), (37,42), (91,43)
toạ độ trong môi trường thật
af f inesrc Toạ độ đích, tương ứng đại diện (16,2), (38,2), (19,-21), (37,-21)
cho 4 điểm toạ độ trong môi
trường birdh eye view
αlane(width) Tỷ lệ ảnh hưởng của độ rộng làn 10%
đường mỗi frame lên giá trị làn
đường chính thức
min_ratio Tỉ lệ cạnh dài trên cạnh ngắn tối 6
thiểu của mỗi cụm để backend
thông qua cụm
min_area Diện tích tối thiểu của mỗi cụm 30
để backend thông qua cụm

5.5.2 Kịch bản thực hiện thí nghiệm tích hợp hệ thống
Nhóm sẽ đề ra một số kịch bản như sau đối với thí nghiệm và mục đích của kịch bản
đó:

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 120/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Bảng 13: Bảng biểu thị các đối tượng được sử dụng trong việc xây dựng kịch bản thí nghiệm

Đối tượng Mô tả Mục đích


Vật cản tĩnh Là loại vật cản luôn nằm ở một vị Kiểm tra robot có thể né được vật
trí so với mặt đất theo thời gian, cản tĩnh
có thể nằm lấn lên trên làn trắng
của đường
Vật cản động Là loại vật cản có thể bất ngờ Kiểm tra robot có thể né được vật
xuất hiện trong không gian, hoặc cản động
di chuyển so với mặt đất theo thời
gian, có thể nằm lấn lên trên làn
trắng của đường
Biển báo giao Là biển báo dùng để đưa ra quyết Kiểm tra hành vi robot có tuân
thông định hành vi (chẳng hạn như theo ý nghĩa biển báo giao thông
dừng lại). Trong thí nghiệm, biển
báo được sử dụng là biển báo
dừng và biển báo cho phép đi
thẳng
Toàn bộ bề mặt Là loại bề mặt phẳng, thẳng, viền Kiểm tra hành vi robot có bám
làn đường trắng, lòng đường màu đen đường, đi vào một trong 2 làn
đường (trái hoặc phải) thay vì
chạy ra giữa trong trường hợp
không có vật cản. Và sẽ chạy ra
giữa để né vật cản nếu cần thiết,
sau đó sẽ tấp vào một trong 2 làn
trở lại

5.5.3 Kết quả thí nghiệm tích hợp hệ thống


Sau đây là một số kết quả tổng hợp được hiển thị và sử dụng trong hệ thống hỗ trợ
điều hướng xe tự hành của nhóm. Có thể thấy sự kết hợp khá tốt về mặt hành vi cũng
như điều khiển. Chứng tỏ khi kết hợp, nếu từng module hoạt động hoàn toàn đúng thì
hệ thống sẽ hoạt động tốt. Ngoại trừ việc khi có một module nào xảy ra sai sót có thể
dẫn tới hành vi sai lệch. Tuy nhiên thì nhóm đã cố gắng giảm sự sai sót của từng module
nhưng đã diễn tả chi tiết ở các phần trước.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 121/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 129: Một số ảnh kết quả của quá trình chạy thử nghiệm

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 122/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

6 Đề xuất cải tiến


6.1 Module nhận diện làn đường
Về mặt model, nhóm cần nghiên cứu phương pháp hạn chế hơn nữa những nhiễu loạn
về background hay những vật cản có những hoạ tiết đường thẳng. Ngoài phương pháp
thuần tuý là thu thập dữ liệu thủ công, nhóm cũng đã thử sử dụng các phương pháp
sinh data sử dụng xử lý ảnh, hiện tại phương pháp này chỉ dùng để sinh vật cản trên làn
đường, chưa thể sinh một background hoàn toàn khác. Nhóm cũng đã thử sử dụng model
GANs để sinh ảnh tuy nhiên chưa cho kết quả khả quan. Do vậy hướng đi tiếp theo của
đồ án quyết định bởi hành vi của model khi lượng dữ liệu trở nên đa dạng hơn.

Hình 130: Các ảnh sinh bởi model GANs sau 48h học bộ data mẫu, các kết quả chưa đủ tốt để
có thể thêm vào tập huấn luyện

Về mặt backend, nhóm cần nghiên cứu phương pháp duy trì độ chính xác hiện tại
nhưng vẫn bảo đảm dữ liệu được gửi thường xuyên hơn. Hiện tại với cả hai phương
pháp, các backend có xu hướng loại bỏ ngay tín hiệu lỗi để tối ưu tốc độ, nhóm có thể
tách backend thành một node riêng biệt và bao gồm các phương pháp sửa lỗi để suy luận
được làn đường từ thông tin tương đối nhiễu của model.

Ngoài ra, nhóm cũng cần tối ưu hệ thống code, các quy trình truyền nhận, và các cài
đặt liên quan đến phần cứng để có khả năng tăng tốc quá trình thực thi model AI thời
gian thực. Vì mặc dù tổng thời gian chạy predict là 20ms mỗi frame, máy tính cần tới
30ms để truyền dữ liệu tới card đồ hoạ và 30ms để truyền kết quả đến ram. Do đó những
cài đặt nhằm rút ngắn thời gian truyền nhận dữ liệu được xem là ảnh hưởng rất lớn đến
tốc độ phản ứng toàn hệ thống.

6.2 Module né vật cản


Việc né vật cản hiện tại chỉ dựa vào vị trí của vật cản và làn đường so với robot. Chính
vì vậy, nên ta chưa thể dự đoán được quỹ đạo của vật cản. Lấy ví dụ như hình bên dưới
131. Khi một chiếc xe lao tới với tốc độ cao từ phải sang trái như bức hình dưới, do vẫn
tồn tại đường đi đến đích, nên giải thuật sẽ trả về đường đi để robot vượt mặt chiếc xe
này. Tuy nhiên, do chiếc xe có tốc độ cao, nên ở frame sau robot có khả năng va chạm
trực tiếp với đầu của chiếc xe, hoặc bên hông của chiếc xe. Chính vì thể, giải thuật hiện
tại chỉ phù hợp để né vật cản có tốc độ di chuyển thấp và nằm ở hướng trước mặt robot.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 123/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Hình 131: Vật cản di chuyển nhanh

Ngoài ra, ở giải thuật hiện tại, việc các vật cản lao tới từ đằng sau và bên cạnh như
hình 132 cũng là một thách thức, và xe chưa có khả năng nhận diện điều này.

Hình 132: Vùng mà xe không thể né với giải thuật hiện tại

Chính vì vậy nhóm đề ra các hướng cải tiến:

1. Phát hiện quỹ đạo vật cản từ xa, nhằm giúp xe phán đoán và đưa ra quyết định
một cách hợp lý.

2. Phát hiện và có khả năng né các vật cản lao tới từ đằng sau và hai bên cạnh.

6.3 Module nhận diện và phân loại biển báo giao thông
Tuy nhiên mặc dù ở thời điểm hiện tại, hệ thống đã hoạt động ổn định nhưng có thể
có thêm một số hoạt động sau để cái tiến khối về mặt thời gian thực thi cũng như độ
chính xác cho object detection và classifier.

1. Data augmentation để có được lượng dữ liệu dồi dào hơn cho cả YOLOV8 trong
việc object detection và CNN trong classifier.

2. Chạy với GPU để tăng thời gian thực thi.

3. Thay đổi kiến trúc của lớp classifier (chẳng hạn như AlexNet) để xem có sự cải
thiện về mặt chính xác hay không.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 124/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

4. Để tăng tốc về tốc độ xử lý, thay vì sử dụng mô hình thuần tuý thì ta có thể lượng
tử hoá mô hình sang .tflite. Dù hi sinh độ chính xác một tí, nhưng bằng những cải
tiến ở trên sẽ cân bằng lại và sẽ đạt được trạng thái cân bằng về thời gian xử lý và
độ chính xác của mô hình.

6.4 Module nhận diện và phân loại đèn giao thông


Nhằm có khả năng chạy ngoài thực tế, nhóm đề xuất một số cải tiến sau:

• Nâng cấp thiết bị camera cho robot có độ tương phản màu cao hơn.

• Tự thiết kế lại đèn giao thông giống ngoài thực tế (một đèn màu đỏ cấu thành từ
nhiều led nhỏ màu đỏ giúp giảm độ chóa, tăng độ ổn định).

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 125/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

7 Kết luận
7.1 Kết quả đạt được
• Kiến trúc kết nối giữa các component hoạt động hiệu quả nếu như có ít sai sót xảy
ra ở từng module.

• Hệ thống có khả năng né vật cản tĩnh và vật cản động với tốc độ di chuyển chậm,
và sự xuất hiện bất ngờ không quá gần robot.

• Hành vi di chuyển khi né vật cản tĩnh/ động diễn ra chính xác như mong muốn
(gặp vật cản thì hệ thống có khả năng né qua để không chạm).

• Hành vi di chuyển khi gặp các tín hiệu giao thông diễn ra chính xác như mong muốn
(gặp đèn đỏ thì dừng, các biển còn lại thì đi bình thường).

• Hành vi di chuyển trên bề mặt đường không bị vượt ra ngoài phạm vi bề mặt đường,
có khả năng bám đường tốt. Có khả năng chọn lựa làn đường phù hợp để tấp vào.
Chẳng hạn như khi gặp vật cản nhưng có khả năng né thì sẽ né, tuy nhiên nếu
không có khả năng thì robot sẽ đứng yên không di chuyển. Khi không có vật cản
thì robot sẽ có xu hướng chỉ di chuyển ở một trong 2 làn chứ không đi vào giữa của
bề mặt đường.

7.2 Các giới hạn của hệ thống sau khi tích hợp
Mặc dù sự hệ thống hoạt động khá ổn định, tuy nhiên vẫn còn một số giới hạn cần
phải được loại bỏ ra khỏi hệ thống như sau:

• Tốc độ phản ứng của robot chậm: Lí do vì ở mỗi module chưa có sự tối ưu về
thời gian xử lý (chẳng hạn như chưa lượng tử hoá các model AI), cũng tận dụng tốt
GPU khiến cho thời gian xử lý chưa nhanh, dẫn tới tốc độ phản ứng của hệ thống
còn chậm.

• Tốc độ di chuyển robot còn chậm: Vì giới hạn của motor turtlebot, do đó nhóm
không thể thiết kế giải thuật chạy trên thiết bị có tốc độ cao. Các vấn đề phát sinh
khi chạy tốc độ cao có thể sẽ không xuất hiện khi robot di chuyển chậm như hiện
tại.

• Hạn chế về độ chính xác của phần cứng: Những hạn chế về phần cứng chẳng
hạn như camera sẽ dẫn đến như hình ảnh không rõ ràng, có độ phân giải chưa tốt.
Từ đó dẫn đến hạn chế về việc nhận biết ngữ nghĩa của hình ảnh như biển báo giao
thông, đèn giao thông (bị sai màu, nhòe ảnh, ...). Hay đối với động cơ quay của
bánh xe có sự sai số dẫn tới việc dự đoán vị trí làn đường ở các thời điểm tiếp theo
chưa thật sự chính xác và tạo nên sai số tích luỹ nếu phải sử dụng tính năng này
quá lâu.

• Giới hạn về những trường hợp hoạt động tốt: Chẳng hạn như hệ thống sẽ có
các hành vi không xác định nếu tồn tại nhiều đường trong khung hình. Vì khi đó,
tất cả làn đường đều sẽ được bắt bởi AI, khi đó khối backend sẽ có những hành vi
không xác định.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 126/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

• Hạn chế của khối né vật cản: Hiện tại, khối né vật cản chưa có khả năng tính
toán, đoán biết được hướng hoạt động của vật thể và di chuyển trước khi thực sự
đến gần vật cản. Ngoài ra, robot chưa có hành vi né tránh những vật cản tông trực
tiếp robot di chuyển từ phía sau hoặc hai bên.

7.3 Hướng phát triển


Mặc dù xe đã có thể chạy và né vật cản trong môi trường mô hình phòng thí nghiệm,
tuy nhiên xe vẫn còn một số hạn chế nêu trên. Chính vì vậy, nhóm đề xuất những hướng
phát triển dự án:

• Tổng quan:

1. Xe có thể né được vật cản từ phía sau robot.


2. Xe có thể di chuyển với tốc độ nhanh hơn (việc này yêu cầu tăng tốc độ xử lý
của từng khối).
3. Xe có thể thực hiện rẽ của ở ngã ba và ngã tư.

• Khối làn đường:

1. Hạn chế hơn nữa những nhiễu loạn về background hay những vật cản có những
hoạ tiết đường thẳng.
2. Duy trì độ chính xác hiện tại nhưng vẫn đảm bảo dữ liệu được gửi thường
xuyên hơn.

• Khối né vật cản:

1. Có khả năng phát hiện phương và độ lớn vận tốc di chuyển của vật cản.
2. Có khả năng né các vật cản tiến tới từ phía sau.

• Khối biển báo:

1. Tăng lượng data train cho YOLO trong việc phát hiện và CNN cho việc nhận
diện biển báo.
2. Đổi qua các model khác để khảo sát tốc độ và độ chính xác.

• Khối đèn giao thông:

1. Cải thiện yếu tố phần cứng như camera, và độ choá của đèn.

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 127/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

Tài liệu tham khảo


[1] An introduction to deep learning, By Piyush Madan, Samaya Madhavan - Updated
8 November 2020 - Published 2 March 2020

[2] Support Vector Machine — Introduction to Machine Learning Algorithms, Rohith


Gandhi, Jun 7, 2018

[3] Q-Learning Algorithm: From Explanation to Implementation , Amrani Amine, Dec


12, 2020

[4] Huang, Zhang. BIM, machine learning and computer vision techniques in under-
ground construction: Current status and future perspectives. Tunnelling and Under-
ground Space Technology incorporating Trenchless Technology Research. 10 October
2020

[5] The Computer Vision Market in 2022

[6] Alberto Rizzoli, 27+ Most Popular Computer Vision Applications and Use Cases in
2022, October 7, 2022

[7] Valentyn Sichkar, Traffic Signs Preprocessed Dataset, 2019

[8] Tsung-Yi Lin, Priyal Goyal, Ross Girshick, Kaiming He, and Piotr Doll´ar, “Focal
loss for dense object detection,” IEEE transactions on pattern analysis and machine
intelligence, 2018.

[9] Ozan Oktay, Jo Schlemper, Loic Le Folgoc, Matthew Lee, Mattias Heinrich, Kazu-
nari Misawa, Kensaku Mori, Steven McDonagh, Nils Y Hammerla, Bernhard Kainz,
et al., “Attention u-net: Learning where to look for the pancreas,” arXiv preprint
arXiv:1804.03999, 2018

[10] Sikun Lin and Pan Hui, “Where’s your focus: Personalized attention,” arXiv preprint
arXiv:1802.07931, 2018.

[11] Seyed Raein Hashemi, Seyed Sadegh Mohseni Salehi, Deniz Erdogmus, Sanjay P.
Prabhu, Simon K. Warfield, and Ali Gholipour, “Tversky as a loss function for highly
unbalanced image segmentation using 3d fully convolutional deep networks,” CoRR,
vol. abs/1803.11078, 2018

[12] Moi Hoon Yap, Gerard Pons, Joan Martí, Sergi Ganau, Melcior Sentís, Reyer Zwigge-
laar, Adrian K Davison, and Robert Martí, “Automated breast ultrasound lesions de-
tection using convolutional neural networks,” IEEE journal of biomedical and health
informatics, vol. 22, no. 4, pp. 1218–1226, 2018

[13] Ken CL Wong, Mehdi Moradi, Hui Tang, and Tanveer Syeda-Mahmood, “3d seg-
mentation with exponential logarithmic loss for highly unbalanced object sizes,” in
International Conference on Medical Image Computing and Computer-Assisted In-
tervention. Springer, 2018, pp. 612–619

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 128/129
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính

[14] Proc. 21st International Conference on Medical Image Computing and Computer
Assisted Intervention (MICCAI, Granada, Spain, September 16-20 2018) Part IV,
vol. 11073 of Lecture Notes in Computer Science, Granada, Spain, 2018. Springer.

[15] Wentao Zhu, Yufang Huang, Hui Tang, Zhen Qian, Nan Du, Wei Fan, and Xiao-
hui Xie, “Anatomynet: Deep 3d squeeze-and-excitation u-nets for fast and fully au-
tomated whole-volume anatomical segmentation,” arXiv preprint arXiv:1808.05238,
2018

[16] Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning (Adaptive Compu-
tation and Machine Learning series)

[17] Emilio Soria Olivas, Jose David Martin Guerrero, Marcelino Martinez Sober , Jose
Rafael Magdalena Benedito, Antonio Jose Serrano Lopez, Handbook Of Research On
Machine Learning Applications and Trends: Algorithms, Methods and Techniques (2
Volumes)

[18] Diego Lopez Yse, Introduction to Transfer Learning

[19] J. Redmon, S. Divvala, R. Girshick and A. Farhadi, "You Only Look Once: Uni-
fied, Real-Time Object Detection," 2016 IEEE Conference on Computer Vision
and Pattern Recognition (CVPR), Las Vegas, NV, USA, 2016, pp. 779-788, doi:
10.1109/CVPR.2016.91.

[20] Ultralytics YOLOv8 Docs

[21] NEW - YOLOv8 in PyTorch > ONNX > CoreML > TFLite

[22] Andreas Bresser, python-pathfinding package

[23] Geeksforgeeks, Best First Search (Informed Search)

[24] Informed Search Algorithms

[25] Khoa Nguyễn, Xây dựng mạng Unet cho bài toán Segmentation, 14 April, 2018

Hiện thực chức năng xe tự hành tránh vật cản động trong môi trường không xác định Trang 129/129

You might also like