Professional Documents
Culture Documents
Report Self Driving
Report Self Driving
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
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.
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.
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
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
V
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
VI
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
VII
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
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
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
XII
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tính
XIII
Trường Đại Học Bách Khoa Tp.Hồ Chí Minh
Khoa Khoa Học & Kỹ Thuật Máy Tí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.
• 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. Để á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, ...
• 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:
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.
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
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).
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:
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.
Đố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.
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
2. Các map:
Map mà nhóm đã từng sử dụng để chạy kiểm thử chương trình:
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
• 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.
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
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:
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.
• 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).
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.
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.
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
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.
• 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)
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.
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.
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
– 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
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.
• 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.
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.
• 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.
• 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 .
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
• 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.
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.
• 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.
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ó.
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
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ó 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
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.
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.
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
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.
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:
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.
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:
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
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:
• 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
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
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.
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
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.
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
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.
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
Để 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).
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
• 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
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).
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.
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.
• Gaussian blur
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
• 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.
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.
• 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
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.
• 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.
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.
• 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.
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 γ.
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ạ độ
birdeyeview (x2 , y2 ) như sau:
x2 x1
y2 = y1 Maf
1 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 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
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′ ).
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)
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
Ở đâ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
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)
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.
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.
• 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 )
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.
• 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
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:
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.
– Ư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.
• 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
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:
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
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.
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
Để 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.
Ở 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.
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
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
Trong đó:
• 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.
• 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.
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
Ở 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
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.
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.
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:
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.
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.
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.
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.
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
Ở 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.
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 đó:
• 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 đó:
• ∆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 đó:
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
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
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.
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
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.
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
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
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. 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
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.
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
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
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).
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).
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 độ.
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ế:
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.
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).
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%.
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.
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:
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:
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
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
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
• 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.
• 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.
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
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
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.
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.
Hình 115: Nhiều tín hiệu đèn xuất hiện cùng lú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 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.
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
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
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
Ở 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
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
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
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
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
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
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.
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
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
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.
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.
• 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.
• Tổng quan:
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.
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.
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.
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
[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
[6] Alberto Rizzoli, 27+ Most Popular Computer Vision Applications and Use Cases in
2022, October 7, 2022
[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)
[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.
[21] NEW - YOLOv8 in PyTorch > ONNX > CoreML > TFLite
[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