Съдържание:

Трансферно обучение с NVIDIA JetBot - забавление с конуси на трафика: 6 стъпки
Трансферно обучение с NVIDIA JetBot - забавление с конуси на трафика: 6 стъпки

Видео: Трансферно обучение с NVIDIA JetBot - забавление с конуси на трафика: 6 стъпки

Видео: Трансферно обучение с NVIDIA JetBot - забавление с конуси на трафика: 6 стъпки
Видео: Обучение нейронной сети детектирования объектов для nvidia Jetson Nano 2024, Ноември
Anonim

От dvillevaldMy GithubFollow About: Харесвам AI и приложенията за машинно обучение, особено в роботиката Повече за dvillevald »

Научете вашия робот да намира път в лабиринт от конуси с помощта на камерата и най-съвременния модел за дълбоко обучение.

Консумативи

  • NVIDIA JetBot

    Страницата за материали на NVIDIA JetBot Wiki изброява всичко необходимо за изграждането на JetBot, както и връзки за закупуване от популярни доставчици

  • Компютър с NVIDIA GPU

    Необходимо за обучение на модела

  • BlueDot Trading 4”RC Racing Agility Cones, Orange - Комплект от 20 броя

Стъпка 1: Мотивация

Image
Image

Всеки път, когато карам в зоната на свиване, си мисля колко предизвикателно би било самоуправляващата се кола да се движи през конусите за движение. Оказва се, че не е толкова трудно с новия JetBot на NVIDIA-само с няколкостотин изображения можете да обучите най-съвременния модел за дълбоко обучение, за да научите робота си как да намери път в лабиринт от конуси за играчки използване само на вградената камера и без други сензори.

Стъпка 2: Преглед на NVIDIA JetBot & Project

Обзор на NVIDIA JetBot и проекти
Обзор на NVIDIA JetBot и проекти

JetBot е робот с отворен код, базиран на комплекта NVIDIA Jetson Nano. Тук можете да намерите подробни инструкции как да го изградите и настроите.

Този проект е модифициран пример за избягване на сблъсък от NVIDIA JetBot Wiki. Състои се от три основни стъпки, всяка от които е описана в отделна тетрадка на Jupyter:

  • Събирайте данни в JetBot - бележник data_collection_cones.ipynb
  • Модел на влак на друга GPU машина - преносим компютър train_model_cones.ipynb
  • Пуснете демонстрация на живо на JetBot - бележник live_demo_cones.ipynb

Можете да намерите тези три тетрадки Jupyter тук

Стъпка 3: Създайте JetBot и качете Jupyter Notebooks

  1. Изградете и настройте JetBot, както е обяснено тук
  2. Свържете се с вашия робот, като отидете на https://: 8888 Влезте с паролата по подразбиране jetbot
  3. Изключете всички други работещи преносими компютри, като изберете Ядро -> Изключване на всички ядра …
  4. Придвижете се до ~/Бележници/
  5. Създайте нова подпапка ~/Бележници/traffic_cones_driving/
  6. Качете data_collection_cones.ipynb и live_demo_cones.ipynb в ~/Notebooks/traffic_cones_driving/

ВАЖНО: Преносимите компютри Jupyter data_collection_cones.ipynb и live_demo_cones.ipynb, посочени в тези инструкции, трябва да се изпълняват на JetBot, докато train_model_cones.ipynb - на компютър с графичен процесор.

Затова трябва да качим data_collection_cones.ipynb и live_demo_cones.ipynb в JetBot и да ги поставим в ~/Notebooks/traffic_cones_driving/

Стъпка 4: Събиране на данни за обучение в JetBot

Ще съберем набор от данни за класификация на изображения, които ще бъдат използвани, за да помогнем на JetBot да работи в лабиринт от конуси на трафика. JetBot ще научи как да оценява вероятностите на четири сценария (класове):

  • Безплатно - когато е безопасно да продължите напред
  • Блокиран - когато има препятствие пред робота
  • Вляво - когато роботът трябва да се завърти наляво
  • Вдясно - когато роботът трябва да се завърти надясно

За да събираме данните за обучението в JetBot, ще използваме бележника Jupyter data_collection_cones.ipynb, който съдържа подробни инструкции как да го направите. За да стартирате този бележник на JetBot, изпълнете следните стъпки:

  1. Свържете се с вашия робот, като отидете на https://: jetbot-ip-address:: 8888
  2. Влезте с паролата по подразбиране jetbot
  3. Изключете всички други работещи преносими компютри, като изберете Ядро -> Изключване на всички ядра …
  4. Придвижете се до ~/Бележници/traffic_cones_driving/
  5. Отворете и следвайте бележника data_collection_cones.ipynb

Стъпка 5: Обучете невронната мрежа на GPU машина

След това ще използваме събраните данни за повторно обучение на модела за дълбоко обучение AlexNet на GPU машина (хост), като стартира train_model_cones.ipynb.

Обърнете внимание, че train_model_cones.ipynb е единственият бележник на Jupyter в този урок, който се изпълнява НЕ на JetBot

  1. Свържете се с GPU машина с инсталиран PyTorch и работещ сървър Jupyter Lab
  2. Качете бележника train_model_cones.ipynb и на тази машина
  3. Качете набора от данни_cones.zip, който сте създали в бележника data_collection_cones.ipynb и извлечете този набор от данни. (След тази стъпка трябва да видите папка с име_набора данни във файловия браузър.)
  4. Отворете и следвайте бележника train_model_cones.ipynb. В края на тази стъпка ще създадете модел - файла best_model_cones.pth, който след това трябва да бъде качен в JetBot, за да стартира демонстрацията на живо.

Стъпка 6: Стартирайте демонстрацията на живо на JetBot

Пуснете демонстрация на живо на JetBot
Пуснете демонстрация на живо на JetBot

Последната стъпка е да качите модела best_model_cones.pth в JetBot и да го стартирате.

  1. Захранвайте робота си от USB батерията
  2. Свържете се отново с вашия робот, като отидете на https://: jetbot-ip-address:: 8888
  3. Влезте с паролата по подразбиране jetbot
  4. Изключете всички други работещи преносими компютри, като изберете Ядро -> Изключване на всички ядра …
  5. Придвижете се до ~/Notebooks/traffic_cones_driving
  6. Отворете и следвайте бележника live_demo_cones.ipynb

Започнете внимателно и дайте на JetBot достатъчно място за движение. Опитайте различна конфигурация на конуса и вижте колко добре се представя роботът в различни среди, осветление и т.н. Докато лаптопът live_demo_cones.ipynb обяснява подробно всички стъпки, следната диаграма показва логиката на движенията на робота предвид вероятностите, предвидени от моделите.

Бележникът също така обяснява как да се съхранява историята на движенията на робота с вероятности, предвидени от модела за свободни/наляво/надясно/блокирани и как да се направят два видеоклипа FPV (изглед от първо лице) (при 1 кадъра в секунда и 15 кадъра в секунда) с наложена телеметрия и Данни за действията на JetBot. Те са полезни за отстраняване на грешки, настройка на PID контролер и подобряване на модела.

Забавлявайте се и ме уведомете, ако имате въпроси!:-)

Кодът е достъпен в Github

Препоръчано: