LỜI CẢM ƠN Nhóm xin chân thành cảm ơn tới tất cả các cá nhân cũng như các tổ chức đã đồng hành và hỗ trợ cho nhóm trong suốt quá trình thực hiện đề tài “Nghiên cứu và phát triển mô hình
TỔNG QUAN VỀ ĐỀ TÀI
Giới thiệu
Trong bối cảnh cuộc cách mạng công nghệ và sự phát triển vượt bậc của ngành trí tuệ nhân tạo, những nghiên cứu và phát triển các mô hình xe tự hành đang trở thành một hướng đi quan trọng để có thể giải quyết các vấn đề giao thông, an toàn và tiện ích hàng ngày Chúng ta đã không còn xa lạ gì với thuật ngữ “AI” hay “trí tuệ nhân tạo”; chúng tiếp xúc với chúng ta hằng ngày, hằng giờ qua các trợ lý ảo như Siri, Google Assistant trên điện thoại Ngoài ra, AI còn được ứng dụng trong nhà thông minh, trò chơi điện tử, y tế và quân sự Đề tài "Nghiên cứu và phát triển mô hình xe tự hành ứng dụng AI" đang được thu hút đông đảo sự quan tâm từ cả cộng đồng nghiên cứu và ngành công nghiệp ô tô
Khi nhắc đến ‘xe tự hành’, chúng ta không thể bỏ qua công ty tiên phong là Tesla Tesla đã chứng minh giá trị vượt trội của công nghệ này trên toàn cầu Sau Tesla, nhiều công ty khác trên thế giới đã và đang phát triển công nghệ xe tự hành Ở Việt Nam, VinGroup và tập đoàn FPT là hai đơn vị tiên phong trong lĩnh vực xe tự hành, liên tục cải tiến sản phẩm và tiến gần hơn tới mục tiêu làm chủ công nghệ xe tự hành tại Việt Nam
Hiện nay, ứng dụng AI trong các ngành học ở chương trình đại học nói chung và trong ngành công nghệ xe tự lái nói riêng đang diễn ra trên khắp thế giới Điều này mở ra nhiều cơ hội cho sinh viên Với mong muốn tìm hiểu về lĩnh vực này, nhóm đã quyết định chọn đề tài “Nghiên cứu và phát triển mô hình xe tự hành ứng dụng AI” Thông qua đề tài, nhóm hy vọng sẽ cung cấp một cái nhìn tổng quan về việc ứng dụng
AI trong ngành học, đồng thời tích lũy kiến thức để hội nhập với nền công nghiệp ô tô tự hành của thế giới trong tương lai.
Mục tiêu
Với đề tài nghiên cứu và phát triển mô hình xe tự hành, nhóm mong muốn tạo ra một hệ thống xe tự động hoàn chỉnh có khả năng nhận diện làn đường và biển báo giao thông, đồng thời đưa ra các quyết định điều khiển chính xác trong thời gian thực Sản phẩm cuối cùng bao gồm một mô hình xe tự hành tích hợp các công nghệ AI tiên tiến, có khả năng hoạt động hiệu quả và an toàn mà không cần sự can thiệp của con người, giúp mở đường cho việc phát triển và ứng dụng rộng rãi các phương tiện tự lái trong tương lai.
Giới hạn đề tài
Đề tài có những giới hạn như sau:
• Mô hình xe có tỷ lệ 1:10, hoạt động trong điều kiện ánh sáng đầy đủ, tốc độ đường truyền internet ổn định
• Bản đồ với kích thước 2m 2 được chia thành nhiều phần nhỏ, bao gồm đoạn đường cong, ngoằn ngoèo, ngã ba
• Mô hình được huấn luyện để nhận diện được 6 loại biển báo phổ biến: biển báo dừng, biển báo rẽ phải, rẽ trái, biển báo cấm rẽ phải rẽ trái.
Phương pháp nghiên cứu
Phương pháp thu thập số liệu: thu thập và phân tích dữ liệu về các công trình, bài báo, nghiên cứu và tài liệu liên quan đến xe tự hành trong và ngoài nước
Phương pháp điều tra: nghiên cứu, lập trình, xây dựng hệ thống xử lý dữ liệu huấn luận mô hình AI để có thể áp dụng cho xe tự hành
Phương pháp thực nghiệm: thực nghiệm trên môi trường thực tế và đánh giá kết quả đã đạt được
Phương pháp phân tích tổng kết kinh nghiệm: hiệu chỉnh để nhằm ổn định cho xe khi chạy trong môi trường khắc nghiệt như môi trường ánh sáng thiếu ổn định.
Đối tượng và phạm vi nghiên cứu
1.5.1 Đối tượng Đối tượng nghiên cứu của đề tài là một chiếc xe tự hành có thể đọc ảnh và phân tích dữ liệu từ hình ảnh bao gồm làn đường, biển báo… được chụp từ camera Từ đó có thể tự động ước tính được quỹ đạo mà xe cần phải di chuyển, truyền tín hiệu cho động cơ để điều khiển động cơ sao cho thỏa mãn yêu cầu đề ra trên thời gian thực
Về phạm vi nghiên cứu, nhóm thực hiện đề tài thiết kế một mô hình xe tự hành tỉ lệ 1:10 có thể chạy trên thời gian thực được phát triển trên máy tính nhúng Jetson Nano Môi trường thực hiện sẽ là sân mô hình do nhóm thiết kế, trên sân sẽ đặt các biển báo giao thông thuận tiện cho việc nhận dạng và hành động của xe đối với từng biển báo đó.
Bố cục quyển báo cáo
Nội dung chính của đề tài được trình bày với 5 chương:
• CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI: Giới thiệu về đề tài, mục tiêu, giới hạn đề tài, phạm vi nghiên cứu, phương pháp nghiên cứu cho đề tài “Nghiên cứu và phát triển mô hình xe tự hành ứng dụng AI”
• CHƯƠNG 2 CƠ SỞ LÝ THUYẾT: Trình bày lý thuyết về xe tự hành, công nghệ, các phương pháp xử lí ảnh để nhận diện làn đường, biển báo
• CHƯƠNG 3 THIẾT KẾ HỆ THỐNG: Trình bày yêu cầu thiết kế hệ thống phần cứng và phần mềm
• CHƯƠNG 4 CÁC PHƯƠNG PHÁP PHÁT HIỆN VÀ NHẬN DIỆN:
Trình bày các phương pháp nhận diện làn đường đã tìm hiểu và nghiên cứu, so sánh các phương pháp
• CHƯƠNG 5 KẾT QUẢ VÀ ĐÁNH GIÁ: Trình bày kết quả thực hiện, đánh giá tổng quan về mô hình
• CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: Trình bày ưu và nhược điểm của mô hình, đưa ra giải pháp và hướng phát triển cho đề tài trong tương lai.
CƠ SỞ LÝ THUYẾT
Xe tự hành
Xe tự hành hay xe tự lái, là loại xe có khả năng di chuyển và điều hướng mà không cần bất kỳ sự can thiệp trực tiếp nào đến từ con người Chúng được trang bị một loạt các cảm biến, các thuật toán và trí tuệ nhân tạo để có thể nhận thức và phát hiện môi trường xung quanh, bao gồm các phương tiện khác, người đi bộ, chướng ngại vật và đường sá Nhờ đó, xe tự hành có thể tự động điều chỉnh tốc độ, phanh, và rẽ trái/phải để di chuyển an toàn và hiệu quả Chúng ta có thể xem qua chiếc xe tự hành của Google như Hình 1
Hình 1 Xe tự hành của Google
Hiện nay, xe tự hành được phân loại thành 6 cấp độ theo chuẩn của SAE (Society of Automobile Engineers) Các cấp độ này phân hóa từ 0 đến 5, với các mức độ tự động hóa khác nhau được mô tả như Hình 2
• Cấp độ 0 - Không tự động hóa: Xe không có bất kỳ tính năng tự động hóa nào Tài xế phải kiểm soát hoàn toàn tất cả các chức năng của xe mọi lúc
• Cấp độ 1 - Hỗ trợ tài xế: Xe có một số hệ thống hỗ trợ tài xế, chẳng hạn như kiểm soát hành trình (cruise control) hoặc hỗ trợ giữ làn đường Tài xế vẫn phải kiểm soát phần lớn hoạt động của xe và luôn luôn phải chú ý
• Cấp độ 2 –Tự động hóa bán phần: Xe có thể tự động hóa một số chức năng, như duy trì tốc độ và giữ làn đường đồng thời Tuy nhiên, tài xế vẫn phải giám sát và sẵn sàng can thiệp bất kỳ lúc nào
• Cấp độ 3 – Tự động hóa có điều kiện, có người lái: Xe có thể tự vận hành trong một số điều kiện nhất định mà không cần sự can thiệp của tài xế Tuy nhiên, tài xế phải sẵn sàng tiếp quản khi hệ thống yêu cầu
• Cấp độ 4 - Tự động hóa cao, không người lái: Xe có thể tự vận hành trong hầu hết các tình huống mà không cần sự can thiệp của tài xế Tuy nhiên, có thể có những điều kiện mà xe không thể xử lý và yêu cầu tài xế can thiệp
• Cấp độ 5 - Tự động hóa hoàn toàn, không người lái: Xe hoàn toàn tự hành trong mọi điều kiện và tình huống mà không cần sự can thiệp của tài xế Xe không cần các yếu tố điều khiển như vô lăng hay bàn đạp
Hình 2 Xe tự hành – 6 cấp độ tự động hóa
2.1.2 Ứng dụng AI trên Xe tự hành Để xe có thể tự hoạt động hoàn toàn mà không cần bất cứ sự can thiệp của con người, ngoài việc xử lý nguồn dữ liệu đã có sẵn, xe còn phải tự thu thập và xử lý những dữ liệu mới Điều này đòi hỏi phải sử dụng công nghệ AI (trí tuệ nhân tạo) Để đơn giản hóa, AI là khi máy tính có thể bắt chước hành vi và tư duy của con người theo một cách nào đó Để máy tính làm được điều này, con người cần thiết lập nền tảng và phương pháp để máy học kiến thức mới từ những kiến thức đã được dạy Giải pháp được sử dụng ở đây là Machine Learning (học máy)
Công nghệ học máy hoạt động dựa trên mối liên kết toán học giữa dữ liệu đầu vào và kết quả Mô hình học máy không biết được trước mối quan hệ này, nhưng có thể dự đoán được nếu có đẩy đủ nguồn dữ liệu Tất cả các thuật toán học máy đều dựa trên các hàm toán học có thể được điều chỉnh Trong xe tự hành, các thuật toán này giúp xe nhận diện các yếu tố như điều kiện đường xá, vật cản, biển báo giao thông, Tuy nhiên, việc xử lý lượng lớn dữ liệu này là rất khó khăn nếu chỉ sử dụng các thuật toán thông thường do lượng dữ liệu đầu vào quá lớn và phức tạp Do đó, giải pháp ở đây là để máy tính bắt chước hoạt động của bộ não con người, từ đó mạng thần kinh nhân tạo (Neural Networks) ra đời [1]
Mạng thần kinh nhân tạo bao gồm một nhóm các nút (neural) được liên kết với nhau, chúng xử lý thông tin bằng cách truyền qua các kết nối và tính toán các giá trị mới tại các nút Trong một số trường hợp, mạng thần kinh nhân tạo là một hệ thống thích ứng, tự thay đổi cấu trúc dựa trên thông tin thông qua mạng trong quá trình học Phương pháp để hình thành các mạng lưới này là Deep Learning Deep Learning hoạt động bằng cách cung cấp một lượng lớn dữ liệu về một đối tượng nhất định, sau đó máy tính phân tích đặc điểm của dữ liệu đầu vào, để tìm ra các đặc điểm chung và hình thành một mạng lưới thần kinh với các đặc điểm nhận dạng của dữ liệu đầu vào
Từ đó hình thành nên mối liên kết chặt chẽ giữa AI, học máy và học sâu như Hình 3
Hình 3 Mối quan hệ giữa trí tuệ nhân tạo, học máy và học sâu
Ví dụ đối với chương trình nhận dạng khuôn mặt, Deep Learning được mô phỏng bao gồm cách bước sau:
• Chuẩn bị dữ liệu: Dữ liệu khuôn mặt được tải về, sau đó được chuẩn hóa và chuẩn bị sẵn sàng cho quá trình huấn luyện
• Xây dựng mô hình: Mô hình CNN (Convolutional Neural Network) cơ bản được xây dựng, bao gồm nhiều lớp tích chập (convolutional layers) và lớp gộp (pooling layers), sau đó là các lớp dày đặc (dense layers) để thực hiện phân loại
• Huấn luyện mô hình: Mô hình được huấn luyện với dữ liệu hình ảnh qua nhiều epoch (chu kỳ huấn luyện)
• Đánh giá mô hình: Mô hình được đánh giá bằng tập dữ liệu kiểm tra để đo lường độ chính xác của nó trong việc việc nhận diện khuôn mặt
• Dự đoán: Mô hình sau đó được sử dụng để dự đoán trên dữ liệu mới, và kết quả dự đoán này được trực quan hóa bằng cách phân tích và nhận diện khuôn mặt ở nhiều điều kiện khác nhau
Hình 4 Sơ đồ mô phỏng thuật toán học sâu – Deep Learning.
Xử lý ảnh
2.2.1 Giới thiệu về xử lý ảnh
Xử lý ảnh là một lĩnh vực nghiên cứu quan trọng trong khoa học công nghệ Trong những năm qua, lĩnh vực này đã và đang phát triển với tốc độ chóng mặt bởi các trung tâm nghiên cứu và các trường đại học, với rất nhiều ứng dụng thực tế trong nhiều lĩnh vực khác nhau
Các phương pháp xử lý ảnh được bắt đầu từ các ứng dụng nhằm nâng cao chất lượng ảnh bằng các phương pháp phân tích được nghiên cứu trong giai đoạn thiết bị phần cứng bị hạn chế Ví dụ như nâng cao độ sáng hay độ phân giải của ảnh Ngày nay, với sự phát triển của công nghệ máy tính đã tạo ra điều kiện thuận lợi cho việc thực hiện các thuật toán xử lý ảnh phức tạp
Xử lý ảnh ngày càng được ứng dụng rộng rãi và phổ biến trong nhiều lĩnh vực như tự động hóa, kỹ thuật y sinh, viễn thông Trong đời sống hàng ngày, các thiết bị kỹ thuật số như máy ảnh, điện thoại thông minh, tivi thông minh, cũng tích hợp các công nghệ này để cung cấp những hình ảnh rõ nét và đáp ứng nhu cầu của người sử dụng
2.2.2 Các bước xử lý ảnh
Như được thể hiện trong Hình 5, các bước xử lý ảnh bao gồm:
• Thu thập dữ liệu (Data Acquisition): Đây là bước đầu tiên để nhận ảnh đầu vào qua các thiết bị như camera, ảnh vệ tinh, hoặc cơ sở dữ liệu hình ảnh Các định dạng phổ biến bao gồm JPEG, PNG, BMP, TIFF, …
• Tiền xử lý (Preprocessing): Sau khi nhận ảnh đầu vào từ nguồn cấp, ảnh sẽ được xử lý để nâng cao chất lượng, đảm bảo tất cả các hình ảnh có định dạng đồng nhất để dễ dàng thao tác, loại bỏ các phần không cần thiết của hình ảnh, tập trung vào vùng chứa thông tin quan trọng Điều chỉnh kích thước hình ảnh để phù hợp với yêu cầu của thuận toán, giúp tăng hiệu quả xử lí Điều chỉnh độ sáng độ tương phản để chuẩn hóa hình ảnh, làm cho các chi tiết dễ nhận diện hơn Sử dụng các bộ lọc để giảm nhiễu, cải thiện chất lượng ảnh và tăng độ chính xác của các bước xử lý sau
• Chuyển đổi không gian màu (Color Space Transformation): Chuyển đổi giữa các không gian màu khác nhau như HSV để phục vụ cho các kỹ thuật xử lý
• Tăng cường hình ảnh (Image Enhancement): Sử dụng các bộ lọc để làm mịn ảnh, giảm nhiễu và cải thiện chất lượng tổng thể Làm nét các cạnh và chi tiết nhỏ trong hình ảnh, giúp hình ảnh rõ nét hơn Cải thiện độ tương phản, làm nổi bật các chi tiết quan trọng
• Phân đoạn ảnh (Image Segmentation): Sử dụng thuật toán để nhận diện các mẫu và đối tượng trong ảnh Quá trình này thực hiện thông qua việc chia ảnh thành từng vùng riêng biệt và đồng nhất, hay còn gọi là là xác định các biên của các ảnh Phân đoạn ảnh là quá trình chia ảnh thành các vùng không trùng lặp, mỗi vùng gồm một nhóm pixel liên kết và đồng nhất theo một tiêu chí nhất định Đây là phần phức tạp nhất trong xử lý ảnh vì dễ gây lỗi, có thể làm giảm độ chính xác của ảnh Kết quả của việc nhận dạng ảnh phụ thuộc rất nhiều vào công đoạn này
• Nhận dạng và phân loại: (Recognition and Classification): Đây là bước cuối cùng trong quá trình xử lý ảnh, liên quan đến việc mô tả các đối tượng cần đặc tả Nhận dạng ảnh ở đây có thể được hiểu một cách đơn giản là gán nhãn cho các đối tượng trong ảnh Hiện nay, kỹ thuật nhận dạng đã được áp dụng thành công với nhiều đối tượng như: vân tay, khuôn mặt, biển số xe, Ngoài ra, kỹ thuật nhận dạng dựa trên mạng nơ ron cũng đang được áp dụng và cho kết quả khả quan [2]
Từ những bước xử lý ảnh cơ bản như tiền xử lý, phân đoạn và trích xuất đặc trưng, chúng ta đã có thể tạo ra một cơ sở dữ liệu hình ảnh rõ ràng và sắc nét hơn, giúp việc phân tích trở nên dễ dàng hơn Tiếp theo, chúng ta sẽ khám phá các phương pháp phát hiện làn đường - một ứng dụng quan trọng trong lĩnh vực xử lý ảnh, đặc biệt là trong các hệ thống hỗ trợ lái xe tự động Bằng cách sử dụng các kỹ thuật như biến đổi Hough, lọc Canny, và các thuật toán học máy, chúng ta có thể nhận diện chính xác vị trí của làn đường trên các bức ảnh thu được từ camera gắn trên xe, từ đó hỗ trợ việc định vị và điều khiển phương tiện một cách an toàn và hiệu quả
Hình 5 Các bước xử lý ảnh cơ bản
Không gian màu HSV là một mô hình màu được sử dụng phổ biến trong xử lý ảnh và thị giác máy tính HSV và viết tắt của ba thành phần: Hue (Sắc độ), Saturation (Độ bão hòa) và Value (giá trị sáng) Không gian màu này được sử dụng vì nó tách biệt thông tin về màu sắc và cường độ ánh sáng, giúp cho việc xử lý và phân tích màu sắc trở nên dễ dàng hơn
Hình 6 Không gian màu HSV
Từ Hình 6, ta có thể thấy: Hue (Sắc độ) được biểu thị dưới dạng số từ 0 đến
360 độ Saturation (Độ bão hòa) đo mức độ tinh khiết của màu sắc, có thể hiểu là lượng màu xám trong màu sắc, với giá trị từ 0 đến 100% Điều chỉnh Saturation (Độ bão hòa) để tạo ra hiệu ứng mờ ảnh Value (Giá trị sáng) biểu thị độ sáng của màu sắc, với giá trị từ 0 đến 100%
2.2.4 Thuật toán Canny Edge Detection
Phát hiện cạnh bằng thuật toán Canny là một kỹ thuật để trích xuất thông tin cấu trúc hữu ích từ các đối tượng hình ảnh khác nhau và giảm đáng kể lượng dữ liệu cần xử lý Kỹ thuật này đã được ứng dụng rộng rãi trong nhiều hệ thống thị giác máy tính Canny nhận thấy rằng các yêu cầu đối với việc áp dụng phát hiện cạnh trên các hệ thống thị giác khác nhau tương đối giống nhau Do đó, một giải pháp phát hiện cạnh đáp ứng các yêu cầu này có thể được triển khai trong nhiều tình huống khác nhau Canny Edge Detection là một thuật toán phát hiện cạnh phổ biến Đây là thuật toán nhiều giai đoạn nên chúng ta sẽ tìm hiểu từng giai đoạn Quá trình của thuật toán phát hiện cạnh Canny có thể được chia thành các bước dưới đây:
Việc phát hiện cạnh dễ bị gặp nhiễu trong ảnh nên bước đầu tiên là loại bỏ nhiễu trong ảnh bằng bộ lọc Gaussian Điều quan trọng là phải hiểu rằng việc lựa chọn kích thước của Gaussian kernel sẽ ảnh hướng đến hiệu suất Kích thước càng lớn thì độ nhạy với nhiễu càng thấp Kích thước Gaussian kernel phù hợp nhất cho hầu hết các trường hợp là 5x5, nhưng kích thước này sẽ thay đổi tùy theo tình huống cụ thể OpenCV cung cấp cho ta một phương thức để sử dụng bộ lọc này Bằng cách sử dụng hàm được xây dựng trước là cv.GaussianBlur() Kết quả của hình ảnh được biểu diễn như Hình 7
Hình 7 Giảm nhiễu bằng bộ lọc Gaussian
• Tìm cường độ Gradient của hình ảnh
Sau đó, hình ảnh được làm mịn được lọc bằng hạt nhân Sobel theo cả hướng ngang và hướng dọc để lấy đạo hàm bậc nhất theo hướng ngang (Gx) và hướng dọc (Gy) Từ hai hình ảnh này, chúng ta có thể tìm độ dốc cạnh và hướng cho từng pixel từ phương trình (2.1) và (2.2)
Hướng gradient luôn vuông góc với các cạnh Nó được làm tròn thành một trong bốn góc tượng trưng cho các hướng dọc, ngang và hai đường chéo
Sau khi nhận được độ lớn và hướng gradient, quá trình quét toàn bộ hình ảnh được thực hiện để loại bỏ bất kỳ pixel không mong muốn nào có thể không tạo thành cạnh Đối với điều này, tại mỗi pixel, pixel sẽ được kiểm tra xem nó có phải là mức tối đa cục bộ trong vùng lân cận của nó theo hướng gradient hay không Hãy xem Hình 8 dưới đây: Điểm A nằm trên cạnh (theo hướng thẳng đứng) Hướng gradient là bình thường đối với cạnh Điểm B và C có hướng dốc Vì vậy, điểm A được kiểm tra với điểm B và C để xem liệu nó có tạo thành cực đại cục bộ hay không Nếu vậy, nó được xem xét cho giai đoạn tiếp theo, nếu không, nó sẽ bị loại bỏ (đưa về 0) Nói tóm lại, kết quả nhận được là một hình ảnh nhị phân "thin edge"
Hình 8 Hướng gradient và biên ảnh trong xử lý ảnh kỹ thuật số
Mạng nơ-ron tích chập
2.3.1 Giới thiệu mạng nơ-ron tích chập
Mạng nơ-ron tích chập (Convolutional Neural Network - CNNs) là một loại mạng nơ-ron nhân tạo (artificial neural network - ANN) được sử dụng phổ biến trong xử lý hình ảnh, xử lý ngôn ngữ tự nhiên và nhận dạng video CNNs được thiết kế để lấy thông tin từ dữ liệu đầu vào dạng lưới (ví dụ: ảnh), trích xuất các đặc trưng quan trọng, và đưa ra dự đoán hoặc phân loại
Tích chập là quá trình kết hợp hai hàm để tạo ra đầu ra của hàm kia Hình ảnh đầu vào được kết hợp với việc áp dụng các bộ lọc trong CNNs, tạo ra Feature map
Bộ lọc là các trọng số và độ lệch, là các vectơ được tạo ngẫu nhiên trong mạng Thay vì có các trọng số và độ lệch riêng cho từng nơ-ron, CNNs sử dụng cùng trọng số và độ lệch cho tất cả các nơ-ron Có thể tạo nhiều bộ lọc, mỗi bộ lọc nắm bắt một khía cạnh khác nhau từ đầu vào Kernel là tên gọi khác của bộ lọc [4]
Trong mạng nơ-ron tích chập (CNNs), thành phần chính là các lớp tích chập Các lớp này thường bao gồm các vectơ đầu vào, như Hình 14, bộ lọc (hoặc bộ phát hiện đặc điểm) và vectơ đầu ra, thường được gọi là Feature map Khi đầu vào, chẳng hạn như Hình 14, đi qua lớp chập, nó sẽ trải qua quá trình trừu tượng hóa thành feature map, còn được gọi là activation map Quá trình này bao gồm thao tác tích chập, cho phép phát hiện các đặc điểm phức tạp hơn trong ảnh Ngoài ra, các đơn vị tuyến tính được chỉnh lưu (ReLU) thường được sử dụng làm hàm kích hoạt trong các lớp này để đưa tính phi tuyến tính vào mạng Hơn nữa, CNNs thường sử dụng các hoạt động gộp để giảm kích thước không gian của bản đồ đối tượng, dẫn đến khối lượng đầu ra dễ quản lý hơn Nhìn chung, các lớp tích chập đóng một vai trò quan trọng trong việc trích xuất các tính năng có ý nghĩa từ dữ liệu đầu vào, biến chúng thành nền tảng trong các nhiệm vụ như phân loại hình ảnh và xử lý ngôn ngữ tự nhiên, cùng nhiều nhiệm vụ khác, trong lĩnh vực mô hình học máy Đầu vào được tích hợp bởi các lớp tích chập, sau đó chuyển đầu ra sang lớp tiếp theo Điều này tương tự như phản ứng của tế bào thần kinh đối với một kích thích duy nhất ở vỏ não thị giác Mỗi nơ-ron tích chập chỉ xử lý dữ liệu cho trường tiếp nhận mà nó được gán
Tích chập là một hàm nhóm trong toán học Tích chập xảy ra trong CNNs khi hai ma trận (mảng số hình chữ nhật được sắp xếp theo cột và hàng) được kết hợp để tạo ra ma trận thứ ba Trong các lớp tích chập của CNNs, các lớp tích chập này được sử dụng để lọc dữ liệu đầu vào và tìm thông tin Quá trình tính toán tích chập được minh họa như Hình 14
Hình 14 Minh họa quá trình tính toán tích chập
Padding và stride có tác động đến cách thực hiện quy trình tích chập Chúng có thể được sử dụng để tăng hoặc giảm kích thước (chiều cao và chiều rộng) của vectơ đầu vào/đầu ra
Nó là một thuật ngữ được sử dụng trong các mạng thần kinh tích chập để mô tả số lượng pixel được thêm vào một hình ảnh khi nó được xử lý bởi CNNs kernel
Ví dụ: nếu padding trong CNNs được đặt thành 0 thì mọi giá trị pixel được thêm vào sẽ có giá trị bằng 0 Nếu padding bằng 0 được đặt thành 1 thì stride một pixel có giá trị pixel bằng 0 sẽ được thêm vào hình ảnh
Padding hoạt động bằng cách tăng vùng xử lý của mạng nơ-ron tích chập Kernel là một bộ lọc mạng thần kinh di chuyển qua một bức ảnh, quét từng pixel và chuyển dữ liệu sang định dạng nhỏ hơn hoặc lớn hơn như Hình 15 Padding được thêm vào khung hình để hỗ trợ kernel xử lý hình ảnh bằng cách cung cấp thêm chỗ cho kernel che hình ảnh Việc thêm padding vào hình ảnh được CNNs xử lý sẽ giúp phân tích hình ảnh chính xác hơn Quá trình tích chập sử dụng bộ lọc được minh họa như Hình 15
Hình 15 Minh họa quá trình tích chập sử dụng bộ lọc kernel
Stride xác định cách bộ lọc tích tụ trên ma trận đầu vào, tức là có bao nhiêu pixel dịch chuyển Khi stride được đặt thành 1, bộ lọc sẽ di chuyển qua một pixel mỗi lần và khi stride được đặt thành 2, bộ lọc sẽ di chuyển qua hai pixel cùng một lúc Ví dụ minh họa như Hình 16 [5]
Hình 16 Minh họa ảnh hưởng của stride trong việc tích chập
Mục đích của nó là thu nhỏ dần kích thước không gian của biểu diễn để giảm số lượng tham số và tính toán trong mạng Lớp tổng hợp xử lý từng feature map một cách riêng biệt
Như được thể hiện trong Hình 17 một số phương pháp pooling gồm:
• Max-pooling: Nó chọn phần tử quan trọng nhất từ feature map Các đối tượng feature map được lưu trữ trong lớp tổng hợp tối đa kết quả Đây là phương pháp phổ biến nhất vì nó mang lại kết quả tốt nhất
• Average pooling: Nó đòi hỏi phải tính toán mức trung bình cho từng vùng của feature map
Việc pooling dần dần giảm kích thước không gian của biểu diễn để giảm số lượng tham số và tính toán trong mạng, cũng như để ngăn chặn việc khớp quá mức Nếu không có pooling, đầu ra có cùng độ phân giải với đầu vào
Hình 17 Minh họa các phương pháp pooling
Hàm kích hoạt tuyến tính được chỉnh lưu, hay viết tắt là ReLU, là một hàm tuyến tính từng đoạn, nếu đầu vào dương, sẽ xuất đầu vào trực tiếp; nếu không, nó sẽ xuất ra số không Bởi vì mô hình sử dụng nó sẽ đào tạo nhanh hơn và thường tạo ra hiệu suất cao hơn nên nó đã trở thành chức năng kích hoạt mặc định cho nhiều loại mạng lưới thần kinh Ở cuối CNNs, có một lớp nơ-ron được kết nối đầy đủ Giống như trong Mạng thần kinh thông thường, các nơ-ron trong lớp được kết nối đầy đủ có kết nối đầy đủ với tất cả các kích hoạt ở lớp trước và hoạt động tương tự Sau khi huấn luyện, vectơ đặc trưng từ lớp được kết nối đầy đủ sẽ được sử dụng để phân loại hình ảnh thành các danh mục riêng biệt Mọi đơn vị kích hoạt ở lớp tiếp theo được ghép nối với tất cả các đầu vào từ lớp này Overfitting xảy ra do tất cả các tham số đều bị chiếm trong lớp được kết nối đầy đủ Có thể giảm thiểu việc trang bị Overfitting bằng nhiều chiến lược khác nhau, bao gồm cả việc bỏ học Quá trình này được thể hiện qua Hình 18
Hình 18 Minh họa quá trình từ ngõ vào đến hàm ReLU
Soft-max là lớp kích hoạt thường được áp dụng cho lớp cuối cùng của mạng, đóng vai trò là lớp phân loại Lớp này chịu trách nhiệm phân loại đầu vào được cung cấp thành các loại riêng biệt Đầu ra không chuẩn hóa của mạng được ánh xạ tới phân phối xác suất bằng hàm softmax.
THIẾT KẾ HỆ THỐNG
Yêu cầu thiết kế
Trong thiết kế xe tự hành sử dụng AI với Jetson Nano, yêu cầu chính là phải tích hợp hiệu quả các thuật toán học sâu và mạng nơ-ron nhân tạo để xử lý và phân tích dữ liệu hình ảnh từ camera Jetson Nano phải được cấu hình để nhận dạng đối tượng, phát hiện vạch kẻ đường, và dự đoán hành trình xe dựa trên thông tin thu thập được Nó cần có khả năng giao tiếp với các bộ điều khiển khác như Arduino để điều khiển các thiết bị ngoại vi như servo và động cơ DC Hệ thống cần được lập trình để tự động điều chỉnh theo điều kiện môi trường và phản ứng nhanh chóng với các tình huống, đồng thời đảm bảo an toàn và hiệu quả trong quá trình vận hành.
Thiết kế hệ thống
Mô hình xe tự hành được thiết kế để phục vụ cho việc nghiên cứu, do đó hệ thống phải đạt được một số yêu cầu nhất định về mặt kỹ thuật Hệ thống được thiết kế nhỏ gọn và có tính linh hoạt, dễ dàng trong việc lắp ráp và thay thế linh kiện Các yêu cầu kỹ thuật trong hệ thống cũng mang tính tương đối và chỉ phù hợp với một số môi trường nhất định Mô hình sử dụng bo mạch Jetson Nano làm bộ xử lý trung tâm Đảm bảo hệ thống có khả năng nhận dạng, xử lý hình ảnh thu thập được từ camera Dựa theo dữ liệu được huấn luyện cho mô hình AI được áp dụng, dự đoán quỹ đạo tiếp theo của xe Sơ đồ hệ thống được mô tả như Hình 19
Hình 19 Sơ đồ khối mô hình xe tự hành ứng dụng AI
Lựa chọn khung xe phù hợp cho xe tự hành là một bước quan trọng để đảm bảo hiệu suất, độ bền cũng như khả năng chịu tải của xe Các yếu tố có thể xem xét khi lựa chọn khung xe như là chất liệu, kích thước, trọng lượng, độ bền và khả năng chịu lực… Ở đây nhóm đã chọn khung xe RC 1/10 như Hình 20 được làm bằng sợi carbon, kích thước 300x150mm, trọng lượng 780g với các ưu điểm như nhẹ, cứng cáp, khả năng chịu lực tốt, cân bằng và giúp xe di chuyển ổn định hơn
3.2.2 Lựa chọn module Động cơ DC là một bộ phận thiết yếu trong việc tạo ra chuyển động cho các phương tiện như xe điện, robot, và các thiết bị di động khác Trên thị trường hiện nay, có rất nhiều loại động cơ DC với các kích thước và công suất khác nhau, trong đó các loại phổ biến bao gồm DC size 540, DC motor 775, và DC motor 380 Mỗi loại động cơ này có những đặc điểm và ưu điểm riêng, phù hợp với những ứng dụng cụ thể khác nhau Sau khi nghiên cứu và đánh giá, nhóm đã quyết định lựa chọn động cơ
DC 380 cho dự án của mình Động cơ này thuộc loại động cơ chổi than, một loại động cơ thường được sử dụng rộng rãi nhờ vào tính ổn định và hiệu suất tốt trong các ứng dụng cần chuyển động liên tục Điểm mạnh của động cơ DC 380 là kích thước nhỏ gọn, giúp dễ dàng tích hợp vào khung xe mà không làm tăng trọng lượng đáng kể Hơn nữa, nó hoạt động ở mức điện áp phù hợp, giúp tiết kiệm năng lượng và kéo dài tuổi thọ của pin Các thông số kỹ thuật của động cơ DC 380, như đã được thể hiện chi tiết trong Bảng 1, bao gồm các chỉ số về điện áp, dòng điện, công suất, và tốc độ quay Những thông số này không chỉ đảm bảo rằng động cơ có thể đáp ứng được yêu cầu về hiệu suất, mà còn giúp nhóm dễ dàng điều chỉnh và tối ưu hóa hệ thống điều khiển để đạt được hiệu quả vận hành cao nhất Việc lựa chọn động cơ DC 380 không chỉ dựa trên tính năng kỹ thuật mà còn xem xét đến khả năng tương thích và tính thực tiễn trong quá trình triển khai thực tế của dự án
DC 540 DC 775 DC 380 Điện áp 6-12V 12-24V 6-12V
Chiều dài 50mm 98mm 38mm Đường kính thân động cơ 35.5mm 45mm 27m
Bảng 1 Thông số động cơ DC
Trên thị trường hiện nay, có hai loại module điều khiển động cơ phổ biến là Module L298N và BTS7960 Sau khi cân nhắc kỹ lưỡng, nhóm đã quyết định lựa chọn Module L298N để điều khiển động cơ DC 380 Lý do chính là vì Module L298N hoàn toàn phù hợp với thông số kỹ thuật của động cơ DC 380 và phù hợp với kích thước cũng như khả năng chịu tải của khung xe Module L298N được trang bị IC điều khiển động cơ L298 cùng với bộ điều chỉnh điện áp 5V 78M05 Nhờ vào thiết kế này, Module L298N có khả năng điều khiển tối đa 4 động cơ DC hoặc 2 động cơ DC với các tính năng điều khiển hướng và tốc độ Điều này giúp tối ưu hóa hiệu suất vận hành và linh hoạt trong việc điều khiển chuyển động của xe Việc lựa chọn Module L298N cũng được cân nhắc dựa trên các thông số kỹ thuật cụ thể Module này không chỉ đáp ứng được yêu cầu về hiệu suất và tính ổn định mà còn dễ dàng tích hợp vào hệ thống hiện có của nhóm Cả Module L298N và BTS7960 đều có những ưu điểm riêng, nhưng với động cơ DC 380 và cấu trúc của dự án, Module L298N được xem là lựa chọn tối ưu nhất Các thông số chi tiết của Module L298N và BTS7960 được trình bày trong Bảng 2, giúp cung cấp cái nhìn tổng quan và so sánh rõ ràng giữa hai loại module này Quyết định sử dụng Module L298N được đưa ra sau khi xem xét kỹ lưỡng các yếu tố về hiệu năng, kích thước, và khả năng chịu tải, đảm bảo rằng hệ thống hoạt động hiệu quả và ổn định
Công suất tải tối đa
Servo là loại động cơ đặc biệt được thiết kế để điều khiển vị trí và tốc độ một cách chính xác Để đảm bảo rằng xe có thể thay đổi hướng lái một cách chính xác trong quá trình di chuyển, việc lựa chọn động cơ Servo phù hợp với khối lượng của phần cứng là rất quan trọng Trên thị trường hiện nay, có nhiều loại Servo phổ biến như Servo MG996R, SG90, và RC Servo 17g Nhóm đã xem xét kỹ lưỡng các yếu tố như loại xe, mục đích sử dụng, tốc độ, mô-men xoắn, và giá thành để chọn loại Servo thích hợp nhất Các thông số này rất quan trọng vì chúng ảnh hưởng trực tiếp đến hiệu suất và độ tin cậy của hệ thống lái Sau khi cân nhắc các yếu tố trên, nhóm đã quyết định chọn động cơ RC Servo 17g để thiết kế cho xe Động cơ này được đánh giá cao về khả năng điều khiển chính xác, đáp ứng tốt yêu cầu về tốc độ và mô-men xoắn cần thiết cho hệ thống lái của xe Các thông số kỹ thuật của các loại Servo, bao gồm RC Servo 17g, MG996R, và SG90, được trình bày chi tiết trong Bảng 3
MG996R SG90 RC Servo 17g Điện áp 4.8-7.2 4.8-5V 4.8-6V
11kg/cm(6V) 1.6kg/cm(4.8V) 3.5kg/cm(6V)
Kích thước 40.7x19.7x42.9mm 21x12x22mm 30x12x31.7mm
Bảng 3 Thông số động cơ Servo
Camera đóng vai trò như đôi mắt của một chiếc xe tự hành, có khả năng thu nhận hình ảnh từ môi trường xung quanh để bo xử lý Jetson Nano phân tích và ra quyết định Để đảm bảo tương thích và hiệu quả, việc lựa chọn camera được hỗ trợ bởi Jetson Nano là rất quan trọng Trên thị trường hiện nay, có hai loại camera phổ biến và phù hợp với Jetson Nano là Arducam IMX477 HQ, IMX219, và Jetvariety Camera Sau khi xem xét kỹ lưỡng các yếu tố như nhu cầu sử dụng, hiệu suất, và giá thành, nhóm đã quyết định lựa chọn Camera IMX219 Loại camera này không chỉ được Jetson Nano hỗ trợ tốt mà còn đáp ứng đầy đủ các yêu cầu về hiệu suất và độ tin cậy Camera IMX219 được đánh giá cao về chất lượng hình ảnh, khả năng xử lý nhanh chóng, và có giá thành hợp lý, phù hợp với ngân sách của dự án Thông số kỹ thuật của Camera IMX219 được trình bày chi tiết trong Bảng 4, cung cấp cái nhìn tổng quan về khả năng của nó
Góc nhìn 65⁰ 160⁰ Độ phân giải 4056x3040 3280 x 2464
Bảng 4 Thông số của Camera IMX219
Pin LiPo là nguồn cung cấp năng lượng chính cho các module điều khiển động cơ Dựa trên các thông số kỹ thuật của các module được sử dụng, như được trình bày trong Bảng 5, nhóm đã lựa chọn pin LiPo 3S với điện áp 11.1V Pin LiPo 3S được đánh giá là phù hợp nhất với yêu cầu về điện áp và dòng điện của các module Việc lựa chọn pin LiPo 3S không chỉ đảm bảo rằng các module điều khiển động cơ sẽ hoạt động ổn định và hiệu quả mà còn giúp tối ưu hóa hiệu suất tổng thể của hệ thống Thông số kỹ thuật của pin LiPo 3S, như được mô tả trong Bảng 6, cho thấy pin này có khả năng cung cấp đủ năng lượng cho toàn bộ hệ thống, đảm bảo các module hoạt động liên tục và không bị gián đoạn Pin LiPo 3S với điện áp 11.1V không chỉ phù hợp với yêu cầu của các module mà còn có khả năng cung cấp dòng điện ổn định, giúp các động cơ và hệ thống điều khiển hoạt động mượt mà Việc lựa chọn pin LiPo 3S dựa trên sự cân nhắc kỹ lưỡng về hiệu suất, độ tin cậy, và khả năng tương thích với các thành phần khác trong hệ thống, đảm bảo rằng xe tự hành sẽ hoạt động hiệu quả và đạt được hiệu suất tối ưu trong suốt quá trình vận hành
Module Điện áp hoạt động Dòng điện tối đa Động cơ DC 380 6-12V 2-3A khi chịu tải
Servo 17g 4.8-6V 1A hoạt động tải cao
Module L298N 5-12V 2A cho mỗi kênh, tối đa
Bảng 5 Thông số điện áp hoạt động và dòng điện tối đa của các module sử dụng
Thông số Giá trị Hình ảnh Điện áp 11.1~12.6V
Bảng 6 Thông số của pin Lipo
Chi tiết thành phần phần cứng của mô hình được mô tả như Hình 21
Hình 21 Chi tiết mô hình xe hoàn chỉnh
3.2.3 Mô hình bản đồ và biển báo
Bản đồ nghiên cứu mô hình xe tự hành được thiết kế bao gồm một đoạn đường cong, một đoạn ngã ba, và một đoạn đường ngoằn ngoèo, nhằm đánh giá khả năng xử lý của hệ thống xe tự hành Đoạn đường cong, được minh họa ở Hình 22, giúp kiểm tra khả năng nhận diện và theo dõi làn đường khi hướng đi thay đổi Đây là yếu tố quan trọng để đánh giá sự chính xác của hệ thống trong việc duy trì đúng làn đường
Tiếp theo, đoạn ngã ba, được thể hiện ở Hình 23, được sử dụng để đánh giá khả năng nhận diện và xử lý các biển báo giao thông Đây là bài kiểm tra quan trọng để xem hệ thống có thể đưa ra quyết định đúng hướng di chuyển khi gặp ngã ba hay không
Cuối cùng, đoạn đường ngoằn ngoèo, được mô tả ở Hình 24, kiểm tra khả năng điều khiển và duy trì ổn định của xe trong điều kiện đường phức tạp Đoạn đường này yêu cầu hệ thống phải liên tục điều chỉnh và xử lý các tín hiệu từ môi trường để giữ cho xe di chuyển an toàn và hiệu quả
Hình 22 Bản đồ đường cong
Hình 23 Bản đồ đường ngã ba
Hình 24 Bản đồ đường ngoằn ngoèo
Các biển báo giao thông được sử dụng trong mô hình nghiên cứu bao gồm biển báo cấm rẽ trái, biển báo cấm rẽ phải, biển báo rẽ trái, biển báo rẽ phải, biển báo đi thẳng, biển báo dừng lại Tất cả được liệt kê trong Bảng 7
Tên biển báo Hình ảnh
Biển báo No Turn Left
Biển báo No Turn Right
Bảng 7 Các loại biển báo giao thông được sử dụng trong đề tài.
PHƯƠNG PHÁP PHÁT HIỆN VÀ NHẬN DIỆN LÀN ĐƯỜNG
Giới thiệu
Việc phát hiện làn đường cũng đóng vai trò rất quan trọng trong hệ thống xe tự lái Đây là một trong những chức năng cốt lõi giúp xe tự lái có thể nhận biết và di chuyển đúng làn đường, đảm bảo an toàn cho hành khách và phương tiện xung quanh Việc xác định chính xác vị trí và hướng của làn đường cho phép hệ thống điều khiển của xe thực hiện các thao tác lái xe như giữ làn, chuyển làn, và dừng xe một cách chính xác và an toàn
Xe tự lái cần dựa vào thông tin về làn đường để đưa ra các quyết định lái chính xác Chẳng hạn, trong điều kiện đường trơn trượt hoặc tầm nhìn kém do thời tiết xấu, việc phát hiện làn đường đúng đắn giúp xe duy trì được vị trí trên đường, tránh khỏi việc đi lệch làn gây nguy hiểm Ngoài ra, khi di chuyển qua các giao lộ phức tạp, hệ thống phát hiện làn đường hỗ trợ việc định vị và chuyển hướng một cách hiệu quả, giảm thiểu nguy cơ va chạm [6]
Các phương pháp nhận diện làn đường
Phương pháp phát hiện và nhận diện làn đường mà nhóm đã nghiên cứu:
• Nhận diện và đánh dấu làn đường: Thông qua việc xử lý ảnh, nhận diện các vạch kẻ đường để xác định hướng của làn đường, sau đó tính toán và trả về hướng mà xe sẽ đi đúng với quỹ đạo của làn đường
• Xác định vị trí của xe so với làn đường: Thông qua việc xử lý ảnh, tìm ra độ lệch của xe với làn đường bằng các so sánh vị trí tâm đường với điểm chính giữa khung hình Từ đó tính toán và dự đoán quỹ đạo tiếp theo
• Xác định vị trí của xe so với vạch kẻ đường: Thông qua việc xử lí ảnh, sử dụng thuật toán phát hiện vạch kẻ đường để tìm góc điều khiển, tốc độ của xe
4.2.1 Nhận diện và đánh dấu làn đường
Quy trình nhận diện và đánh dấu làn đường trong mô hình xe tự hành bao gồm các bước sau: đầu tiên, hình ảnh từ camera gắn trên xe được thu thập và tiền xử lý để loại bỏ nhiễu Tiếp theo, các kỹ thuật xử lý ảnh như chuyển đổi không gian màu, lọc cạnh, và phân đoạn được áp dụng để làm nổi bật các đường viền làn đường Cuối cùng, hệ thống sử dụng các thuật toán như Hough Transform để xác định vị trí và đánh dấu làn đường, giúp xe tự hành duy trì vị trí an toàn trong làn và đưa ra các quyết định điều khiển phù hợp Sơ đồ thực hiện phương pháp như được thể hiện trong Hình 25
Hình 25 Sơ đồ thực hiện phương pháp nhận diện và đánh dấu làn đường a Thu thập và tiền xử lý hình ảnh
Hình ảnh được thu thập từ camera gắn trên xe cung cấp một góc nhìn phía trước đủ rộng và bao quát, đảm bảo rằng toàn bộ khu vực trước xe đều được ghi nhận Sau khi thu thập, hình ảnh này sẽ được chuyển đổi từ không gian màu RGB sang không gian màu HSV để xử lý, như minh họa trong Hình 26 Việc chuyển đổi sang không gian màu HSV giúp tối ưu hóa quá trình nhận diện và phân tích hình ảnh, bởi HSV phân tách rõ ràng hơn các thông tin về màu sắc và độ sáng, giúp hệ thống xử lý hiệu quả hơn trong việc nhận diện làn đường, biển báo và các đối tượng khác trên đường
Hình 26 Chuyển đổi không gian màu từ RGB sang HSV
Original HSV b Lọc và phát hiện cạnh
Sử dụng thuật toán Canny để phát hiện các cạnh trong hình ảnh, giúp xác định được các đường biên rõ ràng Ngoài ra, lựa chọn ROI (Regions of Interest) giúp tập trung vào vùng cụ thể của ảnh chứa thông tin cần thiết nhất, tăng độ chính xác và hiệu quả của hệ thống phát hiện cạnh, góp phần cải thiện khả năng điều hướng cho xe như Hình 27
Hình 27 Xác định vùng quan tâm và cạnh bằng thuật toán Canny c Biến đổi và phân đoạn Ở bước này, áp dụng biến đổi Hough để tìm các đường thẳng trong hình ảnh đã qua ở bước trước Các đường thẳng này đại diện có các cạnh của làn đường Có thế xuất hiện nhiễu khi môi trường có những vùng có đặc tính tương tự với cạnh của làn đường như Hình 28 Vì vậy, cần có thêm một công đoạn xử lý để có thể lọc ra các đường thẳng không cần thiết, chỉ giữ lại các đường thẳng có khả năng là vạch kẻ đường dựa trên góc và vị trí
Hình 28 Lọc các đường thẳng có trong hình ảnh
Sau khi có được các thông tin về góc và vị trí của vạch kẻ đường, dựa vào đó
Canny ROI Mask Cropped để có thể tính toán góc lái nhằm nhận diện các đoạn vạch đường và tính toán góc lái cho xe tự hành dựa trên hình ảnh thu thập từ camera Quy trình này bao gồm hai bước chính: kết hợp các đoạn đường thành các vạch đường và tính toán góc lái dựa trên các vạch đường này
• Phân tích và kết hợp đoạn đường
Mục tiêu của là xác định các đoạn vạch đường từ hình ảnh và kết hợp chúng thành một hoặc hai vạch đường chính Các đoạn vạch đường sẽ được phân loại thành hai nhóm: nhóm bên trái và nhóm bên phải dựa trên độ dốc (slope) và vị trí của chúng trong khung hình Khung hình được chia thành hai vùng chính: vùng trái (2/3 bên trái của màn hình) và vùng phải (1/3 bên phải của màn hình) như Hình 29 Điều này giúp xác định rõ ràng các đoạn vạch đường bên trái và bên phải Đối với mỗi đoạn đường được phát hiện, tính toán độ dốc (slope) và hệ số chặn (intercept) của đoạn đường dựa trên tọa độ của các điểm đầu và cuối Đoạn đường có độ dốc âm và nằm trong vùng trái được phân loại vào nhóm bên trái Đoạn đường có độ dốc dương và nằm trong vùng phải được phân loại vào nhóm bên phải
Trong phân tích vạch đường, việc xác định độ dốc của các đoạn đường rất quan trọng để phân loại chúng vào các nhóm vạch đường trái hoặc phải Độ dốc (slope) của một đường thẳng là thước đo cho biết độ nghiêng của đường đó so với trục hoành (trục x) Nếu đoạn đường nối hai điểm (x1, y1) và (x2, y2) mà x1 < x2 và y1
> y2 thì độ dốc của vạch đường này sẽ là âm Nếu đoạn đường nối hai điểm (x1, y1) và (x2, y2) mà x1 < x2 và y1 < y2 thì độ dốc của vạch đường này sẽ là dương Công thức tính độ dốc của một đoạn đường thẳng kết nối hai điểm (x1, y1) và (x2, y2) được biểu diễn theo công thức sau: m = 𝑦 2 − 𝑦 1
- M là độ dốc của đường
- (x1, y1) và (x2, y2) là tọa độ của hai điểm trên đoạn đường
Tính toán trung bình của các giá trị độ dốc và hệ số chặn cho từng nhóm Điều này giúp xác định vạch đường trung bình đại diện cho mỗi nhóm Dùng các giá trị trung bình này để tạo ra các điểm đầu và cuối của vạch đường, từ đó tạo ra vạch đường chính Kết quả biểu diễn như Hình 30
Hình 29 Phân tích và chia khung hình thành hai vùng
Hình 30 Kết quả phân tích các đoạn đường và vẽ vạch đường chính.
Mục tiêu của bước này là xác định góc lái của xe dựa trên các vạch đường đã được xác định Nếu không có vạch đường nào được phát hiện, hệ thống sẽ không thể xác định được hướng lái và sẽ sử dụng một giá trị góc lái mặc định Nếu chỉ có một vạch đường được phát hiện, góc lái sẽ được tính toán dựa trên vạch đường này Nếu có hai vạch đường, tính toán x_offset dựa trên vị trí trung bình của các điểm cuối của hai vạch đường Điều này giúp xác định trung tâm của xe so với các vạch đường Vị trí trung tâm của khung hình được điều chỉnh bằng một hệ số nhỏ để phản ánh sự lệch của camera nếu cần thiết
Góc lái được tính toán dựa trên góc giữa hướng di chuyển hiện tại của xe và đường thẳng đứng trung tâm Góc này có thể được tính bằng công thức (4.2) Θ = arctan ( 𝑥 𝑦 𝑜𝑓𝑓𝑠𝑒𝑡
- xoffset là khoảng cách giữa vị trí trung tâm của xe và vị trí trung bình của các đường làn theo trục x
- yoffset là một nửa chiều cao của khung hình
Góc này sau đó được chuyển đổi từ radian sang độ và điều chỉnh để xác định góc lái cần thiết cho bánh xe phía trước của xe tự hành bằng công thức (4.3)
𝜋 ) + 90 (4.3) d Đánh dấu và hiển thị
Mô hình nhận diện làn đường
Để xây dựng mô hình CNN (Convolutional Neural Network) nhận diện làn đường cho xe tự hành, quy trình gồm các bước sau: Đầu tiên, thu thập và tiền xử lý dữ liệu hình ảnh từ camera gắn trên xe, bao gồm cắt, thay đổi kích thước và chuẩn hóa hình ảnh Tiếp theo, thiết kế kiến trúc CNN phù hợp với các lớp chập (convolutional layers), lớp gộp (pooling layers), và lớp kết nối đầy đủ (fully connected layers) để trích xuất các đặc trưng quan trọng từ hình ảnh Sau đó, huấn luyện mô hình bằng cách sử dụng tập dữ liệu đã tiền xử lý, áp dụng các thuật toán tối ưu như Adam hoặc SGD để điều chỉnh trọng số của mô hình nhằm giảm thiểu hàm mất mát Khi mô hình đã được huấn luyện, tiến hành đánh giá hiệu quả của nó trên tập dữ liệu kiểm thử và điều chỉnh lại mô hình nếu cần Cuối cùng, triển khai mô hình trên hệ thống xe tự hành, nơi hình ảnh mới từ camera sẽ được mô hình phân tích để nhận diện làn đường và đưa ra các quyết định lái phù hợp Các bước tổng quan cho quá trình được mô tả như Hình 40
Hình 40 Sơ đồ mô hình nhận diện làn đường a Tải tập dữ liệu
Dữ liệu được trích xuất và phân tích từ video được ghi lại trong quá trình vận hành xe trên đoạn đường được xây dựng trước Sau đó, video được tách ra từng khung hình để nhận diện và gán thông tin cho mỗi khung hình Thông tin được gán sẽ có cùng format cho tất cả dữ liệu được mô tả như sau: image_[index]_[steering_angle].jpg Với index là số thứ tự hình ảnh, steering_angle là góc lái sau khi được phân tích từ chính khung hình đó như Hình 41
Với thông tin được đặt cho mỗi khung hình như trên, ta sẽ trích xuất steering_angle để gán thành label cho khung hình đó Như vậy ta sẽ có thông tin về hình ảnh và góc lái cho mỗi khung hình cho bước đầu giai đoạn huấn luyện là chuẩn bị tập dữ liệu với số lượng dữ liệu train là 812, validation là 203 và test là 100
Hình 41 Tập dữ liệu huấn luyện sau khi được phân tích nhận diện làn đường. b Tiền xử lý
Quy trình tiền xử lý ảnh cho mô hình nhận diện làn đường bao gồm các bước sau: Đầu tiên, cắt ảnh để loại bỏ nửa trên không liên quan Tiếp theo, chuyển đổi ảnh từ không gian màu RGB sang YUV giúp tăng cường khả năng nhận diện vạch kẻ đường và biên giới đường đi bằng cách tập trung vào thành phần độ sáng, giảm ảnh hưởng của sự thay đổi ánh sáng, và tăng hiệu quả tính toán [9] Điều này giúp mô hình trở nên ổn định hơn và hiệu quả hơn trong việc xử lý hình ảnh trong các điều kiện lái xe khác nhau Sau đó, làm mịn ảnh bằng Gaussian Blur để giảm nhiễu Tiếp đó, thay đổi kích thước ảnh về kích thước chuẩn để giảm số lượng tham số và tăng tốc độ xử lý Cuối cùng, chuẩn hóa giá trị pixel về khoảng [0, 1] để giúp mô hình hội tụ nhanh hơn và cải thiện độ chính xác trong quá trình huấn luyện Sau quá trình tiền xử lý, dữ liệu trước khi huấn luyện sẽ như Hình 42
Hình 42 Dữ liệu huấn luyện sau bước tiền xử lý. c Khởi tạo mô hình CNNs
Quy trình xây dựng mô hình CNN nhận diện làn đường bao gồm các bước sau: Khởi tạo mô hình Sequential, thêm các lớp tích chập với các bộ lọc và hàm kích hoạt ELU để trích xuất đặc trưng từ ảnh, và các lớp Dropout để giảm overfitting Sau đó, thêm các lớp kết nối đầy đủ (Dense) để học các mối quan hệ phức tạp và một lớp đầu ra để dự đoán góc lái Cuối cùng, biên dịch mô hình với hàm mất mát MSE và bộ tối ưu hóa Adam để tối ưu hóa quá trình học tập Sau khi xây dựng mô hình ta có bảng tóm tắt như Hình 43
Hình 43 Tóm tắt tổng quát các thông tin sau khi xây dựng mô hình. d Huấn luyện
Quy trình huấn luyện mô hình CNN nhận diện làn đường bao gồm các bước sau: huấn luyện và lưu lại trọng số mô hình sau mỗi epoch nếu hàm mất mát trên tập kiểm thử giảm Huấn luyện mô hình với dữ liệu huấn luyện và kiểm thử, chia thành các batch và chạy qua nhiều epoch Sau khi hoàn tất huấn luyện, lưu lại mô hình cuối cùng và lưu lịch sử huấn luyện vào một file pickle để phân tích sau này.
Mô hình huấn luyện nhận diện biển báo giao thông
Quy trình xây dựng mô hình nhận diện biển báo giao thông bao gồm các bước sau: Thu thập và tiền xử lý dữ liệu ảnh biển báo, chuyển đổi chúng về kích thước và định dạng phù hợp Sử dụng mạng nơ-ron tích chập (CNN) với các lớp tích chập để trích xuất đặc trưng và các lớp kết nối đầy đủ (Dense) để phân loại Huấn luyện mô hình trên tập dữ liệu đã chuẩn bị, điều chỉnh các tham số và sử dụng các kỹ thuật giảm overfitting như Dropout Cuối cùng, đánh giá và tinh chỉnh mô hình dựa trên kết quả kiểm thử để đảm bảo độ chính xác cao trong việc nhận diện biển báo giao thông Các bước tổng quan cho quá trình được mô tả như Hình 44
Hình 44 Sơ đồ mô hình nhận diện biển báo. a Tải tập dữ liệu
Nhóm tìm kiếm và tải tập dữ liệu có trên mạng để sử dụng cho việc huấn luyện, bao gồm đầy đủ các biển báo được sử dụng trong dự án này Sẽ có 7 loại dữ liệu, với
6 loại là 6 biển báo được sử dụng và 1 loại dùng cho các trường hợp không nhận diện được với số lượng dữ liệu train, validation và test được trình bày trong Bảng
Biển báo Dừng Đi thẳng Rẽ phải Rẽ trái Cấm rẽ phải Cấm rẽ trái
Bảng 8 Tập dữ liệu huấn luyện nhận diện biển báo. b Tiền xử lý
Quá trình tiền xử lý trước khi nhận diện biển báo giao thông bao gồm các bước sau: Đầu tiên, thu thập hình ảnh biển báo từ các nguồn dữ liệu khác nhau Sau đó, cắt và điều chỉnh kích thước ảnh về kích thước chuẩn để đảm bảo tính nhất quán Chuyển đổi ảnh sang không gian màu phù hợp, để mô hình dễ dàng trích xuất đặc trưng c Khởi tạo mô hình CNNs
Quy trình xây dựng mô hình nhận diện biển báo giao thông bao gồm: Khởi tạo mô hình Sequential và thêm các lớp tích chập với bộ lọc và hàm kích hoạt ReLU để trích xuất đặc trưng, tiếp theo là các lớp gộp để giảm kích thước Sau đó, lớp Flatten chuyển đổi đặc trưng thành vector một chiều, và các lớp kết nối đầy đủ với Dropout để giảm overfitting Cuối cùng, lớp đầu ra sử dụng hàm Softmax để phân loại các biển báo giao thông Mô hình được biên dịch với hàm mất mát
"categorical_crossentropy" và bộ tối ưu hóa Adam để tối ưu hóa quá trình huấn luyện
Sơ đồ mô hình như được thể hiện trong Hình 45
Hình 45 Sơ đồ mô hình kiến trúc CNNs d Huấn luyện
Quy trình huấn luyện mô hình phân loại được thực hiện bằng cách xây dựng mô hình và sử dụng một callback để lưu trọng số tốt nhất dựa trên độ chính xác trên tập validation Dữ liệu huấn luyện và validation được cung cấp dưới dạng generator để giảm bộ nhớ sử dụng Sau khi hoàn thành quá trình huấn luyện, trọng số tốt nhất của mô hình được sử dụng để dự đoán kết quả.
KẾT QUẢ VÀ ĐÁNH GIÁ
Kết quả thực hiện
Phần cứng được lắp ráp và thiết kế chắc chắn, các linh kiện và bo mạch cố định trên fomex như Hình 46 Khi xe di chuyển không bị rung lắc, hệ thống đánh lái phản hồi nhanh
Hình 46 Mô hình xe hoàn chỉnh
5.1.2 Nhận diện làn đường a So sánh độ hiệu quả giữa các phương pháp nhận diện
Sau khi tìm hiểu và thực hiện nhiều lần thử nghiệm trên các phương pháp, nhóm đưa ra đánh giá cá nhân và lập bảng so sánh giữa các phương pháp nhận diện và đánh dấu làn đường như Bảng 9
Nhận diện và đánh dấu làn đường
Xác định vị trí của xe so với làn đường
Xác định vị trí của xe so với vạch kẻ đường Độ chính xác 7/10 8/10 7/10
Thích ứng với điều kiện ánh sáng khác nhau
Khá Kém Kém Độ phức tạp của thuật toán
Khá Trung bình Trung bình
Bảng 9 Bảng so sánh giữa các phương pháp nhận diện và đánh dấu làn đường
Cả ba phương pháp đều có ưu và nhược điểm khá giống nhau Khi hoạt động trong môi trường phù hợp thì cả ba phương pháp đều có độ hiệu quả cao, điều này cũng là nhược điểm khi mà môi trường hoạt động thay đổi thì hệ thống sẽ có sự sai lệch Nhược điểm lớn nhất của ba phương pháp này là khi vị trí của xe lệch nhiều sang hai bên làn đường thì khả năng nhận diện sẽ kém và sai lệch rất nhiều Nhóm đã thử nhiều giải pháp khắc phục khác nhau tuy nhiên độ hiệu quả vẫn chưa cao Do vậy, dựa vào kết quả thực hiện giữa các phương pháp trên, nhóm đã xây dựng môi trường lý tưởng để thực hiện việc nhận diện và đánh dấu làn đường cho những trường hợp có độ chính xác cao nhất, cùng với đó sẽ tự tay thu thập dữ liệu ở những trường hợp cần nhiều yếu tố quyết định độ chính xác hơn Qua đó, tạo được tập dữ liệu hình ảnh tốt nhất cho việc huấn luyện mô hình AI mà nhóm xây dựng b Kết quả huấn luyện
Với dữ liệu đầu vào là hình ảnh thu thập được từ việc nghiên cứu và xây dựng các phương pháp nhận diện làn đường Mô hình sau khi huấn luyện có độ chính xác xấp xỉ 98.48% Với đường màu xanh biểu diễn mất mát huấn luyện, đường màu đỏ biểu diễn cho lỗi kiểm thử như Hình 47 Biểu đồ mất mát huấn luyện và kiểm thử cho thấy mô hình đã hội tụ, với cả hai đường mất mát giảm dần và trở nên ổn định sau một số epoch Mô hình không bị overfitting vì mất mát kiểm thử gần tương đương với mất mát huấn luyện Kết quả này chỉ ra mô hình có khả năng tổng quát hóa tốt và hoạt động hiệu quả trên dữ liệu chưa từng thấy, phản ánh quá trình huấn luyện thành công và ổn định
Hình 47 Kết quả huấn luyện nhận diện làn đường
Với dữ liệu đầu vào hơn 10000 ảnh huấn luyện cho mỗi biển báo Độ chính xác của mô hình huấn luyện xấp xỉ 98.5% Hình 48 biểu diễn kết quả sau khi huấn luyện của mô hình Biểu đồ cho thấy mô hình đã hội tụ với mất mát huấn luyện và kiểm thử giảm dần, đồng thời độ chính xác huấn luyện và kiểm thử tăng lên và ổn định Mặc dù có dấu hiệu overfitting nhẹ khi mất mát kiểm thử giảm chậm lại và có dao động nhỏ, khoảng cách giữa độ chính xác huấn luyện và kiểm thử không quá lớn, cho thấy mô hình vẫn tổng quát hóa tốt
Hình 48 Kết quả huấn luyện nhận diện biển báo giao thông
5.1.4 Kết quả chạy thực nghiệm
• Xe hoạt động trong điều kiện cụ thể sau:
+ Ánh sáng môi trường tốt
+ Độ rộng làn đường 25-30cm
+ Biển báo giao thông cao 15cm, đường kính biển 5cm
+ Mô hình dự đoán được tối ưu nhất
Với điều kiện trên, xe di chuyển theo từng yêu cầu đạt được các kết quả sau:
• Trường hợp 1: Xe di chuyển trên map đường cong như Hình 49
Qua 5 lần thực nghiệm trên bản đồ đường cong với vị trí ban đầu nằm giữa làn đường thì xe có xu hướng đi thẳng với góc lệch là ± 5 độ so với làn đường và sẽ đánh lái khi góc lệch lớn hơn ± 5 độ Với góc đánh lái thấp hơn ± 30 độ, xe di chuyển ổn định, bám làn cho đến hết đoạn đường Tỉ lệ 5/5 lần thực nghiệm
Qua 5 lần thực hiện trên bản đồ đường cong với vị trí ban đầu lệch ± 30 độ so với làn đường, xe có chút không ổn định và có xu hướng đánh lái trái phải trong khoảng 1/3 đoạn đường, sau đó tiếp tục bám làn đi hết đoạn đường còn lại Tỉ lệ 5/5 lần thực nghiệm
Hình 49 Xe di chuyển bám làn đường cong
• Trường hợp 2: Xe di chuyển trên map đường ngoằn ngoèo như Hình 50 Qua 5 lần thực nghiệm trên bản đồ đường ngoằn ngoèo với vị trí ban đầu nằm giữa làn đường thì xe đánh lái và di chuyển bám làn đường, hoạt động ổn định Tỉ lệ 5/5 lần thực nghiệm
Qua 5 lần thực hiện trên bản đồ đường ngoằn ngoèo với vị trí ban đầu lệch 30 độ về phía bên trái so với làn đường như Hình 50, xe tiếp tục đánh lái và tiếp tục di chuyển bám làn đường Tỉ lệ 5/5 lần thực nghiệm
Qua 5 lần thực hiện trên bản đồ đường ngoằn ngoèo với vị trí ban đầu lệch 30 độ về phía bên phải so với làn đường như Hình 50, xe thường mất kiểm soát và không còn bám làn sau gặp khúc cua đầu tiên Tỉ lệ 2/5 lần thực nghiệm
Hình 50 Xe di chuyển bám làn đường ngoằn ngoèo
• Trường hợp 3: Xe di chuyển trên map ngã ba không có biển báo như Hình 51 Qua 5 lần thực nghiệm trên bản đồ ngã ba, góc nghiêng khởi đầu lệch về phía bên trái so với bản đồ ngã ba Khi xe đi vào ngã ba mà chỉ nhìn thấy một vạch hoặc không thấy vạch kẻ đường thì xe có xu hướng sang phải sau đó tiếp tục bám làn khi nhìn thấy vạch kẻ đường Tỉ lệ 4/5 lần thực nghiệm
Qua 5 lần tiếp theo thực nghiệm trên bản đồ ngã ba với vị trí nằm thẳng, giữa làn đường so với bản đồ ngã ba Khi xe đi vào ngã ba mà chỉ nhìn thấy một vạch hoặc không thấy vạch kẻ đường thì xe có xu hướng tiếp tục bám làn và đi thẳng Tỉ lệ 5/5 lần thực nghiệm
Hình 51 Xe di chuyển bám làn đường trên map ngã ba
• Trường hợp 4: Xe di chuyển trên map ngã ba có biển báo
Khi xe nhận diện được biển báo cấm rẽ phải, xe sẽ đi qua ngã ba mà không rẽ phải như Hình 52 Qua 5 lần thực nghiệm trên bản đồ ngã ba và biển báo cấm rẽ phải, hệ thống nhận diện được biển báo với khoảng cách từ 20cm đến 35cm Xe sẽ thực hiện theo biển báo khi khoảng cách từ xe đến biển báo dưới 25cm Tỉ lệ 5/5 lần thực nghiệm
Tương tự với biển báo cấm rẽ trái, khi xe nhận diện được biển báo cấm rẽ trái, xe sẽ đi qua ngã ba mà không rẽ trái như Hình 53 Qua 5 lần thực nghiệm trên bản đồ ngã ba và biển báo cấm rẽ trái, hệ thống nhận diện được biển báo với khoảng cách từ 20cm đến 35cm Xe sẽ thực hiện theo biển báo khi khoảng cách từ xe đến biển báo dưới 25cm Tỉ lệ 5/5 lần thực nghiệm
Hình 52 Xe khi nhận diện được biển No Turn Right
Hình 53 Xe khi nhận diện được biển No Turn Left
Khi nhận diện được biển Stop, xe sẽ dừng lại hẳn như Hình 54
Qua 5 lần thực nghiệm trên bản đồ ngã ba và biển báo cấm rẽ trái, hệ thống nhận diện được biển báo với khoảng cách từ 20cm đến 35cm Xe sẽ thực hiện theo biển báo khi khoảng cách từ xe đến biển báo dưới 25cm Tỉ lệ 5/5 lần thực nghiệm
Hình 54 Xe khi nhận diện được biển STOP
Khi xe nhận diện được biển đi thẳng, xe sẽ tiếp tục đi thẳng như Hình 55 Qua
Đánh giá
• Khi xe hoạt động trên bản đồ đường cong, đường ngoằn ngoèo và ngã ba không có biển báo giao thông thì xe hoạt động ổn định, phần trăm di chuyển ổn định trên đoạn đường giao động từ 82% đến 95%, độ chính xác dự đoán và xử lý trong thời gian thực giao động từ 75% đến 92%
• Khi xe hoạt động trên bản đồ ngã ba có biển báo giao thông, các biển báo như đi thẳng, rẽ trái, rẽ phải, cấm rẽ trái, cấm rẽ phải có khoảng cách nhận diện khoảng 30cm từ biển báo tới camera, riêng biển báo dừng cần có khoảng cách và độ sáng phù hợp thì khả năng nhận diện được biển báo này sẽ cao và khoảng cách nhận diện khoảng 21cm đến 26cm từ biển báo đến camera
• Xe không thể rẽ các khúc cua gấp, do hệ thống bánh lái không đáp ứng được
• Mô hình xe hoạt động trong điều kiện thí nghiệm vẫn còn nhiều hạn chế, chưa hoạt động được trong môi trường thực tế.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Kết luận
Sau khoảng thời gian nghiên cứu, tìm hiểu và thực hiện mô hình xe tự hành ứng dụng AI, nhóm đã thực hiện được các mục tiêu đã đặt ra ban đầu của hệ thống như nhận diện hình ảnh, điều khiển và phần cứng đã được tích hợp để tạo ra một hệ thống tự hành hoàn chỉnh Qua quá trình nghiên cứu và thử nghiệm, mô hình xe tự hành có khả năng vận hành trong môi trường nhất định Khả năng nhận diện làn đường và dự đoán góc lái với độ chính xác hơn 80% Tuy nhiên hệ thống phần cứng như bánh lái không phù hợp cho những góc cua gấp nên khi xe ở vị trí góc nghiêng lớn so với làn đường thì xe cần đủ thời gian và khoảng cách để có thể quay lại làn đường Điều này dẫn đến các tình huống không còn thấy làn đường nữa khiến hệ thống hoạt động sai lệch so với thực tế Đối với phần mềm, hệ thống chưa tối ưu hóa được khả năng của phần cứng do vậy hệ thống có thể xử lý chậm đối với các phương pháp hoặc thuật toán phức tạp dẫn đến độ hiểu quả không cao Ngoài ra, khi xe vận hành theo biển báo giao thông, khả năng nhận diện các biển báo còn hạn chế, đôi khi xuất hiện nhiễu (phát hiện nhầm) làm cho hệ thống vận hành sai so với thực tế Vì thế, tỉ lệ nhận diện và hoạt động chính xác theo đánh giá của nhóm thực hiện chỉ đạt khoảng hơn 70%.
Hướng phát triển
Mặc dù đã đạt được những kết quả như mong muốn, nhưng vẫn còn nhiều hướng phát triển để có thể nâng cao hiệu quả và mở rộng ứng dụng của xe tự hành Các hướng phát triển bao gồm:
• Nâng cấp khung đặt các linh kiện để chắc chắn hơn
• Cải thiện hiệu suất và mở rộng phạm vi nhận diện và xử lý hình ảnh
• Cải tiến xe có thể nhận diện được vật cản
• Cải tiến các phương pháp nhận diện làn đường cho mục đích thu thập dữ liệu tốt và chính xác cho việc huấn luyện
• Thử nghiệm và triển khai xe tự hành trong môi trường thực tế và khắc nghiệt hơn.