1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành

98 179 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng Dụng Xử Lý Ảnh Trong Chạy Theo Làn Đường, Nhận Diện Biển Báo Và Áp Dụng Lên Xe Tự Hành
Định dạng
Số trang 98
Dung lượng 7,27 MB

Cấu trúc

  • Chương 1: TỔNG QUAN (8)
    • 1.1 LÝ DO CHỌN ĐỀ TÀI (8)
    • 1.2 CÁC NGHIÊN CỨU NGOÀI VÀ TRONG NƯỚC (9)
      • 1.2.1 Các nghiên cứu ngoài nước (9)
      • 1.2.2 Các nghiên cứu trong nước (10)
    • 1.3 MỤC ĐÍCH CỦA ĐỀ TÀI (11)
    • 1.4 NHIỆM VỤ VÀ GIỚI HẠN CỦA ĐỀ TÀI (11)
    • 1.5 PHƯƠNG PHÁP NGHIÊN CỨU (11)
  • Chương 2: CƠ SỞ LÍ THUYẾT (12)
    • 2.1 XE TỰ HÀNH (12)
      • 2.1.1 Giới thiệu (12)
      • 2.1.2 Một số công nghệ được sử dụng trên xe tự hành (14)
    • 2.2 PHƯƠNG PHÁP NHẬN DIỆN LANE (16)
      • 2.2.1 Deep learning sử dụng keras và tensorflow (16)
      • 2.2.2 Deep learning sử dụng tensorflow (19)
    • 2.3 GIỚI THIỆU VỀ PYTHON (23)
      • 2.3.1 Giới thiệu (23)
      • 2.3.2 Đặc điểm (23)
    • 2.4 THƯ VIỆN OPENCV (24)
      • 2.4.1 Giới thiệu (24)
      • 2.4.2 Đặc điểm (24)
    • 2.5 TENSORFLOW (25)
      • 2.5.1 Giới thiệu (25)
      • 2.5.2 Đặc điểm (25)
    • 2.6 TỔNG QUAN VỀ PHẦN CỨNG (25)
      • 2.6.1 Kit Jetson Nano (25)
      • 2.6.2 Camera Logitech C270 (28)
      • 2.6.3 Arduino Uno (28)
  • Chương 3: XÂY DỰNG VÀ LẬP TRÌNH HỆ THỐNG (30)
    • 3.1 GIỚI THIỆU (30)
    • 3.2 XÂY DỰNG HỆ THỐNG (30)
      • 3.2.1 Thiết kế sơ đồ khối (30)
      • 3.2.2 Các khối trong hệ thống (31)
        • 3.2.2.1 Khối điều khiển và xử lý trung tâm (31)
        • 3.2.2.2 Khối thu thập hình ảnh (36)
        • 3.2.2.3 Khối động cơ (36)
        • 3.2.2.4 Khối điều khiển lái (40)
        • 3.2.2.5 Khối nguồn (43)
      • 3.2.3 Sơ đồ nguyên lý toàn mạch (45)
    • 3.3 CHUẨN BỊ LINH KIỆN – MÔ ĐUN (46)
    • 3.4 MÔ HÌNH XE TỰ HÀNH (46)
    • 3.5 LẬP TRÌNH HỆ THỐNG (48)
      • 3.5.1 Cài đặt hệ điều hành cho jetson nano (48)
      • 3.5.2 Cài đặt các chương trình và phần mềm cần thiết (50)
      • 3.5.3 Cài đặt chương trình Visual studio code cho jetson nano (51)
      • 3.5.4 Cài đặt phần mềm trên máy tính chủ (máy tính dùng để đào tạo mô hình) (51)
        • 3.5.4.1 Cài đặt Cuda , cuDNN (51)
        • 3.5.4.2 Cài đặt anaconda, Visual studio code (53)
        • 3.5.4.3 Thiết lập cho học sâu hướng đối tượng (53)
      • 3.5.5 Lưu đồ giải thuật hệ thống (54)
        • 3.5.5.1 Nhận diện Lane (54)
        • 3.5.5.2 Nhận diện biển báo Stop (57)
      • 3.5.6 Giao diện lập trình (60)
        • 3.5.6.1 Giao diện lập trình xử lý ảnh lane và biển báo (60)
    • 3.6 HƯỚNG DẪN THAO TÁC (62)
      • 3.6.1 Thao tác đối với Jetson Nano (62)
        • 3.6.1.1 Remote Desktop (62)
  • Chương 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ (67)
    • 4.1 KẾT QUẢ (67)
      • 4.1.1 Kết quả thi công phần cứng (67)
    • 4.2 THỰC NGHIỆM (70)
      • 4.2.1 Thực nghiện model Deep learning sử dụng tensorflow và keras (70)
      • 4.2.2 Thực nghiệm model Deep learning sử dụng tensorflow (74)
      • 4.2.3 Thống kê (76)
    • 4.3 NHẬN XÉT VÀ ĐÁNH GIÁ (78)
  • Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (79)
    • 5.1 KẾT LUẬN (79)
    • 5.2 HƯỚNG PHÁT TRIỂN (80)
  • PHỤ LỤC (83)

Nội dung

TỔNG QUAN

LÝ DO CHỌN ĐỀ TÀI

Trong thời đại công nghệ 4.0, AI đang trở thành xu thế tất yếu toàn cầu, được ứng dụng rộng rãi trong các lĩnh vực như kinh tế, y học và kỹ thuật để giảm bớt sức lao động và tăng lợi nhuận Ngành ô tô cũng không nằm ngoài xu hướng này, với sự phát triển của những mẫu xe thông minh không người lái nhờ vào AI Tesla nổi bật trong cuộc đua tự hành, đầu tư hàng tỷ USD mỗi năm vào nghiên cứu để nâng cấp xe lên cấp độ 5, cho phép xe tự hành hoàn toàn hoạt động mà không cần sự can thiệp của con người Tương lai gần, ô tô tự hành sẽ trở thành hiện thực trên đường phố Để theo kịp xu thế toàn cầu, ngành ô tô Việt Nam cần có những bước chuyển mình trong công nghệ và tư duy FPT là một trong những công ty tiên phong trong việc phát triển ô tô tự hành tại Việt Nam, tổ chức “Cuộc Thi Số” hàng năm để khuyến khích sự sáng tạo của giới trẻ và tìm kiếm nhân tài cho lĩnh vực này.

Là một kỹ sư ô tô, đam mê là chưa đủ; chúng ta cần không ngừng nâng cao kiến thức và tìm hiểu các công nghệ mới trên thế giới Hiện nay, xe tự hành đang trở thành xu hướng và sẽ tiếp tục phát triển mạnh mẽ trong tương lai.

Xu hướng ô tô tự hành đang trở thành một yếu tố thiết yếu trong ngành công nghiệp ô tô trong những năm tới, vì vậy việc nghiên cứu và xây dựng mô hình là vô cùng cần thiết Ngành ô tô Việt Nam đang phát triển mạnh mẽ với tiềm năng lớn trong tương lai Cùng với sự gia tăng đam mê nghiên cứu, chúng tôi tin rằng ô tô tự hành sẽ không còn là khái niệm xa lạ, mà sẽ trở thành hiện thực trong thời gian gần.

Bởi các lý do nhận thấy ở trên,nên nhóm em đã quyết định và nghiên cứu đề tài “Xe tự hành chạy theo lane và nhận diện biển báo”.

CÁC NGHIÊN CỨU NGOÀI VÀ TRONG NƯỚC

1.2.1 Các nghiên cứu ngoài nước

Nghiên cứu của Ahmed Herchi và Abdellatif Mtibaa về nhận diện làn đường và biển báo giao thông cho hệ thống hỗ trợ lái xe đã xác định cách thức nhận diện lane và phát triển phương trình tính toán để giữ xe di chuyển đúng làn Bài viết nêu rõ các phương pháp nhận diện biển báo giao thông một cách chính xác, cùng với các bước xử lý hình ảnh đầu vào và phương pháp lọc nhiễu nhằm tăng độ chính xác Tác giả cũng đề xuất phương pháp hiệu quả nhất trong việc xác định lane và biển báo giao thông.

Nghiên cứu "A Simple Way to Prevent Neural Networks from Overfitting" do Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky và Ilya Sutskever thực hiện đã giới thiệu một khái niệm mới trong đào tạo máy học thông qua việc sử dụng mạng neural networks Việc áp dụng mạng neural không chỉ giúp quá trình đào tạo máy học trở nên nhanh chóng và dễ dàng hơn, mà còn nâng cao độ chính xác so với các phương pháp đào tạo truyền thống Bài viết cung cấp các phương trình tính toán và hướng dẫn thiết lập hệ thống mạng neural một cách chi tiết, giúp người đọc dễ dàng tiếp cận và hiểu rõ hơn về công nghệ này.

Trong nghiên cứu "Deep Residual Learning for Image Recognition" của Kaiming He, Xiangyu Zhang, Shaoqing Ren và Jian Sun, tác giả đã trình bày phương pháp xây dựng khung hình giúp dễ dàng đào tạo các mạng nơ-ron sâu hơn so với các mạng hiện tại Nghiên cứu chỉ ra cách định dạng rõ ràng cho các lớp học, cho phép học các hàm dư với tham chiếu đến các đầu vào của lớp, từ đó cải thiện hiệu suất nhận diện hình ảnh.

Các nghiên cứu chỉ ra rằng việc học các hàm không được ước tính có thể được cải thiện thông qua việc tối ưu hóa và tăng cường độ chính xác bằng cách sử dụng nhiều lớp neural Bằng chứng thực nghiệm đã chứng minh rằng cấu trúc mạng nơ-ron phức tạp hơn giúp nâng cao hiệu suất học tập.

1.2.2 Các nghiên cứu trong nước

- Với đề tài: Phát hiện và nhận dạng biển báo giao thông đường bộ sử dụng đặc trưng

Năm 2015, Trương Quốc Bảo và Trương Quốc Định từ trường Đại học Cần Thơ đã nghiên cứu về việc phát hiện và nhận diện biển báo giao thông bằng cách sử dụng đặc trưng cục bộ HOG và mạng nơron nhân tạo Hệ thống của họ có khả năng nhận diện hầu hết các loại biển báo như biển cấm, biển báo nguy hiểm, biển hiệu lệnh và biển chỉ dẫn mà không bị chồng lắp Qua thực nghiệm trên 31 video, thời gian trung bình để phát hiện và nhận diện biển báo trên một khung hình là khoảng 0.021 giây với mô hình phân lớp mạng nơron nhân tạo và 0.099 giây với mô hình SVM, đạt độ chính xác nhận dạng khoảng 94%.

Luận văn thạc sĩ của Lê Thị Thu Hằng tại Đại Học Công Nghệ Hà Nội năm 2016 nghiên cứu về mạng neural tích chập và ứng dụng của nó trong nhận dạng biển báo giao thông Bài viết đã trình bày khái quát một số kiểu mạng neural cùng với đặc điểm của chúng, đồng thời cung cấp định nghĩa cụ thể về mạng neural tích chập và hướng dẫn xây dựng mô hình mạng này để áp dụng vào việc nhận diện biển báo giao thông trên đường.

Đồ án tốt nghiệp của Đinh Việt Hùng và Đặng Thị Huỳnh Như tại Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh năm 2019, mang tên “Robot vận chuyển mẫu xét nghiệm trong bệnh viện”, đã trình bày quá trình thu thập và xử lý hình ảnh của lane đường trong bệnh viện, cho phép robot hoạt động tự động trong môi trường đã được thiết lập Tuy nhiên, hạn chế của đề tài là robot chỉ có khả năng vận hành trong một môi trường cố định, không thể hoạt động hiệu quả ở các môi trường khác.

MỤC ĐÍCH CỦA ĐỀ TÀI

Mục đích của đề tài này là nghiên cứu và xây dựng mô hình xe tự hành có khả năng chạy theo làn đường và nhận diện biển báo giao thông, nhằm giúp xe tự vận hành trên đường mà không cần sự can thiệp của con người.

Trong bài viết này, chúng tôi áp dụng lý thuyết xử lý ảnh, đặc biệt là Deep Learning và Mạng Nơ-ron Tích Chập (Convolutional Neural Network), để phát triển hệ thống nhận diện làn đường và biển báo trong các điều kiện cụ thể Đồng thời, chúng tôi cũng xây dựng mô hình xe tự hành cỡ nhỏ có khả năng vận hành dựa trên hệ thống này.

NHIỆM VỤ VÀ GIỚI HẠN CỦA ĐỀ TÀI

Nghiên cứu này sẽ phát triển một mô hình xe tự hành, bao gồm cả hệ thống xử lý ảnh và thiết kế, thi công xây dựng mô hình cơ khí cho xe.

- Trong đề tài sẽ sử dụng ngôn ngữ Python để lập trình xây dựng hệ thống xử lý cho chiếc xe

- Thực nghiệm cho mô hình chạy trên đường để xem xét là tinh chỉnh các thông số giúp tối ưu hóa khả năng xử lý của hệ thống

- Đề tài chỉ có thể xây dựng mô hình tự hành trong một môi trường cố định,chưa thể tự hành trong các điều kiện môi trường khác nhau

- Mô hình chỉ có thể chạy theo lane và nhận diện biển báo Stop để dừng lại.

PHƯƠNG PHÁP NGHIÊN CỨU

- Phân tích dữ liệu từ các công trình nghiên cứu trong và ngoài nước

- Lập trình xây dựng hệ thống xử lý từ cơ bản đến có thể vận dụng vào xe tự hành

- Thực nghiệm và đánh giá kết quả đạt được

Hiệu chỉnh sau thực nghiệm là bước quan trọng để xác định các yếu tố cần thiết nhằm ổn định xe trong quá trình xử lý ảnh Điều này giúp giảm thiểu ảnh hưởng của các yếu tố môi trường như ánh sáng, đảm bảo chất lượng hình ảnh không bị nhiễu.

CƠ SỞ LÍ THUYẾT

XE TỰ HÀNH

Xe tự hành là những thiết bị di chuyển có hình dáng giống như ô tô, đáp ứng đầy đủ các tiêu chuẩn cần thiết theo giáo sư Sridhar Lakshmanan từ trường đại học Michigan-Dearborn.

- Có hình dạng giống những chiếc ô tô thông thường

Xe tự lái được trang bị hệ thống nhận diện biến động trên đường thông qua GPS, giúp xác định nhiệm vụ của xe bằng cách thiết lập điểm đầu và điểm cuối của hành trình, dựa vào tính năng dẫn đường của Google Maps Ngoài ra, xe còn sử dụng các công nghệ hỗ trợ như radar, laser và camera để phát hiện và xử lý các tình huống bất ngờ.

- Có hệ thống chuyển các thông tin từ hai hệ thống trên thành các hành động thực tế trên đường

Các cấp độ của xe tự hành:

Xe ô tô tự hành cấp 1 là cấp độ cơ bản nhất của công nghệ tự lái, trong đó một số khía cạnh của quá trình lái xe được tự động hóa Các hệ thống như giữ làn đường hoạt động độc lập nhờ vào dữ liệu từ cảm biến và máy ảnh, nhưng người lái vẫn phải chịu trách nhiệm chính trong việc điều khiển xe.

Xe ô tô tự hành cấp 2 sử dụng chip kiểm soát để quản lý hai hoặc nhiều yếu tố cùng lúc Ở cấp độ này, máy tính thực hiện nhiều chức năng điều khiển, bao gồm việc kết hợp các hệ thống lái và tốc độ dựa trên dữ liệu từ bướm ga, phanh và hệ thống lái Một ví dụ điển hình của công nghệ này là tính năng đỗ xe tự động, giúp nâng cao trải nghiệm lái xe an toàn và tiện lợi hơn.

Xe ô tô tự hành cấp 3, hay còn gọi là ‘tự động hóa có điều kiện’, có khả năng kiểm soát các chức năng an toàn quan trọng trong quá trình lái xe Ở cấp độ này, hệ thống có thể thực hiện tất cả các khía cạnh của việc lái xe, trong khi người lái xe vẫn ở chế độ chờ và có thể can thiệp khi cần thiết Điều này cho thấy sự tiến bộ trong công nghệ xe tự hành, mang lại sự tiện lợi và an toàn hơn cho người sử dụng.

Xe tự lái cần có sự can thiệp của con người trong một số tình huống nhất định, nghĩa là xe chỉ có thể hoạt động độc lập khi đáp ứng các điều kiện cụ thể Trong những trường hợp này, xe sẽ đảm nhận quyền kiểm soát tất cả các chức năng quan trọng liên quan đến an toàn.

Xe tự hành cấp 4 có khả năng tự chủ hoàn toàn trong khu vực kiểm soát, cho phép xe tự lái gần như hoàn toàn trong một khu vực xác định Khu vực này được nhà sản xuất lập bản đồ một cách chi tiết, đảm bảo an toàn và hiệu quả trong quá trình vận hành.

Xe tự hành cấp 5 hoàn toàn tự động và có thể hoạt động trong mọi điều kiện mà không cần sự can thiệp của người lái Điểm khác biệt chính giữa xe tự hành cấp 4 và cấp 5 là cấp 4 chỉ có thể hoạt động trong những điều kiện đã được thiết lập trước, như trong các khu vực đô thị, trong khi cấp 5 có khả năng xử lý dữ liệu một cách tối ưu, cho phép xe di chuyển linh hoạt ở bất kỳ đâu.

Hình 2.1: Các cấp độ của xe tự hành

2.1.2 Một số công nghệ được sử dụng trên xe tự hành

Để đạt được cấp độ tự hành 5, xe không chỉ cần xử lý dữ liệu có sẵn mà còn phải tự động thu thập và xử lý dữ liệu mới.

Công nghệ đáp ứng yêu cầu là trí tuệ nhân tạo (AI), định nghĩa cơ bản về AI là khả năng của máy tính trong việc bắt chước hành vi và tư duy của con người Để máy tính có thể thực hiện điều này, cần thiết lập nền tảng và phương thức tiếp nhận kiến thức mới từ dữ liệu đã được con người đào tạo Giải pháp cho việc thiết lập nền tảng và tư duy của máy tính được gọi là học máy (machine learning).

Machine learning hoạt động bằng cách cung cấp một thuật toán ban đầu với lượng dữ liệu lớn để tự động tìm ra thông tin Đối với xe tự hành, thuật toán giúp xác định các yếu tố như điều kiện đường xá, tình trạng giao thông và các phương tiện khác Tuy nhiên, việc xử lý khối lượng thông tin khổng lồ này trở nên khó khăn nếu chỉ sử dụng các thuật toán thông thường Do đó, giải pháp là cho máy tính mô phỏng hoạt động của bộ não con người, dẫn đến sự ra đời của mạng thần kinh nhân tạo (neural networks).

Mạng lưới thần kinh nhân tạo bao gồm nhiều nơ-ron và các lớp kết nối chặt chẽ với nhau Để tạo ra những mạng lưới này, phương pháp Deep Learning (học sâu) được áp dụng Học sâu hoạt động bằng cách sử dụng một lượng lớn dữ liệu về một đối tượng cụ thể, từ đó máy tính phân tích các đặc điểm của dữ liệu đầu vào để xác định những đặc điểm chung, giúp hình thành mạng lưới thần kinh với khả năng nhận dạng dữ liệu hiệu quả.

Hình 2.2: Quan hệ giữa trí tuệ nhân tạo với học máy và học sâu

Ví dụ đối với chương trình xác định khuôn mặt, deep learning hoạt động như sau:

- Từ những hình ảnh mẫu mà chúng ta cung cấp Máy tính chuyển đổi ảnh mẫu thành các mẫu tương phản cục bộ

- Lớp đầu tiên ( hidden layer 1) sử dụng các mẫu tương phản để xác định các đặc trưng như mắt, mũi miệng

- Lớp thứ hai ( hidden layer 2) có thể áp dụng các đặc điểm khuôn mặt đó để đưa ra các mẫu khuôn mặt

Cuối cùng, một mạng lưới thần kinh được hình thành, cho phép kết hợp các nơron thần kinh và thuật toán đặc trưng riêng lẻ thành một cấu trúc phức tạp Mạng lưới này có khả năng phân tích và nhận diện khuôn mặt dưới nhiều điều kiện khác nhau.

Công nghệ deep learning được áp dụng trong nhận diện khuôn mặt, đặc biệt trong lĩnh vực xe tự hành, cho phép xử lý hiệu quả hình ảnh Hệ thống này sử dụng các thuật toán tiên tiến để nhận dạng và phân tích khuôn mặt, từ đó nâng cao khả năng nhận diện trong môi trường thực tế.

PHƯƠNG PHÁP NHẬN DIỆN LANE

Do môi trường thực nghiệm không có lane, chúng tôi sẽ sử dụng các yếu tố đặc trưng của môi trường này để thay thế Trong đề tài này, chúng tôi áp dụng hai phương pháp nhận diện khác nhau dựa trên deep learning: phương pháp đầu tiên là xử lý ảnh bằng deep learning sử dụng Keras và TensorFlow, trong khi phương pháp thứ hai chỉ sử dụng TensorFlow cho việc xử lý ảnh.

2.2.1 Deep learning sử dụng keras và tensorflow

Phương pháp xây dựng cơ sở dữ liệu nhận diện tự động, bắt đầu từ việc phân loại và lọc bỏ dữ liệu lỗi Sau khi xử lý, dữ liệu được sử dụng để đào tạo mô hình nhận diện, chia thành hai lớp: làn đường đi thẳng và làn đường vào cua Dữ liệu lỗi bao gồm hình ảnh mờ, vỡ và không đúng mục đích Yêu cầu với dữ liệu chuẩn là ảnh phải rõ ràng và đúng loại, ví dụ như thư mục chứa ảnh đường cong không được chứa ảnh đường thẳng Ngoài ra, nên thêm các đối tượng gây nhiễu như lá cây và cành để cải thiện quá trình đào tạo mô hình.

10 nhầm lẫn Đồng thời các dữ liệu ảnh nên chụp trong nhiều điều kiện sáng khác nhau để tối ưu quá trình nhận diện

Các bước để xây dụng dữ liệu đào tạo mô hình:

Để chuẩn bị dữ liệu đầu vào cho quá trình đào tạo, cần chia các ảnh thành ba thư mục: “thang 1”, “cong” và “thang 2” Việc phân chia này nhằm đảm bảo tính độc lập của dữ liệu, do sự khác biệt lớn giữa dữ thẳng đầu tiên và thẳng thứ hai sau khi đi vào đường cong Điều này giúp tránh nhầm lẫn và sai sót trong quá trình đào tạo.

Hình 2.4: Thư mục chứa ảnh đào tạo

- Bước hai: Sắp xếp dữ liệu theo đúng thứ tự mong muốn

Hình 2.5: Sắp xếp dữ liệu theo thứ tự mong muốn

Bước ba trong quy trình là đào tạo mô hình thần kinh nhân tạo, với thời gian thực hiện phụ thuộc vào kích thước dữ liệu và hiệu suất của thiết bị phần cứng.

Hình 2.6: Quá trình đào tạo mô hình

Sau khi quá trình đào tạo kết thúc, ta tiến hành sử dụng mô hình thần kinh nhân tạo đã được đào tạo vào xe chạy thực tế

Hình 2.7: Dữ liệu nhận diện thực tế

Quá trình thu thập hình ảnh đơn giản và thời gian đào tạo mô hình ngắn là những ưu điểm nổi bật Mô hình nhẹ, không yêu cầu phần cứng lớn, giúp tăng tốc độ xử lý và giảm thời gian đáp ứng hiệu quả.

Nhược điểm của quá trình nhận diện đặc điểm tự động là do đối tượng nhận diện không rõ ràng, như cây cỏ phủ lên vỉa hè hay lá rơi, dẫn đến việc dễ bị nhiễu bởi điều kiện môi trường Điều này gây ra sai sót trong tín hiệu điều khiển gửi về, ảnh hưởng tiêu cực đến quá trình di chuyển.

2.2.2 Deep learning sử dụng tensorflow

Phương pháp deep learning hướng đối tượng yêu cầu sự can thiệp nhiều hơn từ người sử dụng so với deep learning truyền thống Trong khi deep learning chỉ cần phân vùng đối tượng vào các thư mục khác nhau, phương pháp này đòi hỏi xác định đối tượng muốn nhận diện và phân vùng ngay trong từng bức ảnh Mặc dù quá trình này tốn thời gian do phải thực hiện hoàn toàn bằng tay, nhưng nó giúp tăng độ chính xác của mô hình bằng cách giảm thiểu việc xác định các đặc điểm chung giữa dữ liệu ảnh đầu vào Nhờ vào việc tập trung học đặc điểm của đối tượng ngay từ đầu, phương pháp này mang lại hiệu quả cao hơn trong việc nhận diện.

13 vậy giảm đi sai sót trong quá trình xác định đặc điểm chung khiến cho mô hình đào tạo có độ chính xác cao hơn

Quy trình đào tạo mô hình deep learning hướng đối tượng như sau:

Bước đầu tiên trong quá trình nhận diện đối tượng là thu thập dữ liệu ảnh, trong đó cần loại bỏ những hình ảnh không đạt tiêu chuẩn như bị mờ hoặc vỡ Sau khi thu thập, các ảnh này sẽ được phân chia thành hai thư mục: một thư mục dành cho việc đào tạo mô hình và một thư mục để kiểm tra chất lượng của mô hình trong suốt quá trình đào tạo.

Hình 2.8: Thư mục chứa ảnh đào tạo

Bước 2 trong quy trình là phân vùng đối tượng bằng chương trình labelImg Các đối tượng được xác định với các nhãn như: đường thẳng bên trái - “t1t”, bên phải - “t1p”, cong trái - “ct”, cong phải - “cp”, đường thẳng thứ hai - “t2p”, bồn cây - “td”, biển báo stop - “stop” và người - “human” Việc phân vùng đối tượng chi tiết như vậy sẽ giúp khắc phục nhược điểm của địa hình trong quá trình đào tạo.

Hình 2.9: Quá trình phân vùng dữ liệu

Bước 3 trong quy trình là đào tạo mô hình, sau khi đã lọc và sắp xếp dữ liệu cần thiết Trước khi bắt đầu, cần chọn model zoo phù hợp với thiết bị sẽ sử dụng cho việc đào tạo Mỗi model zoo cung cấp hai chỉ số quan trọng: tốc độ phân tích và độ chính xác của mô hình trong thực tế Việc lựa chọn model zoo phù hợp phụ thuộc vào loại mô hình muốn đào tạo và sức mạnh phần cứng của thiết bị Chúng tôi đã chọn model Faster R-CNN cho máy tính và SSD Mobile cho Jetson Nano.

Hình 2.10: Quá trình đào tạo diễn ra

Hình 2.11: Qúa trình đào tạo

- Bước 4: Tiến hành sử dụng mô hình đã đào tạo

Hình 2.12: Sử dụng mô hình

Mô hình này có độ chính xác cao và tính ổn định vượt trội, cho phép nhận diện nhiều đối tượng trong cùng một khung hình Đồng thời, nó cũng giảm thiểu khả năng gửi tín hiệu sai, nâng cao hiệu quả trong quá trình nhận diện.

Mặc dù độ chính xác của mô hình được cải thiện đáng kể, nhưng nó lại phụ thuộc nhiều vào model zoo được sử dụng, dẫn đến sự khác biệt lớn về độ chính xác giữa các model zoo (chi tiết sẽ được so sánh ở chương 4) Hơn nữa, thời gian đào tạo mô hình có thể kéo dài hơn 24 giờ, ngay cả khi chỉ sử dụng dữ liệu ảnh từ 300 đến 400.

GIỚI THIỆU VỀ PYTHON

Python là một ngôn ngữ lập trình phổ biến, được sử dụng rộng rãi trong giáo dục và các dự án lớn, cho phép phát triển nhiều loại ứng dụng như phần mềm desktop, server và ứng dụng web Ngoài ra, Python còn là ngôn ngữ ưa thích trong lĩnh vực trí tuệ nhân tạo, bao gồm machine learning Ban đầu được phát triển cho hệ điều hành Unix, Python hiện nay có thể chạy trên nhiều nền tảng khác nhau như MS-DOS, Mac OS, OS/2, Windows và Linux.

Python, ngôn ngữ lập trình do Guido van Rossum sáng lập vào năm 1989, được phát triển trong khuôn khổ một dự án mã nguồn mở dưới sự quản lý của tổ chức phi lợi nhuận Python Software Foundation Mặc dù nhiều cá nhân đã đóng góp cho sự phát triển của Python, Guido van Rossum vẫn giữ vai trò chính trong việc định hướng và phát triển ngôn ngữ này.

Python là một ngôn ngữ lập trình với cú pháp đơn giản và ngắn gọn, chỉ sử dụng một số lượng từ khóa hạn chế, khiến cho nó trở thành lựa chọn lý tưởng cho người mới bắt đầu Với mã lệnh dễ hiểu, Python giúp người học nhanh chóng nắm bắt và áp dụng kiến thức lập trình.

Python là một ngôn ngữ lập trình đa năng, cho phép phát triển phần mềm có thể chạy trên nhiều hệ điều hành khác nhau như Windows, Mac OSX và Linux.

THƯ VIỆN OPENCV

OpenCV (Open Source Computer Vision Library) là thư viện mã nguồn mở miễn phí, lý tưởng cho những ai mới bắt đầu tìm hiểu về học thuật trong lĩnh vực thị giác máy tính và xử lý ảnh Được phát triển bởi Intel vào năm 1999 và ra mắt năm 2000, OpenCV hỗ trợ nhiều ngôn ngữ lập trình như C++, C, Python và Java, cùng với khả năng hoạt động trên các nền tảng Windows, Linux, Mac OS, iOS và Android Thư viện này có nhiều ứng dụng phong phú, bao gồm nhận dạng ảnh, xử lý hình ảnh, phục hồi video, và thực tế ảo Trong đề tài này, OpenCV được sử dụng chủ yếu với ngôn ngữ Python để xử lý và nhận dạng ảnh đầu vào.

OpenCV là một thư viện mã nguồn mở cho phép người dùng sử dụng miễn phí các thuật toán, đồng thời khuyến khích cộng đồng đóng góp thêm các thuật toán mới để thúc đẩy sự phát triển của thư viện.

Các tính năng của thư viện OpenCV:

- Đối với hình ảnh, có thể đọc và lưu hay ghi chúng

- Về Video cũng tương tự như hình ảnh cũng có đọc và ghi

- Xử lý hình ảnh có thể lọc nhiễu cho ảnh, hay chuyển đổi ảnh

- Thực hiện nhận dạng đặc điểm của hình dạng trong ảnh

- Phát hiện các đối tượng xác định được xác định trước như khuôn mặt, mắt, xe trong video hoặc hình ảnh

-Phân tích video, ước lượng chuyển động của nó, trừ nền ra và theo dõi các đối tượng trong video

TENSORFLOW

TensorFlow là thư viện mã nguồn mở do Google phát triển, nhằm hỗ trợ nghiên cứu và phát triển ứng dụng AI, bao gồm Machine Learning và Deep Learning Phiên bản đầu tiên được ra mắt vào tháng 11 năm 2015, và phiên bản TensorFlow 2.0 Alpha đã được công bố vào ngày 4 tháng 3 năm 2019 Phần cốt lõi của TensorFlow được viết bằng C++, nhưng người dùng có thể phát triển ứng dụng bằng cả C++ và Python, trong đó Python là ngôn ngữ phổ biến nhất cho việc viết TensorFlow.

TensorFlow là một framework được đặt tên từ sự kết hợp giữa Tensor và Flow, trong đó Tensor là kiểu dữ liệu dạng mảng nhiều chiều, bao gồm 1-d tensor (vector) và 2-d tensor (matrix) Do đó, TensorFlow có thể được hiểu là các dòng dữ liệu Tensor.

TensorFlow cung cấp ba cấp độ API: Low-level, Mid-level và High-level Low Level APIs cho phép người dùng xây dựng TensorFlow Graph và chạy thuật toán thông qua TensorFlow Session, trong khi High Level APIs như Keras và Estimators giúp dễ dàng tạo và huấn luyện các mô hình Deep Learning mà không cần định nghĩa Graph Mặc dù Low Level APIs mang lại quyền kiểm soát cao hơn, TensorFlow khuyến cáo người dùng chỉ nên sử dụng chúng khi không thể áp dụng High Level APIs.

TỔNG QUAN VỀ PHẦN CỨNG

Jetson Nano là một máy tính AI do Nvidia sản xuất, với tên gọi đầy đủ là Nvidia Jetson Nano Developer Kit Thiết bị này có kích thước tương đương với một bảng mạch và sử dụng chuẩn kết nối SO-DIMM.

Jetson Nano có hai hình dạng: một mô-đun kích thước 70x45mm cho thiết kế sản phẩm cuối cùng và một bộ kit phát triển tương tự Raspberry Pi để hỗ trợ các nhà phát triển Phiên bản mô-đun đi kèm bộ nhớ trong 16GB, trong khi bộ kit sử dụng thẻ nhớ microSD.

The Nvidia Jetson Nano Developer Kit features a comprehensive array of connectivity options, including four USB 3.0 ports, an HDMI port, a DisplayPort, and an Ethernet port Additionally, it supports popular connection standards such as SDIO, I2C, SPI, and UART.

Hình 2.14:Thông số kỹ thuật của Jetson Nano

Jetson Nano được hỗ trợ bởi Nvidia JetPack, bao gồm các gói hỗ trợ board (BSP), CUDA, cuDNN và thư viện phần mềm TensorRT, phục vụ cho deep learning, computer vision, GPU computing, multimedia processing và nhiều ứng dụng khác SDK của Jetson Nano cũng cho phép cài đặt các framework Machine Learning (ML) mã nguồn mở như TensorFlow, Keras, MXNet và PyTorch, giúp các nhà phát triển dễ dàng tích hợp các mô hình AI yêu thích vào sản phẩm của họ.

Hệ thống hỗ trợ GPU này được trang bị CPU 4 nhân 64-bit dựa trên ARM Cortex-A57, RAM 4GB, và bộ xử lý video có khả năng xử lý 4K với tốc độ 30fps cho mã hóa và 60fps cho giải mã Ngoài ra, thiết bị còn có khe cắm PCle và USB 3.0.

Jetson Nano mang đến hiệu suất 472 GFLOPS, cho phép thực hiện nhanh chóng các thuật toán AI hiện đại Thiết bị được trang bị CPU quad-core 64-bit ARM, GPU Nvidia tích hợp 128-core và bộ nhớ 4GB LPDDR4, giúp chạy song song nhiều mạng neural và xử lý đồng thời các cảm biến độ phân giải cao.

Jetson Nano có khả năng xử lý video ấn tượng, không chỉ phục vụ việc xem video mà còn có thể xử lý nhiều luồng video đồng thời, như trong các máy bay không người lái tích hợp đa camera Sản phẩm này hỗ trợ phát hiện đối tượng, theo dõi và tránh chướng ngại vật Ngoài khả năng xuất video 4K ở 60fps, Jetson Nano còn có thể giải mã 8 luồng video Full HD 30fps, với các luồng được giải mã ngay lập tức nhờ vào thuật toán học máy để theo dõi đối tượng.

Hình 2.15: So sánh Jetson Nano và Raspberry PI 4

Camera Logitech C270 là sản phẩm nổi bật của hãng, mang đến sự khác biệt riêng Webcam Logitech HD C270 có khả năng kết nối linh hoạt với nhiều thiết bị như laptop và PC.

Webcam Logitech C270 HD được trang bị công nghệ tự động lấy nét và điều chỉnh ánh sáng, giúp cải thiện chất lượng hình ảnh Ngoài ra, sản phẩm còn tích hợp công nghệ Logitech RightSoundTM để lọc tiếng ồn hiệu quả, cùng với micro tích hợp sẵn, mang đến trải nghiệm âm thanh rõ ràng và sống động.

Sản phẩm là dòng camera HD với độ phân giải 720p,hình ảnh chụp lên đến 3.0 megapixel một chất lượng cực đảm bảo được độ sắc nét cho người dùng

Arduino Uno R3 là thế hệ thứ 3 của dòng mạch Arduino dùng để lập trình,cái đầu tiên mà người ta thường nhắc tới chính là dòng Arduino Uno

Arduino Uno sử dụng ba vi điều khiển 8bit AVR là ATmega8, ATmega168 và ATmega328, cho phép thực hiện các tác vụ đơn giản như điều khiển LED nhấp nháy, xử lý tín hiệu cho xe điều khiển từ xa, và xây dựng trạm đo nhiệt độ - độ ẩm với hiển thị trên màn hình LCD.

Vi điều khiển ATmega328 tiêu chuẩn cung cấp 32KB bộ nhớ Flash để lưu trữ mã lập trình, trong đó khoảng vài KB được sử dụng cho bootloader Ngoài ra, nó còn có 2KB SRAM (Static Random Access Memory) để lưu trữ giá trị các biến khai báo trong quá trình lập trình, và 1KB EEPROM (Electrically Erasable Programmable Read-Only Memory) hoạt động như một ổ cứng mini, cho phép ghi và đọc dữ liệu mà không lo mất mát khi mất điện, khác với dữ liệu trên SRAM.

XÂY DỰNG VÀ LẬP TRÌNH HỆ THỐNG

GIỚI THIỆU

Đề tài "Xe tự hành chạy theo Lane và nhận diện biển báo" tập trung vào việc phát triển và lập trình hệ thống giúp xe di chuyển theo làn đường đã định sẵn và nhận diện biển báo để dừng lại Hệ thống này được trang bị các thiết bị ngoại vi như camera quan sát làn đường và camera nhận diện biển báo, tất cả được kết nối với Jetson Nano để truyền tải hình ảnh về trung tâm xử lý.

XÂY DỰNG HỆ THỐNG

3.2.1 Thiết kế sơ đồ khối

Hình 3.1:Sơ đồ khối toàn hệ thống

- Khối nguồn:cung cấp nguồn cho toàn hệ thống

Khối điều khiển và xử lý trung tâm bao gồm Jetson Nano, nhận dữ liệu hình ảnh từ khối thu thập hình ảnh để xử lý Sau khi xử lý, Jetson Nano gửi tín hiệu xuống Arduino Uno R3 Arduino Uno R3 nhận tín hiệu này và điều khiển động cơ cũng như góc lái của động cơ bước.

- Khối thu thập hình ảnh:Thu thấp hình ảnh lane và biển báo để gửi về bộ xử lý trung tâm

-Khối động cơ:Nhận tín hiệu từ khối điều khiển và xử lý trung tâm để di chuyển

-Khối điều khiển lái:Bao gồm Driver TB6600 sẽ nhận tín hiệu từ khối điều khiển để điều khiển hướng lái của chiếc xe

3.2.2 Các khối trong hệ thống

3.2.2.1 Khối điều khiển và xử lý trung tâm

Jetson Nano là sản phẩm của nhà phát triển Nvidia.Nó là một máy tính nhúng có kích thước nhỏ.Jetson Nano gồm những phần chính:

