Mục lục:

Chuyển giao việc học với NVIDIA JetBot - Vui vẻ với các nút giao thông: 6 bước
Chuyển giao việc học với NVIDIA JetBot - Vui vẻ với các nút giao thông: 6 bước

Video: Chuyển giao việc học với NVIDIA JetBot - Vui vẻ với các nút giao thông: 6 bước

Video: Chuyển giao việc học với NVIDIA JetBot - Vui vẻ với các nút giao thông: 6 bước
Video: [ PIVIETNAM.COM.VN ] Định vị và điều khiển Robot AI Jetbot trong không gian với Camera - Part 1 2024, Tháng mười một
Anonim

Theo dvillevaldMy GithubFollow Giới thiệu: Tôi thích các ứng dụng AI và học máy, đặc biệt là trong lĩnh vực robot Thông tin thêm về dvillevald »

Hướng dẫn rô bốt của bạn tìm đường trong mê cung hình nón giao thông bằng cách sử dụng máy ảnh và mô hình học sâu hiện đại.

Quân nhu

  • NVIDIA JetBot

    Trang Bill of Materials của NVIDIA JetBot Wiki liệt kê mọi thứ bạn cần để xây dựng JetBot, cùng với các liên kết mua hàng từ các nhà cung cấp phổ biến

  • Máy tính có GPU NVIDIA

    Cần thiết để đào tạo mô hình

  • BlueDot Trading 4”RC Racing Agility Cones, Orange - Bộ 20

Bước 1: Động lực

Image
Image

Mỗi khi tôi lái xe trong khu vực co hẹp, tôi nghĩ sẽ khó khăn như thế nào khi một chiếc ô tô tự lái vượt qua các nút giao thông. Hóa ra không quá khó với JetBot mới của NVIDIA - chỉ với vài trăm hình ảnh, bạn có thể đào tạo một mô hình học sâu hiện đại để dạy cho rô bốt của bạn cách tìm đường trong mê cung hình nón giao thông đồ chơi chỉ sử dụng máy ảnh trên bo mạch và không sử dụng các cảm biến khác.

Bước 2: NVIDIA JetBot & Tổng quan về dự án

NVIDIA JetBot & Tổng quan về dự án
NVIDIA JetBot & Tổng quan về dự án

JetBot là một robot mã nguồn mở dựa trên bộ công cụ NVIDIA Jetson Nano. Bạn có thể tìm thấy hướng dẫn chi tiết về cách xây dựng và thiết lập nó tại đây.

Dự án này là một ví dụ về tránh va chạm được sửa đổi từ NVIDIA JetBot Wiki. Nó bao gồm ba bước chính, mỗi bước được mô tả trong một sổ ghi chép Jupyter riêng biệt:

  • Thu thập dữ liệu trên JetBot - notebook data_collection_cones.ipynb
  • Mô hình đào tạo trên máy GPU khác - notebook train_model_cones.ipynb
  • Chạy bản demo trực tiếp trên JetBot - notebook live_demo_cones.ipynb

Bạn có thể tìm thấy ba máy tính xách tay Jupyter này tại đây

Bước 3: Xây dựng JetBot và tải lên Máy tính xách tay Jupyter

  1. Xây dựng và thiết lập JetBot như được giải thích ở đây
  2. Kết nối với rô bốt của bạn bằng cách điều hướng đến https://: 8888Đăng nhập bằng jetbot mật khẩu mặc định
  3. Tắt tất cả các sổ ghi chép đang chạy khác bằng cách chọn Kernel -> Shutdown All Kernels…
  4. Điều hướng đến ~ / Notebooks /
  5. Tạo thư mục con mới ~ / Notebooks / traffic_cones_driving /
  6. Tải data_collection_cones.ipynb và live_demo_cones.ipynb lên ~ / Notebooks / traffic_cones_driving /

QUAN TRỌNG: Máy tính xách tay Jupyter data_collection_cones.ipynb và live_demo_cones.ipynb được tham chiếu trong hướng dẫn này phải được chạy trên JetBot trong khi train_model_cones.ipynb - trên máy tính có GPU.

Do đó, chúng tôi phải tải data_collection_cones.ipynb và live_demo_cones.ipynb lên JetBot và đặt chúng vào ~ / Notebooks / traffic_cones_driving /

Bước 4: Thu thập dữ liệu đào tạo trên JetBot

