1. Trang chủ
  2. » Cao đẳng - Đại học

Ứng dụng xử lí ảnh trong tránh va chạm, nhận diện biển báo và áp dụng lên xe tự hành

101 54 0

Đ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 Tránh Va Chạm, Nhận Diện Biển Báo Và Áp Dụng Lên Xe Tự Hành
Tác giả Nguyễn Trung Trực, Lê Minh Hùng
Người hướng dẫn Ths. Nguyễn Thành Tuyên
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Cơ Khí Động Lực
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2020
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 101
Dung lượng 7,33 MB

Cấu trúc

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

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ế toàn cầu, được ứng dụng rộng rãi trong các ngành 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 ngoại lệ, với cuộc đua phát triển xe thông minh không người lái, trong đó Tesla nổi bật nhờ đầu tư mạnh mẽ vào nghiên cứu Ô tô tự hành được phân chia thành 5 cấp độ bởi Hiệp hội kỹ sư ô tô (SAE), và Tesla đang hướng tới việc nâng cấp xe của mình lên cấp độ 5, cho phép hoạt động hoàn toàn tự động Tại Việt Nam, ngành ô tô cần có những bước chuyển mình để theo kịp xu thế này, và FPT đang tích cực phát triển mảng ô tô tự hành thông qua “Cuộc Thi Số”, tạo sân chơi cho giới trẻ đam mê công nghệ và tìm kiếm nhân tài cho tương lai.

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 phát triển mạnh mẽ và sẽ tiếp tục là xu hướng trong tương lai.

Xu hướng ô tô tự hành đang trở thành một yêu cầu thiết yếu trong ngành công nghiệp ô tô trong những năm tới Ngành ô tô Việt Nam đang phát triển mạnh mẽ và đầy tiềm năng, cùng với sự gia tăng đam mê nghiên cứu trong lĩnh vực này Chúng tôi tin rằng không lâu nữa, ô tô tự hành sẽ không còn là khái niệm xa lạ, mà sẽ trở thành một thực tế hiển nhiên tại Việt Nam.

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à đưa ra phương trình tính toán để giữ xe luôn trong làn đường 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 để tăng độ chính xác Từ đó, tác giả đề xuất phương pháp hiệu quả nhất để xác định lane và biển báo giao thông.

Nghiên cứu của Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky và Ilya Sutskever đã giới thiệu một phương pháp đơn giản để ngăn chặn hiện tượng overfitting trong mạng neural networks Việc áp dụng mạng neural networks trong đào tạo máy học không chỉ giúp tăng tốc quá trình học mà còn nâng cao độ chính xác so với các phương pháp 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, các tác giả đã giới thiệu phương pháp xây dựng khung hình giúp đào tạo mạng sâu hiệu quả hơn so với các mạng hiện tại Đề tài nhấn mạnh cách định dạng rõ ràng các lớ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 khả năng nhận diện hình ảnh.

Nghiên cứu về các hàm không được ước tính cho thấy rằng việc tối ưu hóa và cải thiện độ chính xác có thể đạt được thông qua việc tăng cường số lượng lớp trong mạng nơ-ron Các bằng chứng thực nghiệm đã được cung cấp để chứng minh cho điều này.

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

Nghiên cứu của Trương Quốc Bảo và Trương Quốc Định từ trường đại học Cần Thơ vào năm 2015 đã phát triển một hệ thống tự động phát hiện và nhận diện biển báo giao thông đường bộ, sử dụng đặc trưng cục bộ HOG và mạng nơron nhân tạo Hệ thống này có khả năng nhận dạng 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 Thực nghiệm cho thấy thời gian phát hiện và nhận diện một biển báo trên một frame ảnh khoảng 0.021 giây với mô hình phân lớp mạng nơron nhân tạo, và khoảng 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 đã giới thiệu các kiểu mạng neural khác nhau và đặc điểm nổi bật của chúng Đặc biệt, luận văn cung cấp định nghĩa chi tiết về mạng neural tích chập, cùng với hướng dẫn xây dựng mô hình mạng này để nhận diện biển báo giao thông hiệu quả trên đường.

Đồ án tốt nghiệp "Robot vận chuyển mẫu xét nghiệm trong bệnh viện" của Đinh Việt Hùng và Đặng Thị Huỳnh Như, Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, năm 2019, đã trình bày chi tiết về quy trình thu thập và xử lý hình ảnh của các lane đường trong bệnh viện, cho phép robot hoạt động tự động trong một môi trường đã được thiết lập Tuy nhiên, hạn chế lớn của đề tài là robot chỉ có khả năng tự vận hành trong môi trường cố định, không thể hoạt động hiệu quả ở những 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 di chuyển theo làn đường và nhận diện biển báo giao thông, nhằm mục tiêu cho phé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 giao thông trong các điều kiện nhất định Đồ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 hoạt động dựa trên hệ thống này.

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

Đề tài nghiên cứu này tập trung vào việc phát triển 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ố thiết yếu 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 và hiệu suất hoạt động của xe.

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ô, được thiết kế để đáp ứng đầy đủ các tiêu chuẩn quy định Theo giáo sư Sridhar Lakshmanan từ trường đại học Michigan-Dearborn, các yêu cầu này đảm bảo tính an toàn và hiệu quả trong việc vận hành của xe tự hành.

- 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, sử dụng GPS để xác định nhiệm vụ bằng cách thiết lập điểm đầu và điểm cuối của hành trình dựa trên tính năng dẫn đường của Google Maps Ngoài ra, các công nghệ hỗ trợ như radar, laser và camera giúp 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 độ tự động hóa cơ bản nhất, trong đó một số khía cạnh của quá trình lái xe được thực hiện độc lập Các xe này sử dụng dữ liệu từ cảm biến và camera, 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 Ví dụ điển hình là các hệ thống giữ làn đường, hỗ trợ người lái trong việc duy trì vị trí trên đường.

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, mang lại sự tiện lợi và an toàn cho người lái.

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 điều khiển của người lái sẽ ở chế độ chờ, nhưng vẫn có thể can thiệp khi cần thiết Điều này cho phép xe tự động thực hiện tất cả các khía cạnh của việc lái xe trong một số điều kiện nhất định, mang lại sự thuận tiện và an toàn cho người sử dụng.

Xe tự lái chỉ có thể hoạt động trong những điều kiện nhất định, nơi mà nó có thể kiểm soát tất cả các chức năng an toàn quan trọng Điều này yêu cầu sự hiện diện của tài xế để đảm bảo can thiệp khi cần thiết.

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

Xe tự hành cấp 5 là loại xe hoàn toàn tự động, cho phép di chuyển ở mọi nơi với tùy chọn trình điều khiển Điểm khác biệt chính giữa cấp 4 và cấp 5 là khả năng hoạt động trong mọi điều kiện, không chỉ giới hạn trong các khu vực đã được thiết lập trước như thành phố Ở cấp độ 5, lượng dữ liệu được xử lý gần như triệt để, mang lại hiệu suất và độ tin cậy cao hơn cho việc di chuyển tự động.

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 hiện có 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 hiện nay là trí tuệ nhân tạo (AI), được định nghĩa cơ bản 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 Để thực hiện điều này, cần thiết lập nền tảng cho máy tính, cho phép nó tiếp nhận kiến thức mới từ các dữ liệu đã được đào tạo bởi con người Giải pháp cho việc thiết lập nền tảng và tư duy cho 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 một lượng lớn dữ liệu để tự động tìm ra thông tin Đối với xe tự hành, thuật toán giúp xe nhận diện 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 xung quanh Tuy nhiên, việc xử lý khối lượng thông tin lớn này là thách thức với các thuật toán thông thường Do đó, giải pháp là cho máy tính bắt chước cách 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.

Mạng lưới thần kinh nhân tạo được cấu thành từ các mạng lưới thần kinh với nhiều nơ-ron và các lớp kết nối chặt chẽ Phương pháp chính để hình thành các mạng lưới này là học sâu (Deep Learning) 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 và nhận diện các đặc điểm chung, giúp xây dựng một mạng lưới thần kinh có khả năng nhận dạng đặc trưng của dữ liệu đầu vào.

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, mỗi nơron đại diện cho một thuật toán đặc trưng riêng Mạng lưới này có khả năng phân tích và nhận diện khuôn mặt trong 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ý hình ảnh một cách hiệu quả Sơ đồ hoạt động của deep learning trong nhận diện khuôn mặt thể hiện rõ cách thức mà công nghệ này xử lý và phân tích dữ liệu hình ảnh.

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 thù 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 Keras và TensorFlow, trong khi phương pháp thứ hai chỉ sử dụng TensorFlow để 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 gần như tự động, bắt đầu bằng việc phân loại dữ liệu đầu vào thành các đối tượng và loại bỏ các dữ liệu lỗi như hình mờ, vỡ hoặc không phù hợp Đối với mô hình nhận diện làn đường, ảnh được chia thành hai lớp: làn đường đi thẳng và làn đường vào cua Dữ liệu chuẩn yêu cầu ảnh phải rõ ràng và đúng mục đích, ví dụ như thư mục chứa ảnh đường cong không được có ảnh đường thẳng Ngoài ra, việc thêm các đối tượng gây nhiễu như lá cây và cành vào thư mục cũng rất quan trọng để 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:

Bước đầu tiên trong quy trình chuẩn bị dữ liệu là chia các ảnh đầu vào thành ba thư mục: “thang 1”, “cong” và “thang 2” Việc phân chia này nhằm tăng tính độc lập của dữ liệu, bởi vì địa hình thực nghiệm có sự khác biệt lớn giữa đoạn thẳng đầu tiên và đoạn thẳng thứ hai sau khi 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à tiến hành đào tạo mô hình thần kinh nhân tạo, thời gian của quá trình này phụ thuộc vào kích thước dữ liệu và khả năng 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 quá mạnh, giúp tăng tốc độ xử lý và thời gian đáp ứng nhanh chóng.

Nhược điểm của quá trình nhận diện đặc điểm tự động là sự không rõ ràng của đối tượng, như cây cỏ phủ lên vỉa hè hoặc lá rơi, khiến nó dễ bị ảnh hưởng bởi các điều kiện môi trường Điều này dẫn đến tín hiệu điều khiển gửi về có thể bị sai sót, ả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 yêu cầu xác định đối tượng cầ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 nhiều 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 trước khi học sâu Nhờ vậy, phương pháp này tập trung vào việc học đặc điểm của đối tượng ngay từ đầu.

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ắt đầu, chúng ta cần thu thập dữ liệu hình ảnh của các đối tượng cần nhận diện, đồng thời loại bỏ những hình ảnh không đạt tiêu chuẩn như bị mờ hoặc vỡ Sau khi hoàn tất, các hình ảnh sẽ được phân chia thành hai thư mục: một cho việc đào tạo mô hình và một cho việc kiểm tra chất lượng 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 sẽ được đánh dấu như sau: đường thẳng bên trái là “t1t”, bên phải là “t1p”, cong trái là “ct”, cong phải là “cp”, đường thẳng thứ hai là “t2p”, bồn cây là “td”, biển báo stop là “stop” và người là “human” Việc phân vùng đối tượng chi tiết này 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, việc chọn model zoo phù hợp với thiết bị là rất quan trọng Mỗi model zoo cung cấp hai chỉ số cơ bản: tốc độ phân tích và độ chính xác khi mô hình hoạt động thực tế Tùy thuộc vào loại mô hình cần đào tạo và sức mạnh phần cứng của thiết bị, chúng ta sẽ lựa chọn model zoo phù hợp Trong trường hợp của chúng tôi, chúng tôi đã sử dụng 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 mang lại độ 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 giảm thiểu khả năng gửi tín hiệu sai.

Nhược điểm của việc sử dụng model zoo là độ chính xác cao nhưng phụ thuộc nhiều vào loại model được chọn, với sự khác biệt lớn giữa các model zoo (xem chi tiết trong chương 4) Thêm vào đó, 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 Ngôn ngữ này phát triển nhiều loại ứng dụng, từ phần mềm desktop đến ứng dụng web Python cũng được ưa chuộng trong lĩnh vực trí tuệ nhân tạo, đặc biệt là machine learning Ban đầu, Python được phát triển cho nền tảng Unix, nhưng hiện nay nó có thể chạy trên tất cả các hệ điều hành như MS-DOS, Mac OS, OS/2, Windows, Linux và các hệ điều hành Unix khác.

Python, ngôn ngữ lập trình được Guido van Rossum sáng lập vào năm 1989, đã được phát triển trong 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ù có sự đóng góp từ nhiều cá nhân, Guido van Rossum vẫn là tác giả chính và giữ vai trò quyết định quan trọng trong hướng phát triển của Python.

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

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ể hoạt động trên nhiều hệ điều hành như Windows, Mac OSX và Linux.

THƯ VIỆN OPENCV

OpenCV (Thư viện Thị giác Máy tính Mã nguồn Mở) là một thư viện miễn phí, lý tưởng cho những ai mới bắt đầu tìm hiểu về học thuật Thư viện này được ứng dụng rộng rãi trong các lĩnh vực như thị giác máy tính, xử lý ảnh và máy học 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 như Windows, Linux, Mac OS, iOS và Android Được phát triển bởi Gary Bradsky tại Intel vào năm 1999 và ra mắt năm 2000, OpenCV có nhiều ứng dụng như 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ý hình ảnh đầu vào và nhận dạng ảnh.

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, 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/2015, và phiên bản TensorFlow 2.0 Alpha được công bố vào ngày 4/3/2019 Mặc dù phần Core của TensorFlow được viết bằng C++, người dùng có thể phát triển ứng dụng bằng cả C++ và Python, trong đó Python vẫn là ngôn ngữ phổ biến nhất.

TensorFlow là một thư viện học máy, tên gọi được hình thành từ việc kết hợp hai yếu tố: Tensor và Flow Tensor là một kiểu dữ liệu dạng mảng nhiều chiều, bao gồm các loại như 1-d tensor (vector) và 2-d tensor (ma trận) Do đó, TensorFlow có thể được hiểu là các dòng dữ liệu Tensor, cho phép xử lý và phân tích dữ liệu một cách hiệu quả.

TensorFlow cung cấp ba cấp độ APIs: Low-level, Mid-level và High-level Low Level APIs cho phép 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 người dùng dễ dàng xây dựng 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, chính xác là Nvidia Jetson Nano Developer Kit Thiết bị này có kích thước nhỏ gọn như 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, cung cấp giải pháp hoàn chỉnh cho các nhà phát triển Phiên bản mô-đun đi kèm với bộ nhớ trong 16GB, trong khi bộ kit sử dụng thẻ nhớ microSD.

The Nvidia Jetson Nano Developer Kit features an extensive 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ũng cung cấp khả năng cài đặt các framework Machine Learning 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 và framework AI yêu thích vào sản phẩm của họ.

Hỗ trợ GPU này trang bị CPU 4 nhân 64-bit ARM Cortex-A57, RAM 4GB và bộ xử lý video có khả năng xử lý 4K 30fps cho mã hóa và 4K 60fps cho giải mã, cùng với khe cắm PCle và USB 3.0.

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

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

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

Webcam Logitech C270 là một sản phẩm nổi bật của Logitech, nổi bật với khả năng kết nối linh hoạt với nhiều thiết bị như laptop và PC, mang đến trải nghiệm hình ảnh chất lượng cao.

Webcam Logitech C270 HD được trang bị công nghệ tự động lấy nét, tự động điều chỉnh ánh sáng và lọc tiếng ồn hiệu quả nhờ công nghệ Logitech RightSoundTM, đồng thời còn tích hợp sẵn micro.

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 3 vi điều khiển 8bit AVR: ATmega8, ATmega168 và ATmega328 Bộ vi điều khiển này có khả năng thực hiện các nhiệm 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 khả năng 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, trong đó một phần được sử dụng cho bootloader Ngoài ra, nó còn có 2KB SRAM để lưu trữ giá trị các biến khai báo trong lập trình và 1KB EEPROM, hoạt động như một ổ cứng mini, cho phép ghi và đọc dữ liệu mà không lo mất khi mất điện, khác với 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 cho mô hình xe có khả năng di chuyển theo làn đường đã được xác định và nhận diện biển báo để dừng lại Xe đượ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ả đều đượ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 sẽ gửi tín hiệu xuống Arduino Uno R3 Arduino Uno R3 nhận tín hiệu và thực hiện việc điều khiển động cơ cũng như điều chỉ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ỉ dùng để xuất tín hiệu ra các thiết bị như LED mà còn có khả năng đọc tín hiệu từ nút nhấn, công tắc và cảm biến Hơn nữa, nó còn tích hợp các chuẩn truyền dữ liệu như UART, I2C và SPI.

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 vào thiết bị, kết nối với màn hình máy tính hoặc tivi, cùng với bàn phím và chuột, bạn 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 hoạt động hoàn toàn trên thẻ SD này, do đó cần chọn thẻ có dung lượng đủ lớn để chứa toàn bộ dữ liệu cần thiết.

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à bộ kit Arduino thế hệ thứ 3, 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ẽ Nó đượ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 5V qua USB hoặc sử dụng nguồn ngoài với điện áp khuyên dùng từ 7-12V DC Cần lưu ý rằng nếu điện áp vượt quá 20V, kit sẽ bị hỏng, do đó cần thận trọng khi cấp nguồn ngoài cho thiết bị.

GND (Ground) là điểm nối đất của nguồn điện cung cấp 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, việc kết nối các chân GND với nhau là rất quan trọng.

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 đo được ở chân này với giá trị luôn là 5V Tuy nhiên, cần lưu ý rằng không nên lấy nguồn từ chân IOREF để cấp cho các linh kiện 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 thực hiện thao tác 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 sẽ đượ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 được sử dụng để gửi (transmit - TX) và nhận (receive - RX) dữ liệu Qua hai chân này, Arduino Uno có khả năng giao tiếp với các thiết bị khác.

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 10(SS), 11(MOSI), 12(MISO) và 13(SCK) Ngoài các chức năng cơ bản, bốn chân này còn được sử dụng để 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ính nhận tín hiệu từ Arduino Uno R3, được truyền từ Jetson Nano, giúp xe di chuyển thẳng và dừng lại khi gặp biển báo.

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

-Đườ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 đã được thiết kế trước đó, chúng ta cần chuẩn bị linh kiện và mô-đun cho phần 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, 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 Inventor 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 từ thiết kế cơ bản đến chi tiết máy và trực quan hóa sản phẩm Phần mềm này cũng kết 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 Ngoài ra, Inventor cung cấp môi trường thiết kế và phím tắt tương tự AutoCAD, giúp người dùng dễ dàng chuyển từ 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ặc dù mỗi hệ điều hành có một số khác biệt nhỏ, quy trình cài đặt cơ bản sẽ bao gồm các bước tương tự, đặc biệt là trên Windows.

Để format thẻ nhớ hiệu quả, bạn nên sử dụng phần mềm chuyên dụng như SD Memory Card Formatter trên Windows, thay vì sử dụng chức năng format mặc định của hệ điều hành Việc này đặc biệt quan trọng khi thẻ nhớ đã được 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 flash it onto a microSD card Select the appropriate image version, such as JetPack 4.3, and choose the correct drive for the installation The entire 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, hãy mở terminal và sử dụng lệnh phù hợp.

- 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 phù hợp với phiên bản JetPack Đối với JetPack 4.3, phiên bản TensorFlow tương ứng sẽ đáp ứng nhu cầu sử dụng của bạn.

- 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 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, nên cài đặt các chương trình này trên Ubuntu Đầu tiên, thiết lập card đồ họa NVIDIA làm mặc định, vào mục tìm kiếm chọn "Software and Update", 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

Tải phiên bản Cuda và cuDNN từ trang chủ của Nvidia và thực hiện cài đặt theo hướng dẫn (chúng tôi sử dụng Cuda 10.1 và cuDNN 7.5) Sau khi cài đặt hoàn tất, gõ lệnh nvidia-smi để kiểm tra; nếu thông số hiển thị giống như hình dưới, 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 dễ dàng 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 tạo điều kiện 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 Lý do nên sử dụng phiên bản Python 3.6.x thay vì 3.7.x hoặc cao hơn là vì Python 3.6.x tương thích ổn định với TensorFlow 1.x, trong khi TensorFlow 2.x yêu cầu Python 3.7.x hoặc các phiên bản mới hơn.

Bước 2: Tiến hành cài đặt các chương trình cần thiết cho Jetson Nano, bao gồm các gói đặc thù phục vụ cho việc đào tạo mô hình, như Keras phiên bản 2.2.0 và Scikit-learn, để hỗ trợ quá trình huấn luyện 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 với TensorFlow theo hướng đối tượng phức tạp hơn so với Keras, yêu cầu nhiều thiết lập hơn Để cài đặt TensorFlow Object Detection API từ GitHub, chúng tôi sử dụng phiên bản TensorFlow 1.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 protobuf files and executing the setup.py script Navigate to the research directory to convert all proto files to py using the command: "protoc object_detection/protos/*.proto python_out=." Then, build and install the package by running "python setup.py build" followed by "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 đã có mô hình được huấn luyện, bước đầu tiên là khởi tạo các thư viện cần thiết và tải mô hình vào chương trình Tiếp theo, cần đọc ảnh đầu vào và xử lý để phù hợp với mô hình Ảnh sẽ được đưa vào để nhận diện, với ba lớp tương ứng với thứ tự làn đường và góc quay: lớp 0 cho 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ể tiếp tục đi thẳng 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 thu thập ảnh đầu vào, chúng ta tiến hành chuẩn hóa theo lưu đồ giải thuật đã đề ra Ảnh đầu vào sẽ được đọc và xử lý tương tự như trong quá trình thu thập dữ liệu để đảm bảo 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 để xác nhận việc phát hiện Cuối cùng, diện tích của biển báo sẽ được tính toán theo đơn vị thích 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 remote desktop là cho phép người dùng quan sát và xử lý hình ảnh từ camera, cũng như sửa lỗi và điều chỉnh mã từ xa qua laptop, mà không cần phải đến tận nơi Điều này giúp tiết kiệm thời gian và thuận tiện hơn trong quá trình sửa chữa Nhóm chúng tôi sử dụng phần mềm VNC để thực hiện remote desktop, với các bước tiến hành cụ thể như sau:

Bước đầu tiên để sử dụng phần mềm VNC Viewer trên laptop là cài đặt nó Bạn có thể tải phần mềm bằng cách truy cập vào trang web chính thức Sau khi cài đặt thành công, bạn sẽ thấy giao diện của phần mềm.

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: 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 và lập trình 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 Thêm vào đó, việc truyền dữ liệu từ Jetson sang laptop qua VNC có thể gặp độ trễ tín hiệu, mặc dù độ trễ này vẫn nằm trong khoảng chấp nhận được, từ 1 đến 2 giây.

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

Ngày đăng: 19/07/2021, 10:03

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w