CPU 4 nhân 64-bit dựa trên ARM Cortex-A57 với tốc độ đọc là 1.43 GHz,có thể chạy được hệ điều hành Linux.Thêm vào đó là Card đồ họa(GPU) 128 Core Maxwell 472 GFLOPs(FP16).GPU này mạnh mẽ có thể chơi một số game phổ thông và chạy video chuẩn full HD

Jack nguồn DC OD 5.5mm,5V/4A hoặc nguồn 5V/2A khi sử dụng jack microUSB

40 ngõ GPIO (General Purpose Input Output): Giống như các chân của vi điều khiển,các

IO của Jetson Nano không chỉ cho phép xuất tín hiệu đến các thiết bị như LED mà còn có khả năng đọc tín hiệu từ các nút nhấn, công tắc và cảm biến Bên cạnh đó, nó còn tích hợp các chuẩn truyền dữ liệu như UART, I2C và SPI, mang lại sự linh hoạt trong việc kết nối và giao tiếp với nhiều loại thiết bị khác nhau.

Ngõ HDMI:Dùng để kêt nối Jetson Nano với màn hình máy tính hay tivi có hỗ trợ cổng HDMI

Cổng Display:Dùng để kết nối LCD hoặc màn hình OLED

Cổng USB:Một điểm mạnh của Jetson Nano là tích hợp 4 cổng usb 3.0.Đủ để cắm các ngoại vi cần thiết như chuột,bàn phím,và usb Wifi

Cổng Ethernet trên Jetson Nano giúp kết nối Internet một cách dễ dàng Chỉ cần cắm dây mạng, kết nối với màn hình máy tính hoặc TV cùng với bàn phím và chuột, bạn sẽ có thể lướt web một cách thuận tiện.

Jetson Nano không có ổ cứng tích hợp mà sử dụng thẻ nhớ SD để lưu trữ dữ liệu Hệ điều hành Linux sẽ hoạt động hoàn toàn trên thẻ SD, vì vậy cần chọn thẻ có kích thước đủ lớn để chứa toàn bộ dữ liệu.

Cổng CSI ( Camera Serial Interface):Cổng này dùng để kết nối với module camera MIPI.Modelue này thu được hình ảnh chất lượng lên đến 1080p

Ngoài ra,Jetson Nano có thể kết nối bluetooth 4.1 đồng thời có thể gắn thêm card Wifi để kết nối internt không dây cho thiết bị

Hình 3.2: Ngoại vi của Jetson Nano

26 Hình 3.3: Sơ đồ cấu tạo của Jetson Nano

Hình 3.4: Sơ đồ chân GPIO của Jetson Nano

Arduino Uno R3 là phiên bản thứ ba của bộ kit Arduino Uno, nổi bật với khả năng lập trình cho các ứng dụng phức tạp nhờ cấu hình mạnh mẽ Kit này được trang bị bộ nhớ ROM, RAM và Flash, cùng với nhiều ngõ vào ra Digital I/O, trong đó có nhiều ngõ hỗ trợ xuất tín hiệu PWM Ngoài ra, Arduino Uno R3 còn có khả năng đọc tín hiệu Analog và hỗ trợ các chuẩn giao tiếp đa dạng như UART, SPI và TWI (I2C).

Hình 3.5: Sơ đồ cấu tạo của Arduino Uno R3

Arduino Uno R3 có thể được cấp nguồn qua USB với điện áp 5V hoặc sử dụng nguồn ngoài từ 7-12V DC Lưu ý rằng nếu điện áp vượt quá 20V, kit sẽ bị hỏng, vì vậy cần cẩn thận khi cung cấp nguồn cho Arduino Uno.

GND (Ground) là điểm kết nối của nguồn điện cho kit Khi sử dụng các ứng dụng với nguồn điện riêng biệt hoặc nhiều nguồn khác nhau, cần phải kết nối các chân GND lại với nhau để đảm bảo hoạt động ổn định.

5V: Đầu ra điện áp 5V Các bạn phải lưu ý là dòng tối đa cho phép cấp ở pin này là 0.5A

3.3V: Đầu ra điện áp 3.3V Dòng tối đa cho phép cấp ở pin này là 0.05A

Vin (Voltage Input): Cấp nguồn ngoài cho kit Khi kết nối, tiến hành nối cực dương của nguồn với pin này và cực âm của nguồn với pin GND

IOREF là điện áp hoạt động của vi điều khiển trên Arduino UNO, thường được đo ở chân pin này với giá trị ổn định là 5V Tuy nhiên, người dùng không nên lấy nguồn từ pin này để cấp cho các thiết bị khác, vì chức năng chính của nó không phải là cung cấp nguồn.

Chân reset được kết nối với nút bấm, cho phép bạn reset vi điều khiển bằng cách nhấn nút Reset Nguyên lý hoạt động là chân RESET được nối với Ground thông qua một điện trở 10KΩ.

Chân Serial 1 (TX) và chân 0 (RX) trên Arduino Uno cho phép giao tiếp với các thiết bị khác thông qua việc nhận (RX) và gửi (TX) dữ liệu.

Chân PWM(~);3,5,6,9,10 và 11:cho phép bạn băm xung PWM với độ phân giải 8 bit(giá trị từ0 → 2 8 -1 tương ứng với 0V → 5V) bằng hàm analogWrite()

Chân giao tiếp SPI bao gồm các chân 10 (SS), 11 (MOSI), 12 (MISO) và 13 (SCK) Ngoài việc thực hiện các chức năng cơ bản, bốn chân này còn hỗ trợ truyền dữ liệu qua giao thức SPI với các thiết bị khác.

Analog Pin: 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 2 10 -

1) để đọc giá trị điện áp trong khoảng 0V → 5V Bạn có thể để đưa vào chân AREF trên board điện áp tham chiếu khi sử dụng các chân analog Nói cách khác, khi bạn cấp điện áp 2.5V vào chân này thì bạn có thể đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit

Giao tiếp I2C: 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác

Hình 3.6: Thông số kỹ thuật của Arduino Uno R3

3.2.2.2 Khối thu thập hình ảnh

Camera logitech C270 được sử dụng để thu thập hình ảnh của lane đường và biển báo.Được kết nối với Jetson Nano thông qua cổng USB 3.0

Thông số kỹ thuật của Camera logitech C270:

- Độ phân giải: lên đến 3MP

- Quay video: lên tới 1024 x 720 pixel

- Công nghê: Công nghệ tinh thể lỏng Logitech Fluid Crystal

- Giao tiếp: USB 2.0 tốc độ cao

Khối động cơ chủ yếu nhận tín hiệu từ Arduino Uno R3, được truyền từ Jetson Nano, giúp xe di chuyển tiến thẳng và dừng lại khi gặp biển báo.

Việc lựa chọn động cơ cho xe cần phải tương thích với trọng lượng, các thông số như vòng/phút, điện áp hoạt động và công suất, vì chúng ảnh hưởng trực tiếp đến khả năng di chuyển, đặc biệt trên địa hình thực tế với sự ma sát lớn Qua việc tính toán sơ bộ về tải trọng tối đa và vận tốc mong muốn, động cơ RS550 được chọn là phù hợp.

-Đường kính động cơ: 36mm

-Chiều dài thân động cơ: 85mm

Hình 3.9: Thông số động cơ RS550

CHUẨN BỊ LINH KIỆN – MÔ ĐUN

Dựa trên các cơ sở lý thuyết và sơ đồ khối đã thiết kế trước đó, chúng ta tiến hành chuẩn bị linh kiện và mô-đun cần thiết cho việc thi công mô hình, đảm bảo sự hoạt động hiệu quả của từng khối trong sơ đồ mạch nguyên lý.

Bảng 3.1: Các linh kiện, mô đun sử dụng

STT Tên linh kiện/Mô đun Số lượng

11 Mô hình xe điện mini 1

MÔ HÌNH XE TỰ HÀNH

Để mô phỏng hình dáng chiếc xe một cách chính xác, nhóm em đã sử dụng phần mềm Autodesk Inventor, một công cụ mạnh mẽ cho việc xây dựng mô hình 3D, thiết kế và kiểm tra sản phẩm Phần mềm này tích hợp các công cụ mô phỏng và phân tích, cho phép người dùng thực hiện thiết kế từ cơ bản đến nâng cao, bao gồm cả chi tiết máy và trực quan hóa sản phẩm Bên cạnh đó, Inventor còn tích hợp CAD và các công cụ giao tiếp thiết kế, giúp nâng cao năng suất làm việc và giảm thiểu lỗi, tiết kiệm thời gian Đặc biệt, Inventor cung cấp một môi trường thiết kế và phím tắt tương tự như AutoCAD, cho phép người dùng dễ dàng chuyển đổi từ môi trường vẽ 2D sang xây dựng mô hình 3D.

Mô hình xe tự hành sau khi vẽ bằng Inventor:

Hình 3.19: Mô phỏng xe tự hành

Hình 3.20: Mô phỏng xe tự hành

LẬP TRÌNH HỆ THỐNG

3.5.1 Cài đặt hệ điều hành cho jetson nano

Cài đặt hệ điều hành cho Jetson Nano có thể thực hiện trên ba nền tảng phổ biến: Windows, Linux và macOS Mỗi hệ điều hành có những điểm khác biệt nhỏ tùy thuộc vào đặc điểm riêng, nhưng nhìn chung, quy trình cài đặt sẽ bao gồm các bước cơ bản giống nhau, đặc biệt là đối với Windows.

Để format thẻ nhớ, bước đầu tiên là sử dụng phần mềm chuyên dụng như SD Memory Card Formatter cho Windows, thay vì sử dụng cách format mặc định của hệ điều hành Điều này đặc biệt quan trọng đối với thẻ nhớ đã cài đặt hệ điều hành Jetson Nano, trong khi trên Linux không cần phần mềm chuyên dụng.

Hình 3.21: Phần mềm format thẻ nhớ

To install the Jetson Nano operating system, download the OS version from the official NVIDIA website and use Etcher to write it to a microSD card Select the appropriate OS image (we are using JetPack 4.3) and choose the drive for flashing The installation process takes approximately 30 minutes.

Hình 3.22: Phần mềm ghi đè hệ điều hành lên thẻ nhớ

- Bước 3: Tiến hành cài đặt thông số hệ điều hành bao gồm ngôn ngữ hệ thống, định dạng bàn phím, thời gian, tên , mật khẩu và tên máy tính

Hình 3.23: Giao diện hệ điều hành 3.5.2 Cài đặt các chương trình và phần mềm cần thiết

Khi cài đặt Jetpack, hệ điều hành sẽ tự động bao gồm các thư viện OpenCV, CUDA và libCudnn Tuy nhiên, bạn cũng cần cài đặt thêm một số thư viện hệ thống cần thiết Để thực hiện điều này, hãy mở terminal và sử dụng các lệnh tương ứng.

- sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8- dev liblapack-dev libblas-dev gfortran

Cài đặt thư viện pip3 ( hỗ trợ cài đặt thư viện cho python 3.x):

- sudo apt-get install python3-pip

- sudo pip3 install -U pip testresources setuptools

Cài đặt thư viện cho python 3 bao gồm numpy, future, mock, h5py, keras_preprocessing, keras_applications, gast, futures, protobuf, pybind11, matplotlib Bằng câu lệnh như sau:

- sudo pip3 install

Để cài đặt thư viện TensorFlow (tensorflow-gpu), bạn cần tải phiên bản TensorFlow tương thích với phiên bản JetPack mà bạn đang sử dụng Đối với JetPack 4.3, hãy chọn phiên bản TensorFlow phù hợp với yêu cầu của bạn để đảm bảo hiệu suất tối ưu.

- sudo pip3 install pre extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v43 “tensorflow”

3.5.3 Cài đặt chương trình Visual studio code cho jetson nano Để thuận lợi trong việc viết sửa chương trình cho jetson nano thì chúng em sử dụng visual code Tuy nhiên jetson nano là hệ điều hành dựa trên ubuntu nhưng chạy trên nền ARM thì việc cài đặt có chút khác biệt so với thông thường

- Bước 1: Tải chương trình từ github: git clone https://github.com/JetsonHacksNano/installVSCode.git

Sau khi cài đặt hoàn thiện sử dụng lệnh “ code-oss” trên của sổ terminal để khởi động chương trình

- Bước 4: Trong cửa sổ của visual studio, phía bên trái màn hình ở biểu tưởng 4 ô vuông, ta tải python để lập trình code dưới dang python

- Bước 5: Ấn Ctrl + shift + P để chọn đường dẫn chứa chương trình python

3.5.4 Cài đặt phần mềm trên máy tính chủ (máy tính dùng để đào tạo mô hình) 3.5.4.1 Cài đặt Cuda , cuDNN

Cài đặt Cuda và cuDNN là cần thiết để tận dụng GPU rời trong việc đào tạo mô hình deep learning Tuy nhiên, quá trình này trên Windows có thể phức tạp do hạn chế về dòng card đồ họa hỗ trợ của NVIDIA và sự không tương thích giữa Cuda và cuDNN Để đơn giản hóa, chúng ta nên cài đặt các chương trình này trên Ubuntu Đầu tiên, cần thiết lập card đồ họa NVIDIA làm mặc định, sau đó vào mục tìm kiếm, chọn "Software and Updates", chọn driver của NVIDIA và tiến hành khởi động lại máy.

Hình 3.24: Thiết lập card nvidia là GPU mặc định

Để cài đặt Cuda và cuDNN, bạn cần tải phiên bản từ trang chủ của Nvidia, cụ thể là Cuda 10.1 và cuDNN 7.5 Sau khi hoàn tất cài đặt, hãy gõ lệnh nvidia-smi để kiểm tra Nếu thông số hiển thị giống như hình mẫu, quá trình cài đặt đã thành công.

Hình 3.25: Quá trình cài đặt Cuda hoàn tất

3.5.4.2 Cài đặt anaconda, Visual studio code

Visual Studio Code và Anaconda đều có tác dụng tương tự trên Jetson Nano, nhưng việc cài đặt trên hệ điều hành máy tính đơn giản hơn nhiều Anaconda cho phép người dùng tạo nhiều môi trường độc lập, mỗi môi trường tương ứng với một phiên bản Python và các gói phần mềm khác nhau Điều này giúp so sánh ưu nhược điểm giữa các phiên bản mà không lo bị xung đột với các nền tảng đã cài đặt, đồng thời cho phép thử nghiệm các gói chương trình mới một cách tự do.

Sau khi cài đặt anaconda ta thiết lập môi trường cũng như phiên bản cho python:

Để bắt đầu, mở cửa sổ terminal trên Linux hoặc Anaconda Prompt trên Windows và tạo môi trường mới bằng lệnh: conda create -n python==3.6.9 Việc chọn phiên bản Python 3.6.x thay vì 3.7.x hoặc cao hơn là do Python 3.6.x có sự tương thích ổn định với TensorFlow 1.x, trong khi TensorFlow 2.x yêu cầu phiên bản Python 3.7.x trở lên.

Để tiến hành cài đặt trên Jetson Nano, bước thứ hai là cài đặt các chương trình cần thiết, bao gồm các gói đặc thù phục vụ cho việc đào tạo mô hình Cụ thể, bạn cần cài đặt Keras phiên bản 2.2.0 và Scikit-learn để hỗ trợ quá trình đào tạo mô hình deep learning trên Keras.

3.5.4.3 Thiết lập cho học sâu hướng đối tượng

Việc đào tạo mô hình deep learning hướng đối tượng với TensorFlow phức tạp hơn so với Keras, yêu cầu nhiều thiết lập hơn Để bắt đầu, cần cài đặt TensorFlow Object Detection API từ GitHub, chúng tôi sử dụng phiên bản TensorFlow v1.13.

- Bước 1: Tải tập tin tensorflow từ github cho (linux) ( windows thì chỉ cần tải ngay trên trang web) : git clone https://github.com/tensorflow/models/tree/r1.13.0

- Bước 2: Tải model zoo phù hợp với nhu cầu đào tạo

- Bước 3: Thiết lập PYTHONPATH theo địa chỉ của tệp tensorflow vừa tải về

Ví dụ: tệp được tải về được lưu trong thư mục tensorflow1 Đối với windows:C:\> set PYTHONPATH=C:\tensorflow1\models;C:\tensorflow1\models\research;C:\tensorflow1

\models\research\slim” đối với linux: “export

PYTHONPATH=home/tensorflow1/models;home/tensorflow1/models/research;tensorflo w1/model/research/slim”

Step 4 involves compiling protobufs and executing the setup.py file Navigate to the research directory to convert the proto files into py files using the command: "protoc object_detection/protos/*.proto python_out=." After that, build and install the package by running "python setup.py build" and "python setup.py install." This completes the installation process.

3.5.5 Lưu đồ giải thuật hệ thống

Lưu đồ chạy theo Lane:

Hình 3.26: Lưu đồ nhận diện và chạy theo lane (P1)

Hình 3.27: Lưu đồ nhận diện và chạy theo lane (P2)

Sau khi đã huấn luyện mô hình, chúng ta sẽ sử dụng nó để nhận diện và điều khiển Đầu tiên, cần khởi tạo các thư viện cần thiết và đọc mô hình đã được huấn luyện vào chương trình Tiếp theo, đọc ảnh đầu vào và xử lý để phù hợp với mô hình Khi đưa ảnh vào nhận diện, có ba lớp tương ứng với thứ tự làn đường và góc quay: lớp 0 tương ứng với xe đi thẳng, lớp 1 cho xe rẽ phải với góc quay 60 độ, và lớp 2 cho xe rẽ trái với góc quay 60 độ để có thể quay lại Dưới đây là một số hình ảnh sau khi nhận diện bằng mô hình huấn luyện.

3.5.5.2 Nhận diện biển báo Stop

Lưu đồ nhận diện biển báo:

Hình 3.30: Lưu đồ nhận diện biển báo Stop (P1)

Hình 3.31: Lưu đồ nhận diện biển báo Stop (P2)

Để bắt đầu, chúng ta cần khởi tạo các thư viện Opencv nhằm hỗ trợ thu thập dữ liệu Sau khi có ảnh đầu vào, quá trình chuẩn hóa sẽ được thực hiện theo lưu đồ giải thuật đã đề ra Tiếp theo, ảnh sẽ được đọc và xử lý tương tự như trong phần thu thập dữ liệu để phù hợp với mô hình nhận diện biển báo Stop đã được huấn luyện Khi nhận diện thành công biển báo Stop, thuật toán sẽ vẽ một hình chữ nhật xung quanh biển báo để thông báo rằng vật thể đã được xác định Cuối cùng, diện tích của biển báo sẽ được tính toán theo đơn vị phù hợp.

HƯỚNG DẪN THAO TÁC

3.6.1 Thao tác đối với Jetson Nano

Mục đích của việc sử dụng remote desktop là quan sát và điều chỉnh quá trình xử lý hình ảnh từ camera mà không cần đến tận nơi Điều này giúp tiết kiệm thời gian và thuận tiện cho việc sửa chữa Nhóm em sử dụng phần mềm VNC để thực hiện remote desktop, với các bước được tiến hành như sau:

Bước đầu tiên để sử dụng phần mềm VNC Viewer là cài đặt nó trên laptop của bạn Bạn có thể tải phần mềm bằng cách truy cập vào đường dẫn [https://www.realvnc.com/en/connect/download/viewer/](https://www.realvnc.com/en/connect/download/viewer/) Sau khi cài đặt thành công, giao diện của phần mềm sẽ hiện ra, cho phép bạn kết nối và quản lý từ xa.

Hình 3.36: Cài đặt phần mềm VNC

- Bước 2: Tìm địa chỉ IP của Jetson Nano

Hình 3.37: Cú pháp tìm IP của Jetson Nano

Hình 3.38: Địa chỉ IP trên Jetson Nano

To run the VNC file on the Jetson Nano, download the file by visiting the following link: [Download VNC File](https://github.com/jetsonworld/downloadManuals/blob/master/00_How_To_Start_VNC.txt).

Tiến hành tải tập tin có tên là:00_How_To_Start_VNC.txt

Tiến hành chạy trên Jetson Nano

Hình 3.39:Chạy VNC trên Jetson Nano

Hình 3.40: Chạy VNC trên Jetson Nano

- Bước 4: Nhập IP của Jetson Nano vào VNC trên laptop

Hình 3.41: Nhập IP của Jetson vào VNC

- Bước 6: Chấp nhận trên Jetson Nano để liên kết với laptop bằng cách nhấn Accept

Hình 3.42: Chấp nhận liên kết trên Jetson Nano

Liên kết thành công VNC giữ laptop và Jetson Nano

Hình 3.43: Liên kết thành công Jetson Nano và laptop

Sau khi kết nối thành công Jetson Nano với laptop, người dùng có thể điều khiển, lập trình và thao tác từ xa Tuy nhiên, VNC chỉ hoạt động khi cả hai thiết bị cùng sử dụng một mạng Wi-Fi, đây là một nhược điểm của phần mềm Ngoài ra, khi truyền dữ liệu từ Jetson sang laptop qua VNC, tín hiệu sẽ có độ trễ từ 1 đến 2 giây, mặc dù độ trễ này vẫn nằm trong khoảng chấp nhận được.

THỰC NGHIỆM VÀ ĐÁNH GIÁ

Ngày đăng: 06/06/2022, 18:12

HÌNH ẢNH LIÊN QUAN

Hình 2.1: Các cấp độ của xe tự hành - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 2.1 Các cấp độ của xe tự hành (Trang 13)
Hình 2.5: Sắp xếp dữ liệu theo thứ tự mong muốn - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 2.5 Sắp xếp dữ liệu theo thứ tự mong muốn (Trang 18)
Hình 2.12: Sử dụng mô hình - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 2.12 Sử dụng mô hình (Trang 22)
Hình 2.15: So sánh Jetson Nano và Raspberry PI 4 - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 2.15 So sánh Jetson Nano và Raspberry PI 4 (Trang 27)
Hình 3.1:Sơ đồ khối toàn hệ thống - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 3.1 Sơ đồ khối toàn hệ thống (Trang 30)
Cổng Display:Dùng để kết nối LCD hoặc màn hình OLED. - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
ng Display:Dùng để kết nối LCD hoặc màn hình OLED (Trang 32)
Hình 3.4: Sơ đồ chân GPIO của Jetson Nano - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 3.4 Sơ đồ chân GPIO của Jetson Nano (Trang 33)
Hình 3.5: Sơ đồ cấu tạo của Arduino Uno R3 - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 3.5 Sơ đồ cấu tạo của Arduino Uno R3 (Trang 34)
Hình 3.6: Thông số kỹ thuật của Arduino Uno R3 - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 3.6 Thông số kỹ thuật của Arduino Uno R3 (Trang 35)
30Hình 3.8: Động cơ RS550 - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
30 Hình 3.8: Động cơ RS550 (Trang 37)
Hình 3.11: Sơ đồ các chân của module BTS7960 - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 3.11 Sơ đồ các chân của module BTS7960 (Trang 38)
Hình 3.13: Động cơ bước - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 3.13 Động cơ bước (Trang 40)
Bảng 3.1: Các linh kiện, môđun sử dụng - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Bảng 3.1 Các linh kiện, môđun sử dụng (Trang 46)
Hình 3.19: Mô phỏng xe tự hành - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 3.19 Mô phỏng xe tự hành (Trang 47)
Hình 3.21: Phần mềm format thẻ nhớ - Ứng dụng xử lý ảnh trong chạy theo làn đường, nhận diện biển báo và áp dụng lên xe tự hành
Hình 3.21 Phần mềm format thẻ nhớ (Trang 48)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w