Chúng tôi sẽ thu thập một tập dữ liệu phân loại hình ảnh sẽ được sử dụng để giúp JetBot hoạt động trong mê cung của các hình nón giao thông. JetBot sẽ học cách ước tính xác suất của bốn tình huống (lớp):

  • Miễn phí - khi an toàn để tiến về phía trước
  • Bị chặn - khi có chướng ngại vật phía trước rô bốt
  • Trái - khi rô bốt quay sang trái
  • Phải - khi nào rô bốt sẽ quay sang phải

Để thu thập dữ liệu đào tạo trên JetBot, chúng tôi sẽ sử dụng sổ ghi chép Jupyter data_collection_cones.ipynb chứa hướng dẫn chi tiết về cách thực hiện. Để chạy sổ ghi chép này trên JetBot, hãy làm theo các bước tiếp theo:

  1. Kết nối với rô bốt của bạn bằng cách điều hướng đến https://: jetbot-ip-address:: 8888
  2. Đăng nhập bằng jetbot mật khẩu mặc định
  3. Tắt tất cả các sổ ghi chép đang chạy khác bằng cách chọn Kernel -> Shutdown All Kernels…
  4. Điều hướng đến ~ / Notebooks / traffic_cones_driving /
  5. Mở và làm theo sổ ghi chép data_collection_cones.ipynb

Bước 5: Đào tạo mạng thần kinh trên máy GPU

Tiếp theo, chúng tôi sẽ sử dụng dữ liệu thu thập được để đào tạo lại mô hình học sâu AlexNet trên máy GPU (máy chủ) bằng cách chạy train_model_cones.ipynb.

Lưu ý rằng train_model_cones.ipynb là sổ ghi chép Jupyter duy nhất trong hướng dẫn này KHÔNG chạy trên JetBot

  1. Kết nối với máy GPU đã cài đặt PyTorch và máy chủ Jupyter Lab đang chạy
  2. Tải sổ ghi chép train_model_cones.ipynb lên máy tính này
  3. Tải lên tệp dataset_cones.zip mà bạn đã tạo trong sổ ghi chép data_collection_cones.ipynb và giải nén tập dữ liệu này. (Sau bước này, bạn sẽ thấy một thư mục có tên dataset_cones xuất hiện trong trình duyệt tệp.)
  4. Mở và làm theo sổ tay train_model_cones.ipynb. Ở cuối bước này, bạn sẽ tạo một mô hình - tệp best_model_cones.pth sau đó phải được tải lên JetBot để chạy bản demo trực tiếp.

Bước 6: Chạy Demo trực tiếp trên JetBot

Chạy Demo trực tiếp trên JetBot
Chạy Demo trực tiếp trên JetBot

Bước cuối cùng này là tải mô hình best_model_cones.pth lên JetBot và chạy nó.

  1. Cung cấp năng lượng cho robot của bạn từ bộ pin USB
  2. Kết nối lại với rô bốt của bạn bằng cách điều hướng đến https://: jetbot-ip-address:: 8888
  3. Đăng nhập bằng jetbot mật khẩu mặc định
  4. Tắt tất cả các sổ ghi chép đang chạy khác bằng cách chọn Kernel -> Shutdown All Kernels…
  5. Điều hướng đến ~ / Notebooks / traffic_cones_driving
  6. Mở và làm theo sổ tay live_demo_cones.ipynb

Bắt đầu thận trọng và cung cấp cho JetBot đủ không gian để di chuyển. Hãy thử cấu hình hình nón khác nhau và xem robot hoạt động tốt như thế nào trong các môi trường, ánh sáng khác nhau, v.v. Trong khi sổ ghi chép live_demo_cones.ipynb giải thích chi tiết tất cả các bước, biểu đồ sau đây cho thấy logic di chuyển của robot dựa trên xác suất được dự đoán bởi các mô hình.

Sổ tay cũng giải thích cách lưu trữ lịch sử di chuyển của rô bốt với các xác suất tự do / trái / phải / bị chặn do mô hình dự đoán và cách tạo hai video FPV (Chế độ xem người thứ nhất) (ở tốc độ 1 khung hình / giây và 15 khung hình / giây) với phép đo từ xa xếp chồng và Dữ liệu hành động JetBot. Chúng hữu ích cho việc gỡ lỗi, điều chỉnh bộ điều khiển PID và cải tiến mô hình.

Hãy vui vẻ và cho tôi biết nếu bạn có thắc mắc!:-)

Mã hiện có trên Github

Đề xuất: