Hệ thống áp dụng mạng MobileNet_SSD để nhận diện thông tin vật thể kết hợp với Lidar để đo khoảng cách sau đó đưa ra cảnh báo cho người lái.. Hệ thống cảnh báo va chạm sử dụng các công n
TỔNG QUAN
Đặt vấn đề
Với tình hình vấn đề giao thông đang ngày càng trở nên nhức nhối, đặc biệt tại các thành phố lớn, với lượng ô tô ngày càng nhiều Kéo theo các vụ tai nạn giao thông liên tục gia tăng, gây thiệt hại về người và tài sản Để giải quyết vấn đề này, nhiều giải pháp đã được đề ra như hệ thống chống bó cứng phanh, hệ thống kiểm soát lực kéo, hệ thống ổn định thân xe, trong đó hệ thống cảnh báo va chạm đóng vai trò quan trọng trong việc hỗ trợ lái xe an toàn
Hệ thống cảnh báo va chạm sử dụng các công nghệ tiên tiến như radar, lidar, camera để phát hiện các phương tiện hoặc chướng ngại vật xung quanh xe Khi có nguy cơ va chạm, hệ thống sẽ cảnh báo người lái bằng âm thanh, hình ảnh hoặc rung động, giúp họ có thời gian phản ứng để tránh tai nạn
Có hai loại hệ thống cảnh báo va chạm chính:
+ Hệ thống cảnh báo va chạm phía trước (FCWS): Phát hiện nguy cơ va chạm với các phương tiện phía trước
+ Hệ thống phanh khẩn cấp tự động (AEB): Tự động phanh xe khi có nguy cơ va chạm cao, giúp giảm thiểu nguy cơ tai nạn
Hệ thống cảnh báo va chạm mang lại nhiều lợi ích cho người lái xe, bao gồm:
+ Giảm thiểu nguy cơ va chạm: Hệ thống cảnh báo va chạm giúp người lái xe nhận thức được nguy hiểm và có hành động kịp thời để tránh tai nạn
+ Tăng cường sự an toàn cho người lái xe và hành khách: Hệ thống cảnh báo va chạm giúp giảm thiểu nguy cơ thương vong trong các vụ tai nạn giao thông
+ Giảm thiểu căng thẳng cho người lái xe: Hệ thống cảnh báo va chạm giúp người lái xe tự tin hơn khi lái xe trên đường đông đúc
Việc sử dụng hệ thống cảnh báo va chạm ngày càng phổ biến trên thế giới Nhiều quốc gia đã khuyến khích hoặc bắt buộc các nhà sản xuất ô tô trang bị hệ thống này cho các xe mới Nó cũng là một trong các tiêu chí để đánh giá độ an toàn do các cơ quan, tổ chức an toàn giao thông đường bộ và chính phủ tài trợ gọi tắt là “EURO NCAP, Latin NCAP, C-NCAP, ANCAP,…” như:
+ Kiểm tra công nghệ phanh tự động khẩn cấp (AEB)
+ Tính năng phát hiện người đi đường dễ bị tổn thương
+ Khả năng bảo về người đi bộ,…
Tuy mỗi hãng xe có thể có tên gọi, cấu tạo và dãy tốc độ hoạt động chênh lệch không nhiều với nhau, nhưng chúng vẫn chung qui lại về nguyên lí và hoạt động và chức năng của chúng [1].
Đối tượng nghiên cứu
- Nghiên cứu, tìm hiểu cơ sở lý thuyết, cấu tạo của hệ thống tiền va chạm
- Nghiên cứu công nghệ xử lý ảnh
- Nghiên cứu máy tính nhúng Jetson Nano, Camera Raspberry Pi v2, Rplidar A1M8, nguồn.
Tình hình nghiên cứu trong và ngoài nước
1.3.1 Tình hình nghiên cứu trong nước
1.3.1.1 Nghiên cứu các loại cảm biến hỗ trợ lái xe nâng cao (ADAS)
Tất cả hệ thống ADAS hoạt động dựa trên việc ghi nhận - xử lý - thực thi Hệ thống trang bị cảm biến để lấy thông tin về môi trường xung quanh, bộ xử lý tổng hợp thông tin để phân tích và phát tín hiệu tới người lái thông qua việc rung, cảnh báo, phanh, Cảm biến sử dụng cho hệ thống ADAS liên quan đến nhận biết và định vị vật thể xung quanh xe: camera, cảm biến siêu âm (Sonar); cảm biến Radar, cảm biến Lidar [2]
Hình 1.1: Một số ứng dụng của hệ thống ADAS
1.3.1.2 Phát hiện điểm mù với độ tin cậy cao và thời gian thực cho hệ thống hỗ trợ lái xe thông minh
Hệ thống hỗ trợ lái xe thông minh là một nhân tố quan trọng trong hệ thống an toàn chủ động Các ứng dụng này nó yêu cầu hiệu suất phát hiện vật thể đạt mức độ chính xác cao và thời gian thực là những yếu tố cấp thiết Nghiên cứu đề xuất bộ phân tầng Cascade – AdaBoost cùng với tập dữ liệu mẫu và thuật toán đào tạo Cải tiến thêm tốc độ phát hiện vật cản và kỹ thuật lựa chọn vùng quan tâm được xử dụng để tránh trích xuất các vùng có khả năng đưa ra cảnh báo lỗi [3]
Hình 1.2: Xây dựng sơ đồ khối đề xuất của hệ thống
1.3.1.3 Nhận diện vật thể trong vùng nguy hiểm phía trước xe và cảnh báo lệch làn đường
Hệ thống nhận diện đối và kiểm soát quỹ đạo đường đi của xe Khi xe có dấu hiệu lệch làn đường hoặc có đối tượng xuất hiện trong vùng không an toàn của xe, hệ thống sẽ nhận diện và đưa tín hiệu tới cho người lái [4]
Hình 1.3: Quy trình xác định làn đường và đối tượng
Mobileye 630 giúp hạn chế rủi ro và tai nạn cho người sử dụng, khi xe đang ở điểm mù, không quan sát được vật cản và cảnh báo cho người lái Ngoài việc cảnh báo va chạm hệ thống còn đọc được biển báo giao thông, cảnh báo tốc độ và cảnh báo chuyển làn
Mobileye 630 dựa vào khoảng cách giữa hai xe và tốc độ thực tế của xe từ tín hiệu CAN để tính toán thời gian xử lý tính huống để đảm bảo mức độ an toàn cho người lái xe, nó có thể có đọ chính xác cao tới 0,1 giây (không sử dụng GPS vì sẽ có độ trễ)
Hệ thống gồm: một camera trong xe ở phía sau gương để quan sát khi lái xe, hệ thống âm thanh cảnh báo và màn hình sẽ giúp quan sát dễ dàng những cảnh báo bằng hình ảnh thông qua màn hình khi lái xe và bộ phận báo rung được cài vào vô lăng [5]
1.3.2 Tình hình nghiên cứu ngoài nước
1.3.2.1 Kết hợp Camera và Lidar 2D cho việc phát hiện đối tượng và khoảng cách đối tượng Phép đo của ADAS sử dụng hệ điều hành Robot ROS
Trong những năm gần đây, hệ thống hỗ trợ lái xe tiên tiến (ADAS) đã trở thành một công cụ quan trọng nhằm bảo vệ con người khỏi va chạm xe cộ Hệ thống cảnh báo va chạm, một phần thiết yếu của ADAS, sử dụng nhiều loại cảm biến như máy ảnh, radar, và LiDAR để nhận biết môi trường Máy ảnh thường được dùng để nhận dạng vật thể, trong khi radar và LiDAR đo khoảng cách LiDAR và radar có ưu điểm trong việc đo khoảng
5 cách xa trong nhiều điều kiện khác nhau, nhưng chúng thường được kết hợp với camera để phân tích môi trường một cách toàn diện hơn
Việc kết hợp camera và LiDAR 2D là một giải pháp chi phí thấp cho hệ thống ADAS, dù có hạn chế như LiDAR 2D chỉ quét một đường ngang duy nhất Để khắc phục điều này, cần hiệu chỉnh giữa các cảm biến để đảm bảo dữ liệu chính xác Bài báo này đề xuất một hệ thống cảnh báo va chạm thời gian thực sử dụng LiDAR 2D và camera để nhận biết môi trường và ước tính khoảng cách và góc của chướng ngại vật, triển khai trên Nvidia Jetson Nano bằng Hệ điều hành Robot (ROS)
Phát hiện đối tượng trong ADAS ngày càng sử dụng các thuật toán học sâu, đặc biệt là các mạng thần kinh chuyển đổi (CNN) Các mô hình phát hiện hai giai đoạn như R- CNN, Faster R-CNN có độ chính xác cao nhưng chậm hơn so với các mô hình một giai đoạn như YOLO, SSD Hệ thống ADAS sử dụng thuật toán học sâu và đa cảm biến yêu cầu xử lý song song và tốc độ cao, điều này đòi hỏi phần cứng mạnh mẽ như GPU và phần mềm hỗ trợ như ROS ROS cho phép lập kế hoạch phát triển hệ thống mô-đun và hệ thống song song, rất phù hợp cho việc triển khai các ứng dụng như ADAS [6]
Hình 1.5: Quy trình kiểm soát phanh
1.3.2.2 Hệ thống Lidar cho xe ô tô
Một lidar thông thường hoạt động bằng cách quét trường nhìn của nó bằng một hoặc nhiều chùm tia laser Điều này được thực hiện thông qua hệ thống điều khiển chùm tia được thiết kế tinh tế Chùm tia laser được tạo ra bởi một diode laser được điều chế biên độ phát ra ở bước sóng cận hồng ngoại Chùm tia laze được môi trường phản chiếu trở lại máy quét, với tín hiệu phản hồi được bộ tách sóng quang nhận được Thiết bị điện tử nhanh lọc tín hiệu và đo sự khác biệt giữa tín hiệu truyền và tín hiệu nhận, tỷ lệ thuận với khoảng cách Phạm vi được ước tính từ mô hình cảm biến dựa trên sự khác biệt này Sự khác biệt về sự biến đổi của năng lượng phản xạ do vật liệu bề mặt cũng như trạng thái môi trường giữa máy phát và máy thu được bù đắp thông qua xử lý tín hiệu Đầu ra của lidar bao gồm các đám mây điểm 3D tương ứng với môi trường được quét và cường độ tương ứng với năng lượng laser phản xạ Hình bên dưới thể hiện sự trình bày khái niệm của nguyên lý vận hành này [7]
Hình 1.6: Cách hoạt động của Lidar
1.3.2.3 Xe mini tự hành dựa trên Lidar hỗ trợ cho người khiếm thị
Nghiên cứu đề xuất phát triển một xe tự lái sử dụng công nghệ tự động, đáp ứng nhu cầu ngày càng tăng của ngành công nghiệp ô tô và tiềm năng phát triển trong tương lai của các phương tiện tự hành Hệ thống này được thiết kế để hoạt động tốt trong điều kiện giao thông phức tạp tại Ấn Độ, mang lại giá trị lớn cho ngành công nghiệp ô tô nước này
Xe sẽ sử dụng thiết bị LiDAR và camera để phát hiện đối tượng và phân tích môi trường, tạo ra bản đồ 2D của khu vực xung quanh.
Công nghệ SLAM (Simultaneous Localization and Mapping) và hợp nhất cảm biến sẽ được kết hợp với các kỹ thuật học sâu trên hình ảnh để đảm bảo vận hành trơn tru Xe sẽ có khả năng tự di chuyển trong các tình huống thực tế bằng cách sử dụng dữ liệu hình
7 ảnh và theo dõi hoạt động thực tế với sự hỗ trợ của các cảm biến Hệ thống này sẽ được điều khiển bởi một máy tính mini ASUS (NUC), đóng vai trò là bộ xử lý chính, hay "bộ não" của hệ thống
Hình 1.7: Lidar quét trên ứng dụng Slam
Các cảm biến camera trong xe sẽ hoạt động như các cảm biến thụ động, thu thập dữ liệu mà không phát ra tín hiệu nào vào môi trường Camera sẽ phát hiện và nhận dạng các đối tượng như xe cộ, biển báo, vạch kẻ đường, người đi bộ và các đối tượng liên quan khác Công nghệ camera đã phát triển đáng kể trong những năm gần đây, bao gồm các tính năng như hình ảnh 3D, ước lượng độ sâu, tầm nhìn lập thể, độ phân giải cao và cơ chế lấy nét tiên tiến Các camera 3D và camera tầm nhìn lập thể sẽ là thành phần chính trong việc xây dựng bản đồ môi trường của xe
LiDAR là một trong những cảm biến quan trọng nhất trong việc phát triển xe tự hành, với các ứng dụng bao gồm chụp ảnh, lập bản đồ 2D và 3D, điều hướng, phát hiện chướng ngại vật và tránh va chạm LiDAR quay và phát ra các chùm tia laser, phản xạ từ các bề mặt và vật thể trong phạm vi của nó, từ đó tạo ra một bản đồ thời gian thực của môi trường xung quanh Độ chính xác của LiDAR rất cao và nó cung cấp nền tảng vững chắc cho các thuật toán định vị, nhận dạng đối tượng và điều hướng
Phạm vi đề tài
Tìm hiểu và khảo sát công nghệ nghệ nhận diện vật thể, cảnh báo phòng tránh va chạm Nghiên cứu xử lý ảnh ứng dụng trên máy tính nhúng Jetson Nano kết hợp giữa Rplidar A1M8, Camera Raspberry Pi v2, nguồn, còi chíp và màn hình LCD để phát tín hiệu âm thanh và hình ảnh cảnh báo cho người lái.
Phạm vi nghiên cứu
- Thiết kế lắp đặt hệ thống lên xe tự chế
- Thực nghiệm trong khuôn viên trường.
Phương pháp nghiên cứu
- Nghiên cứu và phân tích những đề tài nghiên cứu trong nước và ngoài nước
- Nghiên cứu xây dựng lưu đồ thuật toán xử lý ảnh phù hợp với đề tài
- Tìm hiểu hệ thống máy tính nhúng phù hợp (Jetson Nano)
- Lựa chọn ngôn ngữ lập trình (Python)
- Thiết lập xử lý ảnh để nhận diện đối tượng (SSD Mobilenet-v2)
- Thiết kế và lắp đặt thiết bị của hệ thống lên xe
- Xây dựng tình huống mô phỏng thử nghiệm
- Đánh giá bản báo cáo và đề xuất hướng phát triển của đề tài
Giá trị thực tiễn
Hệ thống cảnh báo tiền va chạm là hệ thống quan trọng ở trên xe Hệ thống đảm bảo được độ an toàn cho người lái, hệ thống giám sát hành trình và có thể phát ra tín hiệu cảnh báo khi có vật cản hoặc có khả năng xảy ra va chạm giúp người lái an tâm trong quá trình lái xe và giảm thiểu số ca va chạm.
Kết quả dự kiến
- Tìm hiểu được cơ sở lý thuyết và cấu tạo của hệ thống tiền va chạm
- Thiết kế được hệ thống thử nghiệm
- Chạy thử trên đường và đánh giá kết quả
CƠ SỞ LÝ THUYẾT
Nguyên lý hoạt động hệ thống cảnh báo tiền va chạm (PCS)
Hệ thống cảnh báo tiền va chạm gồm:
- Camera nhận diện vật thể phía trước
- Cảm biến đo khoảng cách với vật thể phía trước có thể được đo bằng sóng vô tuyến (radar) hoặc bằng laser (lidar)
- Màn hình và còi cảnh báo
Hình 2.1: Vị trí bố trí hệ thống tiền va chạm
(Nguồn: Toyota) Nguyên lý hoạt động của hệ thống tiền va chạm:
Hệ thống cảnh báo tiền va chạm PCS luôn luôn hoạt động khi xe đang chạy Radar và camera nhận diện liên tục nhận diện vật thể và đo khoảng cách, vận tốc giữa xe mình và xe phía trước Thông tin sẽ được đưa về trung tâm xử lý, trung tâm xử lý sẽ tính toán khả năng xảy ra va chạm, nếu có khả năng xảy ra va chạm hệ thống sẽ gửi tín hiệu đến màn hình và loa để cảnh báo cho người lái xe để kịp thời đạp phanh Nếu hệ thống cảnh báo mà người lái xe không phản ứng thì hệ thống sẽ can thiệp và tự động phanh
Thông tin từ radar và camera nhận diện vật thể phía trước sẽ được giao tiếp với các ECU của các hệ thống như: phanh (ABS), túi khí, động cơ, trợ lực lái,…thông qua mạng CAN với ECU trung tâm Từ đó có thể can thiệp đến các hệ thống để có thể điều khiển
11 phanh tự động, dây an toàn hoặc can thiệp đến động cơ…để có thể đảm bảo được độ an toàn cho người lái xe khi tham gia giao thông [9]
Các mức hoạt động của hệ thống tiền va chạm:
Mức 1: Hệ thống PCS sẽ hoạt động khi tính toán thấy có khả năng sắp xảy ra va chạm, hệ thống sẽ gửi tín hiệu cảnh báo hình ảnh và âm thanh đến người lái xe để có thể xử lý và đạp phanh kịp thời
Mức 2: Ở mức hoạt động này hệ thống cảm thấy người lái xe không có phản ứng đạp phanh, hệ thống vẫn tiếp tục cảnh báo bằng hình ảnh, âm thanh và kích hoạt hệ thống hỗ trợ phanh khẩn cấp BA (Brake Assist) giúp hỗ trợ cho người lái xe khi đạp bàn đạp phanh
Mức 3: Khi hệ thống nhận thấy khả năng xảy ra va chạm tăng cao mà người lái xe vẫn chưa có dấu hiệu đạp phanh, hệ thống sẽ kích hoạt chức năng phanh chủ động Chức năng này sẽ gửi tín hiệu để tự động phanh cho dù người lái xe có nhấn bàn đạp phanh không, giúp giảm thiểu thiệt hại nếu có xảy ra va chạm [10]
Hình 2.2: Các chế độ điều khiển
Hình 2.3: Tóm tắt nguyên lý hoạt động của hệ thống
Cấu tạo và nguyên lý hoạt động của từng bộ phận
Cảm biến tốc độ là một loại cảm biến được sử dụng để đo đạc và ghi lại tốc độ di chuyển của xe Cảm biến tốc độ thường sử dụng nguyên tắc từ các loại cảm biến như cảm biến Hall, cảm biến từ,…Khi bánh xe quay, cảm biến này sẽ ghi lại các tín hiệu điện Các hệ thống điện tử trên xe sử dụng tín hiệu này để hiển thị trên bảng điều khiển hoặc để điều chỉnh các hệ thống khác như hệ thống phanh (ABS) hoặc hệ thống kiểm soát hành trình
- Trên các dòng xe đời cũ: Công tắc lưỡi gà, cảm biến quang điện
- Trên các dòng xe đời mới: Loại điện từ, cảm biến Hall
2.2.1.3 Cấu tạo và nguyên lý hoạt động của cảm biến Hall
Gần giống với loại cảm biến điện từ, loại cảm biến Hall là một trong hai loại cảm biến tốc độ xe phổ biến nhất ngày nay
Hình 2.4: Cấu tạo cảm biến tốc độ Hall
(Nguồn: VATC) Cảm biến Hall hoạt động dựa trên hiệu ứng Hall sử dụng một nguồn điện thường là 5V hoặc là 12V Nguồn điện được cấp sẽ đi qua phần tử Hall, kết hợp từ trường nam châm và răng của bánh răng làm cho các electron bên trong phần tử Hall tập trung về một phía nhờ tác dụng của lực Lorentz, từ đó tạo ra điện áp Khi bánh răng quay khe hở giữa bánh răng với phần tử Hall thay đổi cũng làm từ trường thay đổi theo Khi không có từ trường đi qua thì điện áp sẽ không được tạo ra Khi từ trường mạnh nhất thì điện áp tạo ra mạnh nhất Cảm biến được điều khiển đóng ngắt liên tục dựa vào điện áp liên tục thay đổi này, gửi tín hiệu về ECU dưới dạng xung vuông và ECU sẽ tính toán tốc độ xe đang di chuyển dựa trên những tín hiệu này [11]
2.2.2 Cảm biến đo khoảng cách
2.2.2.1 Cảm biến đo khoảng cách loại Radar
Radar (Radio detection and ranging) là một loại cảm biến dược sử dụng để đo khoảng cách giữa cảm biến và các vật thể khác trong môi trường xung quanh Cảm biến sử dụng sóng radar để phát tín hiệu điện từ và sau đó nhận lại tín hiệu phản xạ từ các vật xung quanh Dựa trên thời gian mà tín hiệu đi từ nơi phát ra đến tín hiệu phản xạ được nhận lại, cảm biến radar có thể tính toán khoảng cách đến vật thể đó
Cảm biến được đặt ở trước xe bên, bên trong cảm biến có bộ phận thu và phát sóng vô tuyến Khi nó hoạt động nó sẽ phát ra những đợt sóng vô tuyến, những đợt sóng này di chuyển đến phía trước và sẽ phản xạ ngược lại cảm biến khi có vật cản bằng cách này ECU có thể tính toán được khoảng cách từ xe đến vật cản
Công thức tính khoảng cách tới vật thể của radar:
2 D: Khoảng cách từ vật tới bộ radar (m) t: Thời gian sóng vô tuyến di chuyển từ radar đến vật thể và quay lại (s)
𝑐 𝑠 : Hằng số vận tốc âm thanh di chuyển trong không khí
Hình 2.5: Vị trí lắp đặt camera trên Toyota Camry
(Toyota Camry Manual) Radar có hai loại là radar tầm ngắn và radar tầm xa
Radar tầm ngắn với ưu điểm là giá thành rẻ và thường được sử dụng cho các hệ thống: cảnh báo điểm mù, hỗ trợ đỗ xe, phát hiện vật cản khi lùi,
Radar tầm xa có độ chính xác cao, xử lý tốt thường được sử dụng để xác định khoảng cách, vận tốc của vật thể khác Radar tầm xa có tầm hoạt động từ 80m cho đến 200m hoặc xa hơn với những loại radar đời mới [12] Ưu điểm của radar là giá thành rẻ hơn những loại khác, cấu tạo nhỏ gọn và ít bị ảnh hưởng khi thời tiết xấu
Nhược điểm là độ chính xác không được cao, xác định hình dạng vật thể còn nhiều hạn chế
2.2.2.2 Cảm biến đo khoảng cách loại Lidar
Lidar là một công nghệ bằng việc sử dụng ánh sáng laser để tính toán và đo khoảng cách đến các vật thể xung quanh và tạo ra các hình ảnh 3D hoặc điểm đám mây Lidar phát triển từ những năm 60 của thế kỷ XX và được ứng dụng chủ yếu trong việc lập bản đồ địa hình của hàng không và vũ trụ Lidar hoạt động bằng cách phát ra cực nhanh các chùm tia laser (160.000 lần/giây) vào một vật thể hoặc là bề mặt và đo thời gian bắt đầu phát các tia laser cho đến khi phản xạ lại và quay về bộ thu tín hiệu
Công thức tính khoảng cách tới vật thể của Lidar [13]
2 D: Khoảng cách từ Lidar tới vật thể (m) c: Vận tốc ánh sáng (m/s) (c=3.10 8 m/s) t: Thời gian ánh sáng laser đi từ bộ lidar đến vật và phản xạ ngược lại
Hình 2.6: Cơ chết hoạt động của Lidar A1M8
Reflected light signal: Tín hiệu ánh sáng khảo sát Ưu điểm của Lidar là độ chính xác cao, thu thập tính hiệu cực nhanh và xác định rõ được hình dạng của vật thể
Nhược điểm là giá thành rất cao và chịu ảnh hưởng bởi thời tiết xấu (mưa, sương mù, )
2.2.3 Camera nhận diện vật thể
Camera nhận diện vật thể là hệ thống camera được dùng để có thể ghi lại những hình ảnh ở phía trước đầu xe Camera liên tục thu thập thông tin hình ảnh phía trước xe để có thể xác định chính xác khoảng cách từ xe đến chướng ngại vật như người đi bộ, xe đạp, xe máy, xe ô tô Ngoài việc cung cấp thông tin cho hệ thống tiền va chạm, camera còn có thể nhận diện các biển báo giao thông bên đường và báo cho tài xế biết, nhận diện và theo dõi xe có đi chệch làn đường hay không [14]
Hình 2.7: Vị trí lắp đặt camera trên xe
Camera nhận diện vật thể có thể xác định khoảng cách bằng việc chuyển hình ảnh đầu vào thành ước tính khoảng cách trên mỗi điểm ảnh hoặc được gọi là bản đồ chiều sâu thông qua sử dụng mạng thần kinh nhân tạo
Mạng thần kinh neuron nhân tạo là mô hình tính toán của trí thông minh nhân tạo (AI) xây dựng dựa trên các neuron trong não bộ con người
Với hệ thống cảnh báo tiền va chạm để xác định được khoảng cách chính xác cần dựa vào cả lidar và camera nhận diện vật thể thì độ an toàn sẽ được đảm bảo rất nhiều Khoảng cách thu được của lidar và camera sẽ đối chiếu với nhau và giảm sai lệch khi chỉ sử dụng một hệ thống
Camera ngoài xác định khoảng cách ra còn nhận diện vật thể trước và có thể xác định vật thể đó là gì Nhận diện vật thể thuộc một lĩnh vực về thị giác máy tính (computer vision), nhận diện vật thể giúp cho máy tính biết được chính xác tên gọi và vị trí của một vật thể trong hình ảnh hoặc video Nhận diện vật thể được thực hiện bằng trí thông minh nhân tạo nhờ vào mạng thần kinh nhân tạo
Ngày nay có rất nhiều thuật toán để AI nhận diện được vật thể nhưng vẫn còn điểm khác nhau giữa những thuật toán nhưng nhìn chung những thuật toán này đều hoạt động tương đối giống nhau [14]
Hình 2.8: Tạo ô bao quanh và nhận diện vật thể
(Nguồn: penseeartificielle.fr) Những camera hiện đại ngày nay có thể thu thập khoảng 100 khung hình mỗi giây tương đồng với việc trí thông minh nhân tạo chạy thuật toán nhận diện và xác định vị trí vật thể 100 lần mỗi giây Ngày nay, trí thông minh nhân tạo mất khoảng 0.02s để nhận diện được vật thể đó là gì và ở đâu Độ trễ của hệ thống là rất thấp nên giúp camera nhận diện được vật thể chính xác với thời gian thực Ưu điểm của camera là nhận diện vật thể với mức độ chính xác cực cao và có độ trễ thấp, nó còn được kết hợp với nhiều hệ thống khác trên xe
Nhược điểm là giá thành cao, độ chính xác bị giảm khi tầm nhìn bị cản trở và phụ thuộc nhiều vào độ phân giải của camera
Khi phát hiện tình huống nguy hiểm hệ thống sẽ cảnh báo cho người lái xe biết thông qua thị giác và thính giác bằng cách hiển thị hình ảnh có màu sắc nổi bật và âm thanh lớn để người lái xe chú ý đến
Giới thiệu về thị giác máy tính (Computer Vision)
Thị giác máy tính được định nghĩa là một lĩnh vực thuộc trí tuệ nhân tạo và khoa học máy tính nó có khả năng tiếp thu, xử lý, phân tích và nhận diện những hình ảnh, dữ liệu thực tế để đưa ra các thông tin số hoặc biểu tượng Thị giác máy tính được mô tả như một tập hợp toàn diện các quá trình tự động và tích hợp, cùng với các biểu diễn cho nhận thức thị giác
2.3.1 Cách hoạt động của thị giác máy tính:
Mô phỏng thị giác con người được chia làm ba giai đoạn: mô phỏng (thu nhận), mô phỏng vỏ não thị giác (mô tả) và mô phỏng phần còn lại của bộ não (thấu hiểu)
Mô phỏng (thu nhận): Ngày nay chúng ta đã tạo ra được các cảm biến, các vi xử lý có thể nhìn giống như mắt của con người hoặc tốt hơn Camera chụp vài nghìn tấm mỗi giây và nhận diện vật thể từ xa với độ chính xác cao Camera cũng có thể không thể nhận diện được quả bóng nếu bị giới hạn bởi phần mềm, đây chính là khó khăn lớn nhất Tuy nhiên, các loại camera hiện đại khá tốt và linh hoạt, thích hợp cho việc làm cơ sở để thực hiện các việc nghiên cứu
Não thị giác (mô tả): Giai đoạn tiếp theo trong quá trình mô phỏng thị giác là mô tả, tức là quá trình mô phỏng vỏ não thị giác bộ não của con người được xây dựng từ đầu với các hình ảnh và nó thực hiện những nhiệm vụ liên quan đến thị giác ở mức độ sâu hơn bất kỳ nhiệm vụ nào khác Những tế bào phối hợp để tìm ra các thông tin từ dữ liệu và bắt tín hiệu từ thế giới xung quanh Một số nghiên cứu đã chỉ ra rằng, mạng lưới neuron trong não phức tạp đến mức không thể hiểu được nếu tiếp cận từ trên xuống dưới Tuy nhiên, tiếp cận từ dưới lên dường như là hứa hẹn hơn trong việc hiểu sâu hơn về cách não bộ hoạt động Những hoạt động tìm hiểu và sử dụng hệ thống này trong việc bắt chước não bộ đã bùng nổ mạnh mẽ trong những năm qua Việc nhận diện hình mẫu vẫn đang phát triển và chúng ta vẫn luôn có những tiến bộ nhất định
Mô phỏng phần còn lại của bộ não (thấu hiểu): Cuối cùng, giai đoạn thứ ba trong quá trình mô phỏng thị giác là thấu hiểu Đây là nơi mà các khía cạnh phức tạp nhất của thị giác và nhận thức được xử lý, bao gồm bộ nhớ, sự chú ý và quyết định Mặc dù có phần cứng và phần mềm tốt, nhưng không thể hiểu tuyệt đối, cần phải có hệ điều hành phức tạp như bộ não Mặc dù thị giác máy tính đang tiếp tục phát triển và có ứng dụng trong nhiều lĩnh vực, nhưng để đạt được sự thấu hiểu như con người, còn cần nhiều nghiên cứu và phát triển hơn nữa [17]
Sản xuất và kiểm tra chất lượng: Các nhà máy sản xuất ứng dụng thị giác máy tính để có thể kiểm tra chất lượng sản phẩm, phát hiện các lỗi và tự động hóa quy trình sản xuất
Nó giúp năng cao hiệu suất và giảm đáng kể chi phí sản xuất
21 Ô tô tự lái: Các xe tự hành sử dụng thị giác máy tính để nhận diện và phân tích môi trường xung quanh, bao gồm nhận diện làn đường, biển báo giao thông, chướng ngại vật và người đi bộ, thông qua đó có thể giúp xe di chuyển một cách an toàn hơn
Nông nghiệp thông minh: Thị giác máy tính hỗ trợ nông dân trong việc theo dõi cây trồng, phát hiện sâu bệnh và đánh giá chất lượng nông sản Công nghệ này giúp tối ưu hóa các quy trình sản xuất nông nghiệp và gia tăng năng suất
Phát hiện khuyết điểm: Đây là ứng dụng khá phổ biến của thị giác máy tính Hiện nay việc phát hiện ra các lỗi thường do các giám sát viên thực hiện nhưng họ không thể kiểm soát được toàn bộ cả một quy trình được Nhờ vào thị giác máy tính cho phép kiểm tra và phát hiện các lỗi nhỏ nhất chẳng hạn như vết nứt kim loại hoặc lỗi sơn có kích thước nhỏ hơn 0,05mm
Dịch tự động: Sử dụng thuật toán nhận diện ký tự (OCR), ứng dụng dịch thuật tự động như Google Translate cho phép người dùng dịch văn bản từ bất kỳ ngôn ngữ nào sang ngôn ngữ khác chỉ bằng cách đưa camera điện thoại vào văn bản Quá trình này làm giảm đáng kể thời gian và công sức cần thiết cho việc dịch thông tin từ ngôn ngữ này sang ngôn ngữ khác
Lĩnh vực y tế: Trong lĩnh vực y tế, các tiến bộ đáng kể liên tục xuất hiện trong việc áp dụng công nghệ thị giác máy tính vào nhận diện mẫu và xử lý hình ảnh Hình ảnh y khoa không chỉ là một phần thiết yếu mà còn là trụ cột quan trọng trong quá trình chẩn đoán và điều trị bệnh Các chuyên gia y tế và nhà nghiên cứu đang sử dụng công nghệ này để phát triển các công cụ chẩn đoán tối ưu hơn và tăng khả năng đưa ra các hành động điều trị hiệu quả Việc phân tích hình ảnh y khoa bằng thị giác máy tính giúp cải thiện hiệu suất của các phương pháp chẩn đoán truyền thống và mở ra những cơ hội mới trong việc nghiên cứu và ứng dụng y học
Nhận diện khuôn mặt: Thị giác máy tính được sử dụng rộng rãi ở trong các hệ thống an ninh để nhận điện và xác định khuông mặt Với công nghệ này có thể dễ thấy được ở các thiết bị di động hoặc các cửa an ninh và hệ thống giám sát
Thực tế ảo và tăng cường: Thị giác máy tính là nền tảng cho các ứng dụng thực tế ảo và thực tế ảo tăng cường, nó cho phép ta tạo ra những trải nghiệm tương tác phong phú trong các lĩnh vực giải trí, giáo dục và đào tạo [18]
Thị giác máy tính ngày càng quan trọng khi có nhiều ứng dụng áp dụng vào đời sống trong nhiều lĩnh vực khác nhau, nó góp phần nâng cao hiệu suất và chất lượng của cuộc sống.
Giới thiệu xử lý ảnh
Xử lý ảnh là một lĩnh vực quan trọng đối với lĩnh vực khoa học máy tính và công nghệ thông tin, nó áp dụng các kỹ thuật và thuật toán để cải thiện, phân tích và hiểu các hình ảnh kỹ thuật số Quá trình này gồm nhiều bước, từ thu thập hình ảnh, tiền xử lý, phân tích đến trích xuất thông tin hữu ích Xử lý ảnh ứng dụng rộng rãi trong nhiều lĩnh vực như y tế, nông nghiệp, an ninh, và giải trí Các công nghệ tiên tiến trong xử lý ảnh như thị giác máy tính và học máy, mở ra nhiều cơ hội, giúp máy móc có khả năng nhận diện khuôn mặt, phân tích hình ảnh y tế, giám sát an ninh, và tự động hóa các quy trình công nghiệp Mục đích của xử lý ảnh gồm:
- Tăng chất lượng hình ảnh bằng các thay đổi ảnh
- Có khả năng nhận diện ảnh, đoán nhận ảnh, đánh giá các nội dung của ảnh Nhận biết và đánh giá các nội dung của ảnh là sự phân tích một hình ảnh thành những phần có ý nghĩa giúp phân biệt giữa các đối tượng khác nhau và mô tả cấu trúc của hình ảnh ban đầu Các kỹ thuật này được ứng dụng rộng rãi trong nhiều lĩnh vực đặc biệt là y học như xử lý ảnh tế bào và nhiễm sắc thể, nhận diện cơ bản như nhận diện ảnh của các đối tượng trên ảnh, tách cạnh, phân đoạn hình ảnh,… Với sự tiến bộ trong phương pháp này đã cải thiện đáng kể khả năng phân tích hình ảnh và góp phần vào sự phát triển nhiều ứng dụng công nghệ tiên tiến Để có thế dễ dàng hình dung, hãy xem các bước cơ bản có trong xử lý ảnh Thứ nhất, ảnh từ thế giới thực được thu nhận qua các thiết bị như Camera hoặc máy chụp ảnh Trước đây, khi lấy ảnh qua Camera là các hình ảnh tương tự chằng hạn như loại Camera ống kiểu CCIR Với sự tiến bộ của của công nghệ, ảnh màu hoặc đen trắng được lấy từ Camera hiện nay được chuyển trực tiếp thành ảnh số, giúp quá trình xử lý trở nên thuận tiện hơn Ngoài ra, ảnh cũng có thể tiếp nhận từ vệ tinh hoặc có thể quét từ ảnh chụp bằng máy quét ảnh [19] Ảnh số: Ảnh số được biểu diễn dưới dạng là ma trận số, ở trong đó mỗi phần tử của ma trận sẽ tương ứng với một điểm của ảnh và chứa giá trị biểu diễn độ sáng hoặc màu sắc của điểm ảnh đó
Biến đổi ảnh: Đây chính là các kỹ thuật toán học áp dụng lên ảnh để có thể thay đổi đặc tính của ảnh Các biến đổi phổ biến đó là biến đổi Fourier, biến đổi Wavelet hoặc biến đổi Cosine rời rạc
Hình 2.11: Sơ đồ các bước trong xử lý ảnh
2.4.1 Thu nhận ảnh (Image Acquisition) Ảnh có thể được thu nhận qua camera màu hoặc đen trắng Thông thường ảnh nhận qua camera là ảnh tương tự, chẳng hạn như loại camera ống chuẩn CCIR với tần số 1/25 giây, mỗi ảnh gồm có 25 dòng Ngoài ra, còn có loại camera đã được số hóa như loại CCD là loại sử dụng photodot tạo cường độ sáng tại mỗi điểm ảnh Chất lượng ảnh thu nhận được phụ thuộc vào thiết bị thu và các yếu tố mỗi trường như ánh sáng và cảnh quan [19]
2.4.2 Tiền xử lý (Image processing)
Sau khi được thu nhận hình ảnh có thể sẽ bị nhiễu và có độ tương phản thấp,do đó cần được đưa vào tiền xử lý để cải thiện chất lượng Ở giai đoạn này sẽ bao gồm các kỹ thuật như cân bằng chất lượng ban đầu của ảnh Tiền xử lý có chức năng là loại bỏ nhiễu và cải thiện mức độ tương phản của ảnh từ đó làm cho ảnh rõ ràng và nét hơn [19]
2.4.3 Phân đoạn ảnh (Segmentation) hay phân vùng ảnh
Mục đích của giai đoạn này là chia ảnh thành các vùng khác nhau dựa trên đặc điểm chung như màu sắc, độ sáng, hoặc kết cấu Các phương pháp phân đoạn ảnh thường dùng gồm ngưỡng hóa, phân đoạn theo vùng và phương pháp cụm [19]
2.4.4 Hiển thị ảnh (Image Representation)
Sau quá trình phân đoạn ảnh, chúng ta có các phần của ảnh với các liên kết tại vùng lân cận Quá trình này thường liên quan đến việc trích xuất đặc trưng, trong đó ta chọn các đặc tính của ảnh để mô tả ảnh Đây có thể là định lượng hoặc làm cơ sở để phân biệt giữa các lớp đối tượng này với đối tượng khác trong ảnh Ví dụ như trong việc nhận diện ký tự trên phong bì thư, chúng ta mô tả các đặc trưng của từng ký tự để nhận biệt các ký tự [19]
2.4.5 Nhận diện ảnh (Image Recognition and Interpretation) Đây là quá trình xác định và phân loại các đối tượng hoặc mẫu trong ảnh dựa trên các đặc trưng đã trích xuất Các kỹ thuật nhận diện phổ biến bao gồm mạng neuron nhân tạo, machine learning và các thuật toán deep learning Nội suy là đưa ra các dự đoán hoặc giải thích dựa trên cơ sở nhận diện Đối với nhận diện, những mô hình toán học về ảnh được phân theo hai loại nhận diện ảnh chính:
- Nhận diện theo tham số là dựa vào việc tìm ra các tham số hoặc đặc trưng của ảnh để phân loại
- Nhận diện theo cấu trúc là việc tập trung vào nhận diện cấu trúc hoặc là mối quan hệ giữa các đối tượng trong ảnh với nhau
Một số ứng dụng phổ biến của nhận diện ảnh hiện nay là: nhận diện các ký tự chữ in, chữ viết tay, nhận diện khuôn mặt và nhiều ứng dụng khác trong lĩnh vực công nghệ [19]
2.4.6 Cơ sở tri thức (Knowledge Base)
Như đã đề cập ở trên, ảnh là một đối tượng phức tạp, đa dạng về đường nét, độ sáng tối, dung lượng điểm ảnh và bị ảnh hưởng bởi nhiều yếu tố từ môi trường Trong quá trình xử lý và phân tích hình ảnh, việc áp dụng những phương pháp toán học để đơn giản hóa quá trình xử lý, người ta mong muốn bắt chước quy trình tiếp nhận và xử lý ảnh theo cách của con người tiếp nhận Trong quá trình xử lý đó, nhiều khâu hiện nay đã xử lý theo các phương pháp trí tuệ nhân tạo để mô phỏng cách con người xử lý ảnh Do vậy, ở đây các cơ sở tri thức về quá trình thị giác của con người được phát triển giúp tăng khả năng hiểu và xử lý ảnh của các hệ thống máy tính [19]
Sau khi được số hóa thì ảnh thường sẽ được lưu trữ vào bộ nhớ hoặc chuyển sang bước tiếp theo Nếu lưu trữ ảnh trực tiếp từ ảnh thô, điều này đòi hỏi dung lượng bộ nhớ cực lớn và không được hiệu quả cao theo quan điểm ứng dụng và công nghệ Thông thường các đặc trung của ảnh được dùng để đại diện cho ảnh, ví dụ như biên ảnh hoặc các vùng ảnh Nó giúp giảm được lượng lớn dung lượng bộ nhớ cần thiết và tăng hiệu suất của quá trình xử lý và lưu trữ ảnh [19]
Tổng quan nhận diện đối tượng
Nhận diện vật thể là một nhánh quan trọng trong lĩnh vực chính của Machine Learning, tập trung vào khả năng của các hệ thống máy tính và phần mềm để xác định và định vị các đối tượng trong hình ảnh và video Nhờ những phát triển vượt bậc trong khoa học, nó đã thúc đẩy việc áp dụng nhận diện vật thể vào nhiều hệ thống thực tế có độ chính xác rất cao Từ việc nhận diện khuôn mặt, nhận dạng xe, đếm số lượng người đi bộ, cũng như các công nghệ robot, nhận diện vật thể đang được áp dụng rộng rãi và có tính nghiên cứu và những ứng dụng nâng cao
Hình 2.12: Nhận diện vật thể
(Nguồn: viso.ai) Bài toán nhận diện đối tượng có sử dụng đa dạng trong nhiều lĩnh vực thực tiễn, làm cho nó trở thành một đề tài hấp dẫn thu hút nhiều nhóm nghiên cứu trong thời gian dài Các ứng dụng như:
- An ninh và giám sát: Nhận diện khuôn mặt, biển số xe và hành vi của đối tượng nằm trong video theo dõi
- Ô tô tự động lái: Trong lĩnh vực này, việc tìm hiểu và nghiên cứu các yếu tố môi trường là vô cùng quan trọng Đối với một mô hình nhận diện đối tượng sẽ được huấn luyện dựa trên những đối tượng khác nhau giúp xe phát hiện các vật thể cản trở để đảm bảo an toàn cho người lái
- Thương mại điện tử: Tìm kiếm sản phẩm bằng hình ảnh, quản lý kho hàng và tối ưu hóa trải nghiệm đối với người dùng Nó còn được ứng dụng vào trong các loại robot để phát hiện và di chuyển các vật nặng
Hình 2.13: Cấu trúc của bài toán nhận diện đối tượng
Sau khi thu nhận, ảnh được xử lý trước để nâng cao mức độ chính xác của hệ thống Những ảnh được chọn lọc để trích xuất các đặc trưng, tạo thành các vector đặc trưng trong quá trình rút trích Phát hiện đối tượng là quá trình phát hiện và định vị vị trí của các đối tượng ở trong ảnh hoặc là ở trên chuỗi ảnh của video Các đối tượng phát hiện được sẽ tiếp tục được phân loại vào từng lớp riêng biệt để nhận diện [20].
Tổng quan về mô hình phát hiện đối tượng
Nhận diện đối tượng liên quan đến việc sử dụng các thuật toán cổ điển như các thuật toán được hỗ trợ trong OpenCV (thư viện thị giác máy tính phổ biến nhất hiện nay) Mặt khác, các thuật toán này không thể có được hiệu suất tốt để làm việc trong các điều kiện khác nhau Thế nên sự ra đời của các mô hình hỗ trợ cho việc nhận diện vật thể là điều không thể thiếu
Học máy là một lĩnh vực con của trí tuệ nhân tạo nó được tập trung vào việc phát triển các thuật toán và mô hình để máy tính có thể học tập và cải thiện hiệu suất từ dữ liệu mà không cần phải lập trình cụ thể cho từng nhiệm vụ Đây được xem là một công nghệ mang tính chất cốt lỗi đang được cách mạng hóa trong nhiều lĩnh vực lớn như y tế, tài chính, giao thông hay là trong nhiều lĩnh vực khác
Học sâu là một phần khá quan trọng trong học máy, nó dùng các neuron nhân tạo để xử lí các chương trình khó Học sâu được sử dụng khá phổ biến và rộng rãi hiện nay để xử lí, nhận diện, tính toán và dự đoán khả năng
Neuron tích chập (Convolutional Neural Network - CNN) là một phương pháp tiến bộ hơn hết, lấy cảm hứng bởi các neuron của các sinh vật Mạng CNN được yêu thích và
27 dùng bởi độ tin cậy và tốc độ xử lí cao Bởi vì vậy, nó được ưu tiên trong xử lí ảnh và thị giác máy tính giúp giải quyết bài toán nhận diện vật thể
Với sự tiến bộ vượt bậc của học sâu đã dẫn đến sự xuất hiện của nhiều thuật toán và cách thức nhận diện đối tượng ngày càng hiện đại và độ chính xác cao Các mô hình như R-CNN, Fast-RCNN, Faster-RCNN, RetinaNet cùng với các mô hình như SSD và YOLO đã giúp nâng cao hiệu suất của các hệ thống nhận diện đối tượng Đa số các mô hình này đều dựa trên mạng neuron tích chập, nhờ vào những ưu điểm mà mạng này mang lại, giúp chúng phù hợp hơn với các bài toán thực tiễn [21]
Tiêu chí đánh giá mô hình nhận diện đối tượng
Bài toán áp dụng thuật toán tìm kiếm đối tượng trong cuộc sống đa dạng, và việc chọn mô hình phù hợp là một thách thức lớn Mô hình phát hiện đối tượng được đánh giá dựa trên hai tiêu chí cơ bản: tốc độ xử lý và độ chính xác Tuy nhiên, việc lựa chọn một mô hình đáp ứng cả hai tiêu chí là khó khăn Một mô hình với tốc độ xử lý cao thường có ít tầng tính toán hơn, nhưng có thể mang lại kết quả không chính xác trong một số trường hợp Trái lại, một mô hình với tốc độ xử lý chậm hơn có thể đem lại kết quả chính xác hơn nhưng thường yêu cầu nhiều tầng tính toán hơn Việc chọn lựa một mô hình phù hợp đồng thời đáp ứng được yêu cầu về thời gian thực là vô cùng quan trọng và đòi hỏi sự cân nhắc kỹ lưỡng [22]
Hình 2.14: Tốc độ xử lý các mô hình CNN
Dựa vào hình 2.14 ta có thể thấy được các mô hình SSD và YOLO đã vượt trội hoàn toàn so với R-CNN Trong tiêu chí này, mô hình SSD là mô hình thích hợp để thực hiện bài toán nhận diện đối tượng trong thời gian thực kể cả khi bị giới hạn về phần cứng [22]
Dưới đây là một số biểu đồ so sánh các mô hình dựa trên hai tiêu chí đã đề cập Tuy nhiên, chúng không thể hiện đầy đủ tất cả các tiêu chí của thuật toán nhận diện, vì tính phức tạp và đa dạng của nó Một số mô hình tập trung vào độ chính xác, vì vậy cấu trúc mạng của chúng phức tạp và đòi hỏi nhiều tính toán, dẫn đến tốc độ xử lý chậm Các mô hình như R-CNN và các biến thể của nó là ví dụ điển hình cho trường hợp này
Trái lại, một số mô hình khác tập trung vào tốc độ xử lý, vì vậy cấu trúc mạng của chúng đơn giản hơn những vẫn đảm bảo độ chính xác Các mô hình thuộc họ SSD như SSD và YOLO là các ví dụ điển hình trong trường hợp này Các mô hình này chuyên sâu vào việc nhận diện các vật thể lớn với tốc độ xử lý cao, thích hợp cho các ứng dụng thời gian thực
Như vậy, nếu bài toán đòi hỏi độ chính xác cao, các mô hình như R-CNN là sự lựa chọn phù hợp Trong khi đó, nếu cần tốc độ xử lý nhanh mà không hy sinh quá nhiều độ chính, các mô hình thuộc họ SSD sẽ là lựa chọn thích hợp [22]
Hình 2.15: Độ chính xác của các mô hình CNN
Dựa vào hình 2.15 ta thấy mô hình có độ chính xác không chênh lệch nhau nhiều lắm bởi vì các mô hình này đều bắt đầu từ ý tưởng sử dụng mạng neuron tích chập, điểm khác biệt chính là việc thực hiện công việc trên mạng
Các mô hình thuộc R-CNN thường có độ chính xác cao hơn so với mô hình thuộc họ SSD trong cùng phiên bản Tuy nhiên, sự khác biệt về độ chính xác giữa các mô hình họ R-CNN và họ SSD không quá lớn, và điều này là điểm mạnh của các mô hình họ SSD Hiện nay, các mô hình họ SSD đã trải qua nhiều cải tiến và nâng cấp để tối ưu hóa cả độ chính xác và tốc độ xử lý Do đó, trong tương lai gần, việc lựa chọn một mô hình phù hợp với bài toán sẽ không còn là một vấn đề quá lo lắng [22]
Qua tìm hiểu và khảo sát các mô hình xử lý có độ chính xác cao và xử lý nhanh nhưng vì còn bị giới hạn về phần cứng nên nhóm sẽ phân tích cấu trúc và cách hoạt động của mô hình SSD
Giới thiệu mô hình SSD
Với những tiến bộ đáng kể trong các bài toán về thị giác máy tính sử dụng mạng CNN, một mô hình được gọi là R-CNN đã được phát triển để giải quyết các vấn đề về nhận diện, định vị và phân loại đối tượng R-CNN được thiết kế để xác định các đối tượng trong hình ảnh Kết quả đầu ra của mạng thường là một tập hợp các hộp giới hạn (bounding box) bao quanh các đối tượng đã được nhận biết, cùng với các nhãn đối tượng tương ứng
Hình 2.16: Định vị và nhận diện đối tượng
(Nguồn: thegioimaychu.vn) Các mô hình khác của CNN cũng được phát triển sau đó dựa trên R-CNN nhằm mục đích chính là cải thiện được thời gian và mức độ chính xác của mô hình với yêu cầu có thể sử dụng vào các ứng dụng thời gian thực
Trong mô hình SSD, các bounding box mặc định được đặt với các kích thước và tỷ lệ khác nhau SSD sau đó đánh giá và tìm kiếm đối tượng trên các bounding box này để xác định box phù hợp nhất với đối tượng cần tìm kiếm Hơn nữa, SSD có thể tìm kiếm các đối tượng với các kích thước khác nhau bằng cách thực hiện việc này trên các feature map nhưng không khác nhau về mặt kích thước của các bounding box Theo thông số cho thấy rằng, SSD đạt được độ chính xác trung bình 74.3% trên tập test của VOC2007, và đạt được tốc độ xử lý 59 hình ảnh trên giây nhanh hơn so với Faster R-CNN [23]
Mạng neuron tích chập là một trong những kiến trúc mạng truyền thẳng đặc biệt, đồng thời cũng là một trong những mô hình học sâu phổ biến và tiên tiến nhất hiện nay Đặc điểm nổi bật của mạng neuron tích chập là tốc độ xử lý nhanh và độ chính xác cao, làm cho nó trở thành lựa chọn hàng đầu trong các hệ thống nhận diện và xử lý ảnh Trong mạng neuron tích chập, các tầng được xem xét theo ba chiều: chiều cao, chiều rộng và chiều sâu, khác biệt so với các mạng neuron truyền thống chỉ có một chiều Mạng neuron áp dụng hai định nghĩa quan trọng là liên kết cục bộ và chia sẻ tham số Những khái niệm này đóng vai trò quan trọng trong việc giảm số lượng trọng số cần huấn luyện, từ đó tăng tốc độ tính toán của mạng [24]
Hình 2.17: Các tầng trong CNN là 3 chiều
Mô hình mạng neuron tích chập
Xây dựng kiến trúc của mạng neuron tích chập phải có ba tầng chính: Tầng tích chập, tầng gộp và một tầng nữa là tầng được kết nối đầy đủ Trong mô hình mạng này các tầng hoạt động theo một cách nhất định để trích và xử lý thông tin ảnh đầu vào Tầng tích chập thực hiện phép tích chập lặp lại trên ảnh đầu vào, tìm ra những đặc điểm quan trọng của ảnh Tầng gộp sẽ có nhiệm vụ giảm kích thước của ảnh nó sẽ giúp giảm chi phí tình toán Ảnh được truyền qua các tầng tích chập để trích xuất thông tin, ma trận tính toán sẽ
31 được lan truyền qua các tầng gộp để giảm kích thước của dữ liệu Tầng tích chập với tầng gộp có thể lặp lại nhiều lần trong mạng để tang khả năng học và trích xuất đặc trưng từ dữ liệu Dữ liệu được lan truyền qua tầng kết nối đầy đủ để tính xem ảnh đó chứa đối tượng gì Tầng này hoạt động giống như các neuron thông thường dùng để xử lý thông tin trích từ ảnh qua các tầng trước đó [24]
Hình 2.18: Cấu trúc mạng CNN
Tầng tích chập (Convolutional Layer)
Tầng tích chập là một thành phần chính trong mạng neuron tích chập (CNN) và nó chịu trách nhiệm chính trong việc trích xuất các đặc trưng từ dữ liệu đầu vào như hình ảnh
Tầng tích chập sử dụng các bộ lọc, còn được gọi là kernel hoặc filters để thực hiện phép tích chập trên dữ liệu đầu vào Mỗi bộ lọc có kích thước nhỏ hơn dữ liệu đầu vào và được di chuyển qua dữ liệu đầu vào để thực hiện phép tích chập Phép tích chập tính toán tổng trọng số của các phần tử trong bộ lọc nhân với các giá trị tương ứng trong dữ liệu đầu vào
Kết quả của phép tích chập là một bản đồ đặc trưng hay còn gọi là feature map, được tạo ra bằng cách nhấn mạnh các đặc điểm quan trọng trong dữ liệu đầu vào Mỗi bộ lọc tạo ra một feature map riêng và CNN thường có nhiều bộ lọc để trích xuất nhiều đặc trưng khác nhau từ dữ liệu
Sau khi tích chập được thực hiện, một hàm kích hoạt thường được áp dụng lên mỗi phần tử của feature map để thêm tính phi tuyến tính vào mô hình Các hàm kích hoạt phổ biến như ReLU (Rectified Linear Unit) thường được sử dụng trong tầng tích chập để kích hoạt các đặc trưng và loại bỏ các giá trị âm [24]
Hình 2.19: Tích chập ma trận
Mặc dù đã được liên kết cục bộ và chia sẻ tham số nhưng lượng tham số trong mạng neuron vẫn còn quá lớn Chính vì thế, mạng neuron đưa các tầng gộp vào mạng Tầng gộp giúp bớt đi kích cỡ hình ảnh sau khi thực hiện tầng tích chập, giúp giữ lại các đặc điểm và tính chất nổi bật của ảnh không làm ảnh hưởng đến các yếu tố quan trọng của ảnh và có thể giảm thời gian tính toán trong mạng neuron Hàm max được sử dụng để lấy mẫu xuống cho tầng trước Ở trên những tầng trước đó thì tầng gộp đều hoạt động một cách độc lập và có thể đặt lượng pixel khi SSD di chuyển bước nhảy như làm với tầng tích chập
Trong một mạng của CNN, sau khi các đặc trưng đã được trích xuất bởi các tầng tích chập thì các feature map này sẽ được đưa vào tầng gộp Giả sử như một feature map có kích thước là 𝑊 × 𝐻 vậy khi áp dụng một tầng gộp với kích thước cửa sổ là 2 × 2 và bước nhảy là 2 thì kết quả ở đầu ra sẽ là một feature map mới có kích thước là 𝑊
2 Phép gộp này sẽ chọn giá trị lớn nhất hoặc trung bình từ mỗi cửa sổ 2 × 2 Chính vì thế giảm kích thước feature map những vẫn giữ lại các đặc trưng quan trọng [24]
Hình 2.21: Bản đồ độ phân giải thấp khi phát hiện đối tượng có tỷ lệ lớn
Tầng kết nối đầy đủ (Fully – connected Layer)
Tầng kết nối, hay còn gọi là tầng kết nối đầy đủ là một thành phần cơ bản trong các mạng neuron sâu Nó đóng vai trò quan trọng trong việc kết hợp và diễn giải các đặc trưng đã được trích xuất từ các tầng trước đó để đưa ra quyết định cuối cùng, chẳng hạn như phân loại hoặc dự đoán Trong tầng kết nối đầy đủ, mỗi neuron được kết nối với tất cả các neuron trong tầng liền trước Điều này có nghĩa là mỗi neuron trong tầng kết nối đầy đủ nhận đầu vào từ tất cả các neuron của tầng trước đó và áp dụng một phép biến đổi tuyến tính theo trọng số đã học, sau đó là một hàm kích hoạt phi tuyến [24]
Hình 2.22: Tầng kết nối đầy đủ
2.7.2 Kiến trúc của mô hình mạng SSD
Mô hình SSD được xây dựng trên cơ sở một mạng nơ-ron tích chập tiêu chuẩn, thường là VGG16, và mở rộng thêm các tầng để thực hiện nhiệm vụ phát hiện đối tượng Cấu trúc này có thể được chia thành hai phần chính: mạng cơ sở (base network) và các tầng
Ngôn ngữ lập trình Python và thư viện OpenCV
2.8.1 Ngôn ngữ lập trình Python
Python là một ngôn ngữ lập trình rất phổ biến ngày nay, được sử dụng trong nhiều lĩnh vực như môi trường học hoặc là các dự án phần mềm lớn Ngôn ngữ này phát triển để hỗ trợ nhiều ứng dụng khác nhau như các chương trình chạy trên desktop, server và lập trình ứng dụng web Python khá được ưa chuộng trong việc xây dựng các chương trình trí tuệ nhân tạo như machine learning
Khi mới bắt đầu, Python được phát triển chạy trên nền Unix nhưng về sau đã mở rộng để có thể sử dụng và chạy trên mọi hệ điều hành Python được tạo ra vào 1990 và phát triển trong dự án mã nguồn mở, được quản lý bởi tổ chức Python Software Foundation Mặc dù có nhiều đóng góp từ nhiều cá nhân, nhưng Guido van Rossum vẫn giữ vai trò chủ chốt trong việc quyết định hướng phát triển của ngôn ngữ này [27]
Hình 2.32: Ảnh hưởng phi tuyến ở lớp bottleneck
Các tính năng của Python:
- Miễn phí, mã nguồn mở: Python là một mã nguồn mở giúp người sử dụng được phần mềm hoặc chương trình được viết bởi Python hoặc thay đổi mã nguồn tùy theo cách ta sử dụng Python có thể sử dụng một cách thoải mái hoặc sử dụng nó với mục đích thương mại Python là một ngôn ngữ phổ biến nên thường được cập nhập liên tục để phát triển
- Ngôn ngữ lập trình đơn giản, dễ đọc: Nếu so sánh Python với C+, Java hoặc C# thì nó giúp cho người đọc và người viết lập trình dễ hiểu hơn Vì Python có tính đa dạng nên nó khiến cho việc lập trình trở nên thú vị và hấp dẫn hơn giúp cho lập trình viên tập trung vào việc xử lý hơn thay vì suy nghĩ về cú pháp
- Hướng đối tượng: Khi ta tạo ra các đối tượng ta có thể chia nhỏ một vấn đề lớn thành những phần nhỏ thông qua lập trình hướng đối tượng Nó giúp ta giải quyết vấn đề trực quan hơn
- Thư viện tiêu chuẩn lớn: Ta có thể lập trình Python trở nên dễ dàng hơn, thư viện
Python sẽ kiểm tra và đảm bảo chúng không có lỗi trong quá trình code của chúng ta [28]
- Viết ứng dụng web: Python giúp ta xây dựng các ứng dụng web với chức năng mở rộng thông qua việc sử dụng các framework và nội dung có sẵn trong Python Ứng dụng web phổ biến mà có thể sử dụng bao gồm Django, Flask
- Dạy lập trình: Ở nhiều công ty hoặc trường đại học, cao đẳng thường dùng ngôn ngữ lập trình Python để bắt đầu và tạo nền tảng cho học viên bởi vì tính năng của nó và những cú pháp đơn giản cho người sử dụng
- Tạo phần mềm: Python là một ngôn ngữ tuyệt vời để tạo ra các bản mẫu thử nghiệm trước khi đưa vào sử dụng thực tiễn mặc dù chậm hơn nếu so sánh với C++ hoặc Java [28]
OpenCV là một thư viện với nguồn mở được sử dụng nhiều và đứng đầu trong lĩnh vực ứng dụng thị giác máy tính và các ứng dụng xử lý ảnh Nó được phát hành và phát triển đầu tiên bởi Intel năm 1999, OpenCV là thư viện hầu như không thể thiếu trong những nghiên cứu và phát triển phần mềm có liên quan đến thị giác máy tính, từ nhận diện đối tượng đến xử lý ảnh y tế, từ nhận diện khuôn mặt đến xử lý video
OpenCV được viết bằng ngôn ngữ lập trình C++ và có các giao diện cho Python, Java và MATLAB, giúp nó trở thành một lựa chọn phổ biến cho các nhà phát triển trên nhiều nền tảng và ngôn ngữ lập trình [29]
Với hành trăm thuật toán xử lý ảnh và thị giác máy tính, OpenCV cung cấp một loạt các tính năng mạnh mẽ bao gồm:
- Xử lý ảnh cơ bản: Các phép biến đổi ảnh, lọc thấp và cao làm nổi bật cảnh, làm mịn ảnh, biến đổi hình dạng và cắt ảnh
- Nhận diện đối tượng: Phát hiện khuôn mặt, phân loại đối tượng, theo dõi đối tượng và nhận diện vị trí vật thể trong ảnh và video
- Xử lý video: Phân tích và xử lý video, theo dõi chuyển động, phát hiện và theo dõi đối tượng trong video, xẻ lý luồng video theo thời gian thực
- Xử lý ảnh y tế: Phân tích và xử lý hình ảnh y tế, bao gồm việc phát hiện bệnh, phân loại vùng ảnh y tế và phân tích hình ảnh y tế
- Thị giác máy tính: Xử lý ảnh từ camera và cảm biến, tính toán định vị và theo dõi, ứng dụng trong thị trường năng lượng
Hình 2.34: Ứng dụng OpenCV trong định vị hình ảnh
Các module dùng trong OpenCV
- Core functionality (core): Chứa các cơ chế cơ bản nhất của OpenCV, bao gồm cấu trúc dữ liệu cơ bản như mảng đa chiều Nó cũng xác định những chức năng cần thiết cho những module khác
- Image Processing (imgproc): Module này được sử dụng để thực hiện các thao tác xử lý hình ảnh như lọc ảnh tuyến tính và phi tuyến, biến đổi hình dạng, thay đổi không gian màu, xây dựng biểu đồ và những thao tác khác có liên quan
- Video Analysis (video): Module này cho phép phân tích video, bao gồm các chức năng như dự đoán chuyển động, phân tách nền ảnh và các phép toán theo dõi đối tượng
- 2D Features Framework (features2d): Module này giúp phát hiện các đặc điểm nổi bật trong hình ảnh, truy xuất thông tin và so khớp thông tin
- Ngoài ra, còn có nhiều module khác với nhiều tính năng đa dạng, như FLANN và Google test wrapper [30]
OpenCV có điểm hạn chế khi những thư viện của nó chỉ có thể hỗ trợ tính năng cụ thể cho một công việc nhất định Trong khi đó, những công cụ ngày nay thường được đa dạng hóa các tính năng, hỗ trợ người dùng thuận tiện trong việc nghiên cứu và phát triển
Các ứng dụng của OpenCV
Tổng quan về phần cứng
2.9.1 NVIDIA Jetson nano Developer Kit B01 Để triển khai mô hình SSD-Mobilenet v2, cần một máy tính có khả năng tính toán cao, CPU đa nhân để thực hiện đa tiến trình song song, đặc biệt máy tính phải có GPU để hỗ trợ tính toán cùng với CPU, cũng như chạy các phần mềm, trình điều khiển cho mô hình và nhỏ gọn để phù hợp với việc lắp đặt lên xe Sau khi tìm hiểu và nghiên cứu, nhóm đã lựa chọn Nvidia Jetson Nano, một máy tính nhúng, để có thể thỏa mãn các yêu cầu trên
NVIDIA Jetson Nano là một máy tính nhúng mạnh mẽ được phát triển bởi NVIDIA, chuyên dùng cho các ứng dụng trí tuệ nhân tạo và machine learning Với kích thước gọn nhẹ Jetson Nano được thiết kế để đáp ứng nhu cầu tính toán cao và hiệu suất đồng thời tiết kiệm năng lượng Với CPU ARM Cortex-A57 quad-core 64-bit và GPU NVIDIA Maxwell có 128 nhân CUDA, Jetson Nano cung cấp khả năng xử lý mạnh mẽ cho các ứng dụng AI và học máy Trang bị 4GB bộ nhớ RAM LPDDR4,kết nối Wi-Fi và Bluetooth ,các cổng kết nối đa dạng như HDMI, USB, GPIO, và CSI (Camera Serial Interface) [31]
Hình 2.36: Jetson Nano Developer Kit
Hình 2.37: Mặt trước và sau của Jetson Nano Developer Kit B01
Bảng 2.4: Thông số kỹ thuật của Jetson Nano Developer Kit
Hình 2.38: Cấu tạo của Jetson Nano Developer Kit B01
Camera Raspberry Pi được tạo ra là dành riêng cho việc ứng dụng vào những bo mạch Trong đó, Raspberry Pi Camera Module V2 là một phiên bản khá phổ biến trong các ứng dụng
49 Được phát triển bởi Raspberry Pi Foundation, Camera Module V2 là một module camera chất lượng cao, nhỏ gọn và dễ sử dụng, được tích hợp cùng với cảm biến Sony IMX219 Có mức độ phân giải 8 megapixel và có thể quay video với chất lượng Full HD 1080p, sử dụng cáp kết nối qua cổng CSI Camera Module V2 cho phép người sử dụng có thể chụp ảnh và quay những video với chất lượng sắc nét và chi tiết rõ ràng
Với ống kính cố định, đi kèm với một loạt tính năng điều chỉnh như tiêu cự và tiêu điểm, cho phép người dùng tinh chỉnh góc chụp và độ nét một cách linh hoạt Điều này làm cho camera này trở thành một công cụ lý tưởng cho nhiều phần mềm hoặc ứng dụng, bao gồm việc giám sát, nhận diện vật thể, quay phim, và nhiều ứng dụng sáng tạo khác
Với khả năng tích hợp với các thiết vị dễ dàng và kêt nối với các dự án Raspberry
Pi, Camera Module V2 là một phụ kiện quan trọng và hữu ích cho những nhà phát triển ứng dụng và người học tập về công nghệ [32]
Bảng 2.5: Thông số kỹ thuật của Camera Raspberry Pi v2
RPLIDAR A1M8 là một cảm biến LiDAR có hiệu suất ổn định, phù hợp cho các dự án xe tự lái và các ứng dụng về nhận diện môi trường RPLIDAR A1M8 có khả năng chính xác cao trong việc tạo ra bản đồ không gian 3D và phát hiện vật thể xung quanh một cách chính xác
Với góc quét rộng lên đến 360 độ, cảm biến này có khả năng quét môi trường xung quanh một cách hoàn toàn và mang tính liên tục Điều này đã giúp cho việc xác định chính xác vị trí và di chuyển trở nên chính xác hơn trong các ứng dụng xe tự lái
RPLIDAR A1M8 được trang bị công nghệ quét LiDAR tầm xa, cho phép nó phát hiện vật thể từ xa và đo lường khoảng cách một cách chính xác Điều này đã giúp cho nó trở thành một phần quan trọng trong việc xây dựng những ứng dụng hệ thống điều khiển tự động và tránh vật cản
Có thể kết nối thông qua cổng USB, RPLIDAR A1M8 nó dễ dàng kết hợp vào các ứng dụng hoặc nghiên cứu khác nhau Lidar đã trở thành một lựa chọn phổ biến cho những nhà phát triển phần mềm và kỹ sư trong việc phát triển các ứng dụng về nhận diện môi trường [33]
Bảng 2.6: Thông số kỹ thuật RpLidar A1M8
2.9.4 Nguồn Ắc quy GS 12V 45Ah chính là một lựa chọn quan trọng và có mức tin cậy cao đối với hệ thống điện Với dung lượng 45Ah và điện áp 12V, nó cung cấp khả năng cung cấp nguồn điện ở mức ổn định và mang tính liên tục tới các thiết bị Nó được thiết kế để có thể đáp ứng các nhu cầu đa dạng từ các ứng dụng xe hơi, xe máy và các hệ thống cung cấp nguồn năng lượng dự phòng Nó có thể cung cấp tuổi thọ dài và hiệu suất ổn định, sử dụng trong suốt thời gian dài mà không cần phải lo lắng về việc mất điện đột ngột
Bảng 2.7: Thông số kỹ thuật bình ắc quy GS
Hình 2.41: Bình ắc quy khô GS 12V
Bênh cạnh đó cần sử dụng mạch hạ áp để có thể điều chỉnh mức điện áp cung cấp về mức điện áp phù hợp để cung cấp nguồn cho hệ thống
Bảng 2.8: Thông số kỹ thuật của mạch Buck hạ áp
Màn hình 7 inch LCD (H) 1024x600 IPS HDMI là một trong những lựa chọn khá phổ biến cho các phương án điện tử tự chế hoặc các ứng dụng đòi hỏi màn hình ngoại vi với cấu tạo nhỏ gọn nhưng có độ phân giải cao Với độ phân giải 1024x600 và công nghệ IPS (In-Plane Switching) nó cung cấp cho ta những hình ảnh sắc nét và chất lượng màu sắc rõ ràng với những góc nhìn rộng Màn hình LCD thích hợp cho việc hiển thị những hình ảnh, video hoặc những nội dung đa phương tiện với chi tiết và màu sắc chính xác
Với kết nối HDMI, màn hình này dễ dàng kết nối với các thiết bị như máy tính nhúng Jetson Nano, máy chơi game và nhiều thiết bị khác Điều này làm cho nó trở thành một lựa chọn lý tưởng cho các dự án DIY (làm đồ tự chế) và các ứng dụng cần màn hình ngoại vi
Với kích thước nhỏ gọn, độ phân giải cao và khả năng kết nối linh hoạt, màn hình 7 inch LCD (H) 1024x600 IPS HDMI là một phụ kiện hữu ích và đa dạng cho nhiều dự án điện tử và ứng dụng sáng tạo [34]
Bảng 2.9: Thông số kỹ thuật màn hình LCD
Hình 2.43: Màn hình LCD 7 inch
Hình 2.44: Nút ấn và cổng kết nối trên LCD
Module Relay 2 Kênh 5V thường rất thích hợp với những ứng dụng trong điều khiển các đồ dùng điện tử, 2 thiết bị khác nhau có thể được điều khiển bằng 2 kênh của module, dùng để kích tín hiệu cho nhiều thiết bị điện tải cao, trong đó có còi với nguồn và cường độ dòng điện cao mà jetson nano quá tải so với jetson
Tổng quan về phần mềm
JetPack SDK của NVIDIA là một giải pháp khá toàn diện đối với việc phát triển các ứng dụng của trí tuệ nhân tạo (AI) Nó được phát triển bởi nhà phát hành NVIDIA, JetPack SDK cung cấp một loạt các công cụ và thư viện hỗ trợ cho các mô-đun Jetson và nhà phát triển Nó bao gồm phiên bản mới nhất của tệp chương trình điều khiển Jetson Linux đối với hệ điều hành Linux, cùng với các thư viện và API CUDA-X được tối ưu hóa cho Deep Learning, Computer Vision, Accelerated Computing và Multimedia JetPack SDK cung cấp cả các mẫu mã, tài liệu và công cụ hỗ trợ cho cả nhà phát triển trên máy tính chủ và bộ công cụ, đồng thời hỗ trợ các SDK cao cấp như DeepStream để phân tích video trực tuyến
NumPy là một thư viện Python quan trọng cho tính toán khoa học, là viết tắt của Numeric Python hoặc Numerical Python Thư viện cung cấp các đối tượng mảng đa chiều và một loạt các quy trình nhanh chóng hoạt động trên các mảng này.NumPy có các tính năng như tính toán, thuật toán logic, thao tác hình dạng, sắp xếp, lựa chọn, I/O, biến đổi Fourier rời rạc, đại số tuyến tính cơ bản, hoạt động thống kê cơ bản, mô phỏng ngẫu nhiên và nhiều tính năng khác
RPLidar là một thư viện của ngôn ngữ Python nó thường được sử dụng để tương tác với các cảm biến Lidar Thư viện RpLidarn này có thể cung cấp cho người dùng các chức năng cho việc kết nối, nhận thông tin và điều khiển Lidar của dòng RPLidar, thu thập dữ liệu từ môi trường xung quanh nó bằng cách sử dụng công nghệ Lidar Lidar là một thiết bị cảm biến nó thường xuyên được sử dụng, ứng dụng rộng trong các ứng dụng thực tế như đo khoảng cách vật thể, định vị vị trí và định hình đối tượng trong không gian 3D
Với thư viện RPLidar, kết nối và điều khiển cảm biến Lidar bằng Python, thu thập dữ liệu và thông tin về môi trường xung quanh và sử dụng chúng ở trong nhiều ứng dụng thực tế như robot, xe tự hành, hay bất kỳ ứng dụng nào khác mà yêu cầu thông tin về môi trường xung quanh Thư viện này cung cấp các hàm để bắt đầu, dừng và thu thập dữ liệu từ cảm biến, cũng như xử lý dữ liệu thu được từ Lidar
Jetson.GPIO là một thư viện GPIO cho các bo mạch Jetson của NVIDIA gồm Jetson Nano, Jetson Xavier NX và các phiên bản khác Thư viện này cung cấp cho người dùng một giao diện tối ưu, đơn giản để tương tác với các chân GPIO trên bo mạch Jetson, cho phép điều khiển các tín hiệu vào và ra, như cảm biến, đèn LED, hoặc các thiết bị khác được kết nối Điều này giúp cho việc phát triển phần mềm hoặc các ứng dụng IoT hay là các dự án nhúng trên Jetson trở nên dễ dàng hơn Với thư viện Jetson.GPIO nó thường được ứng dụng ở trong các dự án robotics, computer vision, và machine learning trên nền tảng Jetson
Thư viện threading trong Python cung cấp các công cụ để tạo và quản lý các luồng (threads) trong một chương trình Python Luồng cho phép các tác vụ chạy đồng thời, giúp tăng hiệu suất và tận dụng tối đa nguồn lực của hệ thống
Sử dụng thư viện threading có thể tạo ra các luồng mới, điều khiển luồng chạy và tương tác giữa các luồng khác nhau Nó hữu ích với các ứng dụng mà bạn muốn thực hiện các tác vụ đồng thời, như là xử lý các thông tin dữ liệu ở các nguồn tín hiệu khác nhau, giao tiếp mạng, hoặc xử lý sự kiện người dùng mà không làm ảnh hưởng đến hiệu suất hay thời gian đáp ứng của chương trình
Với threading, chúng ta có thể tạo thêm những luồng mới bằng cách kế thừa từ lớp Thread và sau đó ghi đè lên phương thức run(), sau đó gọi hàm start() để bắt đầu làm việc với luồng Bên cạnh đó, thư viện cũng có thể cung cấp những công cụ để quản lý trạng thái của luồng, chờ kết thúc của các luồng và giao tiếp giữa các luồng thông qua các cơ chế như khóa (lock) và điều kiện (condition)
THUẬT TOÁN HỆ THỐNG VÀ THIẾT KẾ LẬP TRÌNH
Tổng quan
Thông qua nghiên cứu cơ sở lý thuyết, nhóm lựa chọn sử dụng mô hình SSD- MobilenetV2 để thiết kế và chế tạo hệ thống phát hiện vật cản và cảnh báo cho người lái xe Từ thông tin đầu ra của sản phẩm, sau đó kiểm tra vật cản có nằm trong vùng cảnh báo, tốc độ và khoảng cách có nằm ở khoảng an toàn không sau đó sẽ đưa ra cảnh báo thông qua còi buzzer và màn hình hiển thị
Sau khi hoàn thiện, nhóm tiến hành lắp đặt và thử nghiệm để kiểm tra hệ thống đáp ứng được mục tiêu đã đưa ra hay không? Hệ thống có bị trễ và nhiễu hay không? Kiểm tra xem cảnh báo có giúp người lái xử lý kịp thời hoặc an toàn không và từ đó điều chỉnh để có thể hoàn thiện hệ thống chính xác hơn.
Thiết lập ban đầu
- Tốc độ xe khoảng 0-30 km/h
- Vùng và khoảng cách cảnh báo tạo ra mang tính chất tương đối (dựa vào góc ở đầu xe) Đầu tiên, hệ thống sẽ thu thập dữ liệu đầu vào từ cảm biến tốc độ xe, hình ảnh phía trước camera và khoảng cách từ Lidar Hệ thống sẽ phân tích và nhận diện các vật thể khác nhau như người đi bộ, phương tiện tham gia giao thông như xe máy, xe ô tô, xe tải,…Sau khi phát hiện hệ thống sẽ tiếp đến giai đoạn xử lý thông tin, nếu đối tượng không nằm trong vùng cảnh báo nguy hiểm sẽ quay lại bước đầu và thu thập tín hiệu tiếp tục, nếu đối tượng nằm trong khung cảnh báo nhưng tốc độ xe và khoảng cách nhận được từ lidar nằm trong vùng an toàn hệ thống vẫn sẽ không cảnh báo Ở bước xử lý này nếu vật thể nhận diện nằm trong vùng cảnh báo và khoảng cách không an toàn hệ thống sẽ gửi tín hiệu đến còi buzzer và hiển thị cảnh báo nguy hiểm trên màn hình LCD để người lái xe có thể kịp thời xử lý tình huống
Hình 3.1: Sơ đồ phát hiện vật cản, đo khoảng cách và cảnh báo cho người lái xe
Xử lý thông tin từ camera
Sự kết hợp giữa mạng gốc Mobilenet V2 và nhận diện vật thể SSD là SSD- Mobilenet V2 có thể đạt được tốc độ xử lý và độ chính xác cao khi chạy trên Jetson Nano
Sử dụng mô hình mạng SSD-MobilenetV2 và ngôn ngữ Python để xử lý
Hình 3.2: Lưu đồ nhận diện vật cản trên Python
3.3.2 Đọc thông tin đầu vào từ camera Ảnh được chụp từ camera Raspberry Pi V2 Đọc thông tin camera trên Python ta sử dụng hàm VideoCapture trên thư viện OpenCV
Hình 3.3: Khởi tạo camera đọc thông tin hình ảnh đầu vào từ Camera
- Nvarguscamerasrc: sử dụng để truy cập dữ liệu từ camera trên Jetson nano
- Memory:NVMM: chỉ định dữ liệu được sử lý trong bộ nhớ GPU(NVMM)
- Width = 940, height = 480: mở luồng camera với chiều dài 940 và chiều rộng 480
- Format=(string)NV12 :định dạng màu của hình ảnh, NV12
- Framerate=(fraction)60/1: tỷ lệ khung hình yêu cầu, 60 khung hình mỗi giây
- Nvvidconv flip-method=2: thực hiện các biến đổi trên dữ liệu video,là phương thức lật hình ảnh (flip method) Giá trị flip-method=2 chỉ định hình ảnh sẽ được lật theo chiều dọc
- Video/x-raw, format=(string)BGRx: định dạng dữ liệu hình ảnh sau khi biến đổi, ở đây là biến đổi BGRx
- Videoconvert plugin: chuyển đổi định dạng hình ảnh từ BGRx sang BGR
- Video/x-raw, format=(string)BGR: định dạng cuối cùng của dữ liệu hình ảnh
- Appsink sử dụng để kết thúc pipeline và cung cấp dữ liệu cho ứng dụng bằng cách sử dụng API Trong trường hợp này, là OpenCV
3.3.3 Tiền xử lý ảnh đầu vào
Ban đâu ta tạo ra 2 Class là Point va Zone giúp cho phần xử lí
Class Point là thuộc tính lấy tọa độ x và y khi có giá trị nhận vào Ở def “getPoint” là lấy tọa độ chính nó và def “translate” là hàm dịch chuyển điểm đã chọn đi theo ý muốn
62 Ở Class Zone thì là thuộc tính vẽ tạo vùng khi có 2 giá trị tọa độ gồm điểm góc trái trên và góc phải phía dưới
Hình 3.5: Tạo class Zone Ở đây ta có def “getCenterPoint” dùng để lấy điểm trung tâm của vùng
Hình 3.6: Định nghĩa getCenterPoint() Def “getWidth” và “getHeight” dùng để lấy chiều ngang và chiều cao của Zone
Hình 3.7: Định nghĩa chiều ngang và chiều cao Def “isOverlap” dùng để tính toán 1 thuật toán nhỏ để đạt điều kiện cảnh báo và hiệu chỉnh độ nhạy
Hình 3.8: Định nghĩa isOverlap() trong class Zone
Trong hàm này, nó giúp nhận diện vật thể có nằm trong vùng nguy hiểm không với độ nhạy có thể tinh chỉnh
Hình 3.9: Nhận diện cảnh báo va chạm
Thuật toán: (a + b > c) - adjustment và (x + y > z) - adjustment thì xảy ra sự chồng lên nhau giữa khung nhận diện của vật thể và vùng cảnh báo va chạm (nhóm để adjustment
= 5, nghĩa là khi chồng lên nhau quá 5 pixel thì thuật toán nhận diện là TRUE, trả hiệu về để bộ điều khiển xử lí Ở def “draw_warning_zone” dùng để vẽ vùng cảnh báo khi có 2 điểm
Hình 3.10: Định nghĩa vẽ vùng cảnh báo
3.3.4 Phát hiện vật thể Để có thể phát hiện được vật thể, ta dùng mô hình SSD-Mobilenet v2 và để gọi mô hình, ta dùng dòng lệnh sau:
Hình 3.11: Mô hình phát hiện vật thể
SSD-mobilenet v2 lấy dữ liệu và nhận diện với ngưỡng 50% Do ảnh được thu nhận từ Open CV do thư viện Numpy không đồng nhất với phương pháp net.Detect() nên ta cần chuyển đổi định dạng sang cuda
Hình 3.12: Chuyển đổi định dạng ảnh
Xử lý thông tin từ RpLidar A1M8
RpLidar A1M8 có thể kết nối với Jetson nano thông qua cổng USB, Lidar quét 360° là đo khoảng cách sau đó trao đổi thông tin với Jetson nano và camera thông qua code Python:
Hình 3.13: Định nghĩa quét và lấy dữ liệu Lidar Ở đây lidar = RPLidar(‘/dev/ttyUSB0’) là khởi tạo Lidar và ta mở kết nối thiết bị cảm biến với cổng “/dev/ttyUSB0” để kết nối với hệ thống
Dùng vòng lặp for để luôn quét xung quanh, mỗi lần quét sẽ cung cấp cho ta 3 giá trị (quality, angle, distance) trong đó ta cần sử dụng 2 giá trị là angle và distance Mỗi giá trị góc sẽ cho ra giá trị khoảng cách tương ứng Do cảm biến này xoay 360 độ, ta chỉ cần lấy giá trị của 10 cặp giá trị từ góc 175 – 185 độ nên dùng lệch if để giới hạn giá trị cần thiết lại và cho vào danh sách “lidar_data”
Khi dừng kết nối với Lidar, khối finally giúp Lidar ngắt và ngừng quét.
Xử lý thông tin từ cảm biến tốc độ Hall 3144E
Cảm biến Hall thu thập thông tin và sau đó giao tiếp với Jetson nano thông qua cổng GPIO để hệ thống xử lý tính toán được tốc độ thực tế của xe
Hình 3.14: Định nghĩa và khởi tạo chân GPIO cho cảm biến Hall
Hình 3.15: Khởi tạo, thiết lập chân và chức năng ghi nhận
Theo code, khi nam châm đi ngang cảm biến hall, nó sẽ gửi tín hiệu ở mức HIGH và hàm callback=hall_sensor_callback và khi nó biến đếm (pulse_count) sẽ đếm thêm 1 đơn vị.
Xử lý cảnh báo
Trước khi xử lí cảnh báo, ta cần khai báo một số giá trị có thể biến đổi tuy thuộc theo những tình huống, trường hợp cụ thể:
Hình 3.16: Khai báo thêm giá trị
Trong vòng lặp while True, ta sử dụng các lệnh, bước sau:
+ Đọc giá trị từ camera thu nhận được
+ Vẽ khung cảnh báo để nhận diện, hiển thị lên màn hình tốc độ từ tính toán của giá trị cảm biến Hall
+ Xử lí ảnh để phát hiện vật thể (chỉ nhận diện các phương tiện và người)
+ Lấy giá trị khoảng cách vật thể và vận tốc xe từ LIDAR và cảm biến tốc độ + Tính toán và phát cảnh báo khi có nguy cơ va chạm
Hình 3.17: Đọc giá trị từ camera
Vẽ khung với các điểm ta tự tạo để phù hợp với khung hình và vật cản phía trước
Hình 3.18: Vẽ vùng cảnh báo trên khung img
Hình 3.19: Phát hiện vật thể
Biến d phía trong biến detections để định dạng vật và tọa độ của chúng trên khung hình giúp đóng khung và so sánh
Do nhận diện của camera bao gồm nhiều hơn các vật cản, chướng ngại vật có thể gây nguy hiểm trên đường nơi ta tham gia giao thông, nên ta cần giới hạn lại các vật cản cần nhận diện để in và cảnh báo cho chúng ta:
Hình 3.20: Giới hạn vật cản
Hình 3.21: Nhận diện tên vật cản và hiển thị lên khung ảnh Ở đây ta đã khai báo các vật trong “object_of_interest” bao gồm: ô tô con, xe tải, xe buýt, người, xe máy, xe đạp Nên chỉ khi có những vật cản đó thì hệ thống mới tiếp tục làm việc “Rectangle” và “putText” làm nhiệm vụ đóng ô bao quanh vật cản nhận diện được và hiển thị tên vật cản ngay ô bao quanh
Hình 3.22: Lấy giá trị Lidar và hiển thị lên khung ảnh
Trong danh sách lidar_data ở góc quét 175-185: Mỗi lần quét ta có tối đa 11 giá trị khoảng cách, ta gán giá trị “distance_camera” là giá trị nhỏ nhất trong danh sách của mỗi lần quét Do góc quét ở phía trước xe và vật cản gần nhất là vật cản gây nguy hiểm chính cho sự an toàn của ta, nên trong thuật toán chọn giá trị thấ nhất để tính toán
Hình 3.23: Gán giá trị thời gian
Khi bắt đầu, gán start_time là giá trị thời gian ngay thời điểm đó Sau khoảng thời gian thực chạy, sẽ có thời gian chênh lệch là “elapsed_time”
Trong khoảng thời gian chênh lệch đó, đếm số lần cảm biến hall gửi tín hiệu (pulse_count) chia khoảng thời gian chênh lệch và số lượng nam châm trên khung xoay để có được tốc độ góc của bánh xe
Sau khi có tốc độ góc của bánh xe, ta lấy thêm giá trị bán kính bánh xe để có tốc độ dài của xe và đổi sang km/h để hiển thị
Hình 3.24: Tính tốc độ bánh xe
Ta biết công thức tính quãng đường phanh khi có vận tốc và gia tốc phanh:
Hình 3.25: Tính quãng đường phanh
Khi đã có các giá trị nhận vào tự các cảm biến, ta bắt đầu tính toán và so sánh chúng
Hình 3.26: So sánh khoảng cách và hiển thị cảnh báo bằng hình ảnh, âm thanh
Khi có vật thế nằm trong khung nhận diện phía trước xe và và tốc độ xe lên hơn 20 km/h, hệ thống sẽ so sánh khoảng cách thực tế và khoảng cách an toàn cho tốc độ đó Khi khoảng cách trên thực tế nhỏ hơn so với khoảng cách an toàn, còi hú sẽ cảnh báo người dùng nhờ việc xuất tín hiệu điện tới còi hú và cảnh báo lên màn hình để theo dõi
Sau khi đã đủ điều kiện an toàn trở lại sẽ ngắt tín hiệu điện, còi tắt và hệ thống thực hiện vòng lặp tiếp tục
Trong phần hiển thị tốc độ trung bình lên màn hình, ta cần hiển thị giá trị mượt mà, dễ cho người dùng quan sát (khác với “sp” cần nhanh và liên tục để tính toán, khó cho việc quan sát, theo dõi) nên ta lấy “average_speed” làm giá trị để hiển thị Và ta gán giá trị ban đầu cho average_speed là 0 để khi xe dừng (không đọc được giá trị tốc độ) sẽ hiển thị tốc độ là 0
Hình 3.27: Kiểm tra nếu an toàn thì ngắt tín hiệu
Hình 3.28: Kiểm tra xe đang tăng tốc hay giảm tốc
Phần này giúp hệ thống nhận diện xe đang tăng tốc hay giảm tốc để hiệu chỉnh hệ số giúp độ trễ của phần hiển thị ít hơn
Cuối cùng là hiển thị khung hình ảnh đã thiết lập lên màn hình để có thể theo dõi và thoát hệ thống bằng phím “q”
Hình 3.29: Kết thúc hệ thống
Sơ đồ thiết kế hệ thống cảnh báo tiền va chạm
Hình 3.30: Hộp thiết kế để đựng Jetson nano và mạch hạ áp
Hình 3.31: Sơ đồ khối hệ thống xử lý cảnh báo tiền va chạm
Hình 3.32: Sơ đồ thực tế đã được lắp đặt
(3) Bộ xử lý trung tâm Jetson nano (7) Màn hình LCD
(4) Cảm biến tốc độ Hall
THỰC NGHIỆM VÀ KẾT QUẢ
Thiết kế lắp đặt hệ thống cảnh báo tiền va chạm
Sau khi hoàn tất nghiên cứu và xem xét kết cấu thiết kế của xe thì nhóm đã tiến hành lắp đặt hệ thống lên xe như ảnh ở bên dưới Đặt camera ở vị trí cao để có thể thu nhận hình ảnh rõ ràng và đầy đủ Lidar nhóm thiết kế đặt ở phía dưới camera để có thể thu nhận đúng khoảng cách từ vị trí đầu xe đến vật cản Còi báo âm thanh được gắn trên trục lái để có thể nghe âm thanh cảnh báo rõ Màn hình LCD đặt vị trí chưa được thích hợp nhưng người lái xe vẫn có thể quan sát rõ hình ảnh cảnh báo trên màn hình Sau khi phát hiện nguy hiểm thì xe kích tính hiệu module relay truyền tín hiệu để ngắt nguồn làm giảm tốc độ xe lại
Hình 4.1: Lắp đặt hệ thống lên xe tự thiết kế
(1) Camera Raspberry Pi V2: Theo khảo nghiệm vị trí lắp đặt camera của hệ thống và dựa vào quat sát thực tế thì nhóm tiến hành lắp đặt camera ở vị trí cao để có thể có góc quan sát và thu nhận hình ảnh tốt
(2) Rp Lidar A1M8: Dựa vào khoảng sáng của gầm các loại xe tham gia giao thông hiện nay, vị trí lắp đặt Lidar phải cao hơn khoảng sáng gầm để có thể luôn luôn quét được khoảng cách vật cản
(3) Bộ xử lý trung tâm: Được đặt ở vị trí thuận tiện để thu nhận được tín hiệu từ các loại cảm biến và không gây cản trở cho các hệ thống khác ở trên xe
(4) Cảm biến tốc độ Hall: Lắp đặt ở vị trí bánh xe trước để gần ở vị trí bộ xử lý trung tâm và không làm cản trở sự vận hành của hệ thống
(5) Nguồn ắc quy: Được đặt ở trên sàn xe hoặc có thể di chuyển và đặt ở vị trí phía sau ghế ngồi để người lái có thể ngồi vận hành xe một cách dễ dàng
(6) Còi và đèn: Đặt ở vô lắng nơi có thể thông báo âm thanh rõ ràng và ánh sáng từ đèn có thể giúp người lái dễ dàng quan sát
(7) Màn hình LCD: Vị trí đặt màn hình ở nơi giúp người lái xe có thể dễ dàng nhìn thấy tín hiệu cảnh báo và không bị cản trở tầm nhìn
Sau khi cấp nguồn từ ắc quy thông qua mạch giảm áp điện áp đầu ra được giảm về theo điện áp của Jetson Nano sử dụng Sau đó nguồn sẽ được cung cấp tới các hệ thống khác để có thể hoạt động như Camera, Lidar, màn hình, cảm biến Hall và cói báo Thông tin đầu vào sẽ được nhận từ Camera nhận diện, khoảng cách được nhận từ Lidar và tốc độ được nhận từ cảm biến Hall Tất cả thông tin thu thập được sẽ truyền về bộ xử lý trung tâm là Jetson nano, ở đây nó sẽ nhận diện vật cản và tính toán khả năng xảy ra va chạm và từ đó đưa thông tin cảnh báo lên màn hình và còi cảnh báo.
Thực nghiệm và kết quả
Thực nghiệm mô hình để kiểm tra độ nhạy khi nhận diện vật thể và tốc độ xử lý, cảnh báo của hệ thống với thời gian thực
- Thực nghiệm khả năng nhận diện và đo khoảng cách vật thể
Hình 4.2: Nhận diện vật thể và đo khoảng cách
Hình 4.3: Nhận diện và đo khoảng cách vật thể khi đang di chuyển
Hệ thống nhận diện vật thể người và xe ở phía trước và đo khoảng cách chính xác đến vật cản nhận diện được Ở đây chỉ mới cảnh báo nguy hiểm vì phát hiện vật thể nằm vào khung nguy hiểm nhưng vẫn chưa đưa ra tín hiệu cảnh báo âm thanh hay là tín hiệu phanh vì lúc này xe đang ở tốc độ là 0km/h nên hệ thống chưa cần cảnh báo
Khi tiến hành chạy chương trình và thực nghiệm cho hệ thống chỉ nhận diện vật cản và đo khoảng cách thì hệ thống nhận diện chính xác đến 90% trong tổng số lần chạy thực nghiệm hệ thống và bị lỗi 10% do xác định vật tên vật thể chưa chính xác ngay lập tức
- Thực nghiệm trường hợp vật cản phía trước di chuyển cùng chiều với xe
Hình 4.4: Nhận diện vật cản và đo khoảng cách vật thể di chuyển cùng chiều với xe
Hình 4.5: Cảnh báo nguy hiểm khi vật cản di chuyển cùng chiều với xe
Khi xe đang di chuyển và nhận diện thấy phía trước có vật cản nằm vào vùng nguy hiểm của xe với khoảng cách không đủ an toàn thông qua so sánh khoảng cách tính toán và khoảng cách thực tế đã lập trình cho hệ thống từ đó hệ thống đã đưa ra cảnh báo phanh trên màn hình LCD để giảm tốc độ và kèm theo là âm thanh cảnh báo bên ngoài thông qua còi Sau khi chạy thực nghiệm nhiều lần ở trường hợp này nhận thấy rằng khả năng nhận diện và cảnh báo hoạt động nhạy và có mức độ chính xác hơn 90%, phần còn lại là do lidar xác định khoảng cách chưa chính xác nên hệ thống tính toán chưa đúng dẫn đến việc chưa đưa ra được cảnh báo.
- Thực nghiệm trường hợp vật cản di chuyển ngược chiều với xe
Hình 4.6: Nhận diện và xác định vật cản di chuyển ngược chiều với xe
Hình 4.7: Cảnh báo khi vật cản di chuyển ngược chiều
Hình 4.8: Cảnh báo xảy ra va chạm khi vật cản di chuyển ngược chiều ở phía trước xe
Khi xe đang di chuyển, hệ thống phát hiện vật cản di chuyển ngược chiều với xe, nằm trong vùng nguy hiểm và khoảng cách không đủ an toàn hệ thống cảnh báo tín hiệu còi hú lên và hiển thị cảnh báo phanh trên màn hình LCD Ở trường hợp thực nghiệm này hệ thống đưa ra cảnh báo ở mức độ chính xác trung bình khi xử lý thông tin tính toán chưa tối ưu và xử lý vật cản nằm trong ô cảnh báo vẫn còn sai sót
- Thực nghiệm trường hợp vật cản di chuyển cắt ngang đầu xe
Hình 4.9: Nhận diện vật cản và khoảng cách khi di chuyển ngang đầu xe
Hình 4.10: Cảnh báo xảy ra va chạm khi vật cản di chuyển cắt ngang đầu xe Ở những tình huống xe mới bắt đầu di chuyển hoặc những tình huống có vật cản cắt ngang xe bất ngờ, có thể người lái xe sẽ không tập chung, lúc này hệ thống sẽ xử lý kịp thời cảnh báo âm thanh cho người lái xe và can thiệp tốc độ xe để đảm bảo an toàn
Khả năng xử lý thông tin khi có vật cản cắt ngang đầu xe hoặc vật cản xuất hiện đột ngột vào vùng nguy hiểm rất nhạy, hệ thống lập tức đưa ra cảnh báo rất nhanh và chính xác, bên cạnh đó nếu khoảng cách quá gần lidar không nhận diện được khoảng cách dẫn đến hệ thống không xử lý được và không đưa ra được cảnh báo
- Thực nghiệm trường hợp khả năng nhận diện vật cản khi xe vào cua
Hình 4.11: Nhận diện và đo khoảng cách vật cản khi xe vừa vào cua
Hình 4.12: Cảnh báo xảy ra va chạm khi xe di chuyển vào cua
Khi xe vào cua hệ thống sẽ xử lý sớm những góc khuất so với người lái xe, hệ thống nhận diện vật cản và đưa ra cảnh báo còi và hình ảnh LCD cho người lái xe khi có nguy hiểm và có khả năng xảy ra va chạm Độ chính xác đạt được là khoảng 80% bởi vì khi vào cua tín hiệu tốc độ thất thường nên hệ thống xử lý vẫn còn vài sai sót nên chưa đạt được độ tối ưu cao khi thực nghiệm
Hình 4.13: Kiểm tra độ nhiễu của Lidar
So sánh và đánh giá kết quả
Ở phiên bản cũ khi chạy chương trình thực nghiệm còn bị ngừng chương trình do lỗi âm thanh và độ nhạy chưa được tốt, bên cạnh đó còn thiếu sót một vài thông tin như chưa có thông tin tốc độ xe và khoảng cách tới vật cản Từ những thiếu sót trên nhóm đã cải tiến hệ thống cũ lên có đầy đủ các thông tin và thêm thành phần cảnh báo
Bảng 4.1: So sánh tỷ lệ chính xác ở mỗi trường hợp thực nghiệm
Trường hợp thực nghiệm Số lần thực hiện
Số lần nhận diện chính xác
Số lần xảy ra lỗi
Khả năng nhận diện vật thể 20 19 1 95%
Cảnh báo đối với vật thể di chuyển phía trước đầu xe
Cảnh báo đối với vật thể di chuyển ngược chiều với xe
Cảnh báo đối với vật thể di chuyển cắt ngang đầu xe
Cảnh báo đối với trường hợp xe vào cua
Khi tiến hành chạy thực nghiệm nhiều lần ở mỗi trường hợp để khảo sát mức độ chính xác của hệ thống Ở bảng 4.2 đã đưa ra kết quả xử lý của hệ thống có tỷ lệ chính xác cao khi khả năng nhận diện vật thể, xử lý thông tin ở trường hợp vật thể di chuyển trước đầu xe và vật thể di chuyển cắt ngang đạt mức độ chính xác từ 90% trở lên Trong khi đó cảnh báo vật thể di chuyển ngược chiều với xe và trường hợp khi xe vào cua có kết quả kém hơn là 85% Nhưng nhìn chung tổng quan hệ thống có khả năng nhận diện và xử lý thông tin trung bình ở mức 89%, đạt ở mức tốt đối với một hệ thống còn một số hạn chế về phần cứng
Hình 4.14: Biểu đồ thể hiện tỷ lệ xử lý thông tin chính xác
Khi xét ở từng trường hợp cụ thể khi cho thực nghiệm nhiều lần và nhiều khoảng cách khác nhau để kiểm tra xem mức độ chính xác khi nhận diện và đưa ra cảnh báo
Trường hợp đầu tiên khả năng nhận diện vật thể:
Bảng 4.2: Tỷ lệ chính xác khi thực nghiệm ở nhiều khoảng cách
Hình 4.15: Biểu đồ thể hiện độ chính xác phụ thuộc vào khoảng cách
Trường hợp cảnh báo đối với vật thể di chuyển phía trước đầu xe
Bảng 4.3: Tỷ lệ nhận diện chính xác khi vật thể di chuyển trước xe
Hình 4.16: Biểu đồ tỷ lệ nhận diện chính xác khi vật thể di chuyển trước xe
Trường hợp cảnh báo đối với vật thể di chuyển ngược chiều với xe
Bảng 4.4: Tỷ lệ nhận diện chính xác khi vật thể di chuyển ngược chiều xe
Hình 4.17: Biểu đồ tỷ lệ nhận diện chính xác khi vật thể di chuyển ngược chiều xe
Trường hợp cảnh báo đối với vật thể di chuyển cắt ngang đầu xe
Bảng 4.5: Tỷ lệ nhận diện chính xác khi vật thể di chuyển cắt ngang đầu xe
Hình 4.18: Biểu đồ tỷ lệ nhận diện chính xác khi vật thể di chuyển cắt ngang đầu xe
Trường hợp cảnh báo khi xe di chuyển vào cua
Bảng 4.6: Tỷ lệ nhận diện chính xác khi xe vào cua
Hình 4.19: Biểu đồ tỷ lệ nhận diện chính xác khi xe vào cua
Kết quả của biểu đồ đường nội suy đã cho ta thấy một cái nhìn sâu sắc và toàn diện về mối quan hệ giữa khoảng cách và độ chính xác Sự giảm dần của độ chính xác khi tăng dần khoảng cách ở những biểu đồ thể hiện rõ khi thực nghiệm nhiều lần Mặt khác khi khoảng cách tăng độ nhiễu cũng ảnh hưởng đến độ chính xác của hệ thống Từ đó ta có thể phân tích dữ liệu vào việc thiết kế và cải tiến hệ thống để nâng cao độ chính xác cho hệ thống
Khi đo thông tin khoảng cách với Lidar, kết quả đo được cho thấy còn sai số nhỏ so với khoảng cách thực tế Điều này chứng tỏ tín hiệu quét của Lidar bị nhiễu và khi khoảng cách thực tế càng xa độ nhiễu và sai số càng lớn
Bảng 4.7: Kiểm tra mức độ chính xác khi đo khoảng cách của Lidar
Vật cản Khoảng cách thực tế [m]
Khoảng cách đo được của Lidar [m]
Hệ thống mà nhóm cải tiến đã đáp ứng đầy đủ các thiếu sót so với hệ thống cũ, đáp ứng được đầy đủ các tính năng cảnh báo có trên hệ thống tiền va chạm.Hệ thống sử dụng những thông tin đầu vào để tính toán khả năng xảy ra va chạm và đưa ra cảnh báo đến
82 người lái Hệ thống cũng có độ nhạy cao hơn so với những phiên bản cũ trước đó và có thể ứng dụng linh hoạt vào nhiều mô hình thực tế, nghiên cứu phát triển hoặc dùng để cảnh báo vật cản
Khi so sánh hệ thống với hệ thống trên thị trường đang có hiện nay vẫn còn một vài thiếu sót nhưng bên cạnh đó hệ thống cũng có những điểm mạnh như giá thành rẻ hơn và có màn hình hiển thị rõ hơn Nhận diện và hiển thị được bao quát toàn bộ màn hình khi camera thu nhận thông tin và hiển thị khoảng cách tới vật thể đó Hệ thống cảnh báo nhấp nháy đèn để thu hút sự chú ý để người lái xe biết và xử lý tình huống kịp thời
Bảng 4.8: So sánh phiên bản cũ và bản đã được cải tiến
Tiêu chí so sánh Phiên bản cũ Phiên bản cải tiến
Crash chương trình khi detect Có Không
Xác định đối tượng Có Có Độ nhạy cảnh báo Trung bình Tốt
Thông tin tốc độ Không Có
Tính toán xảy ra va chạm Không Có
Thông tin khoảng cách Không Có
Màn hình hiển thị Nhỏ To, rõ
Thông tin cảnh báo Âm thanh Âm thanh, màn hình, đèn và phanh