Talaan ng mga Nilalaman:

Paglipat ng Pag-aaral Sa NVIDIA JetBot - Masaya Sa Mga Traffic Cone: 6 na Hakbang
Paglipat ng Pag-aaral Sa NVIDIA JetBot - Masaya Sa Mga Traffic Cone: 6 na Hakbang

Video: Paglipat ng Pag-aaral Sa NVIDIA JetBot - Masaya Sa Mga Traffic Cone: 6 na Hakbang

Video: Paglipat ng Pag-aaral Sa NVIDIA JetBot - Masaya Sa Mga Traffic Cone: 6 na Hakbang
Video: Chia 2.0 GPU Plotting and Farming 2023: THE ULTIMATE GUIDE 2024, Nobyembre
Anonim

Sa pamamagitan ng dvillevaldMy GithubFollow About: Gusto ko ng mga application ng pag-aaral ng AI at machine, lalo na sa robotics Higit Pa Tungkol sa dvillevald »

Turuan ang iyong robot upang makahanap ng isang landas sa isang maze ng mga traffic cone gamit ang camera at state-of-the-art na malalim na modelo ng pag-aaral.

Mga gamit

  • NVIDIA JetBot

    Ang pahina ng Mga Materyal ng NVIDIA JetBot Wiki ay naglilista ng lahat ng kailangan mo upang maitayo ang JetBot, kasama ang pagbili ng mga link mula sa mga tanyag na vendor

  • Computer na may NVIDIA GPU

    Kailangan upang sanayin ang modelo

  • BlueDot Trading 4”RC Racing Agility Cones, Orange - Itakda ng 20

Hakbang 1: Pagganyak

Image
Image

Sa tuwing magmaneho ako sa lugar ng pag-urong ay iniisip ko kung gaano ito mapaghamon para sa isang kotse na nagmamaneho sa sarili na mag-navigate sa mga cone ng trapiko. Ito ay hindi napakahirap sa bagong JetBot ng NVIDIA - na may lamang daang daang mga imahe, maaari mong sanayin ang isang state-of-the-art na malalim na modelo ng pag-aaral upang turuan ang iyong robot kung paano makahanap ng isang landas sa isang maze ng mga laruang trapiko ng laruan gamit lamang ang onboard camera at walang ibang mga sensor.

Hakbang 2: Pangkalahatang ideya ng NVIDIA JetBot at Project

NVIDIA JetBot at Pangkalahatang-ideya ng Proyekto
NVIDIA JetBot at Pangkalahatang-ideya ng Proyekto

Ang JetBot ay isang bukas na mapagkukunan ng robot batay sa NVIDIA Jetson Nano kit. Maaari kang makahanap ng detalyadong mga tagubilin sa kung paano ito maitayo at i-set up dito.

Ang proyektong ito ay isang nabagong halimbawa ng pag-iwas sa banggaan mula sa NVIDIA JetBot Wiki. Binubuo ito ng tatlong pangunahing mga hakbang, bawat isa ay inilarawan sa isang hiwalay na notebook ng Jupyter:

  • Kolektahin ang data sa JetBot - notebook data_collection_cones.ipynb
  • Modelo ng tren sa ibang GPU machine - notebook train_model_cones.ipynb
  • Patakbuhin ang live na demo sa JetBot - notebook live_demo_cones.ipynb

Mahahanap mo rito ang tatlong notebook na Jupyter

Hakbang 3: Bumuo ng JetBot at Mag-upload ng Mga Jupyter Notebook

  1. Bumuo at mag-setup ng JetBot tulad ng ipinaliwanag dito
  2. Kumonekta sa iyong robot sa pamamagitan ng pag-navigate sa https://: 8888Mag-sign in gamit ang default na jetbot ng password
  3. I-shutdown ang lahat ng iba pang tumatakbo na mga notebook sa pamamagitan ng pagpili ng Kernel -> I-shutdown ang Lahat ng Kernels…
  4. Mag-navigate sa ~ / Mga Notebook /
  5. Lumikha ng bagong subfolder ~ / Mga Notebook / traffic_cones_diving /
  6. Mag-upload ng data_collection_cones.ipynb at live_demo_cones.ipynb sa ~ / Notebooks / traffic_cones_diving /

MAHALAGA: Ang data ng Jupyter notebooks data_collection_cones.ipynb at live_demo_cones.ipynb na isinangguni sa mga tagubiling ito ay dapat na patakbuhin sa JetBot habang ang train_model_cones.ipynb - sa isang computer na may GPU.

Samakatuwid kailangan nating mag-upload ng data_collection_cones.ipynb at live_demo_cones.ipynb sa JetBot at ilagay ang mga ito sa ~ / Notebooks / traffic_cones_diving /

Hakbang 4: Pagkolekta ng Data ng Pagsasanay sa JetBot

Mangolekta kami ng isang klasipikasyon ng imahe ng dataset na gagamitin upang matulungan ang JetBot na gumana sa isang maze ng mga traffic cone. Malalaman ng JetBot kung paano tantyahin ang mga posibilidad ng apat na mga sitwasyon (klase):

  • Libre - kung ligtas na sumulong
  • Na-block - kapag may isang balakid sa harap ng robot
  • Kaliwa - kung kailan dapat umiikot ang robot sa kaliwa
  • Kanan - kailan dapat umikot ang robot sa kanan

Upang makolekta ang data ng pagsasanay sa JetBot gagamitin namin ang Jupyter notebook data_collection_cones.ipynb na naglalaman ng mga tagubilin sa detalye kung paano ito gagawin. Upang patakbuhin ang kuwaderno na ito sa JetBot, sundin ang mga susunod na hakbang:

  1. Kumonekta sa iyong robot sa pamamagitan ng pag-navigate sa https://: jetbot-ip-address:: 8888
  2. Mag-sign in gamit ang default na password na jetbot
  3. I-shutdown ang lahat ng iba pang tumatakbo na mga notebook sa pamamagitan ng pagpili ng Kernel -> I-shutdown ang Lahat ng Kernels…
  4. Mag-navigate sa ~ / Mga Notebook / traffic_cones_diving /
  5. Buksan at sundin ang data_collection_cones.ipynb notebook

Hakbang 5: Sanayin ang Neural Network sa GPU Machine

Susunod, gagamitin namin ang nakolektang data upang muling sanayin ang malalim na modelo ng pag-aaral na AlexNet sa GPU machine (host) sa pamamagitan ng pagpapatakbo ng train_model_cones.ipynb.

Tandaan na ang train_model_cones.ipynb ay ang tanging Jupyter notebook sa tutorial na ito na pinapatakbo HINDI sa JetBot

  1. Kumonekta sa isang GPU machine na may naka-install na PyTorch at isang Jupyter Lab server na tumatakbo
  2. Mag-upload ng train_model_cones.ipynb notebook at sa machine na ito
  3. Mag-upload ng dataset_cones.zip file na iyong nilikha sa data_collection_cones.ipynb notebook at i-extract ang dataset na ito. (Pagkatapos ng hakbang na ito dapat mong makita ang isang folder na may pangalang dataset_cones na lilitaw sa file browser.)
  4. Buksan at sundin ang notebook_model_cones.ipynb notebook. Sa pagtatapos ng hakbang na ito, lilikha ka ng isang modelo - ang file na best_model_cones.pth na pagkatapos ay kailangang mai-upload sa JetBot upang patakbuhin ang live na demo.

Hakbang 6: Patakbuhin ang Live Demo sa JetBot

Patakbuhin ang Live Demo sa JetBot
Patakbuhin ang Live Demo sa JetBot

Ang huling hakbang na ito ay upang mai-upload ang modelo na best_model_cones.pth sa JetBot at patakbuhin ito.

  1. Patayin ang iyong robot mula sa USB baterya pack
  2. Kumonekta pabalik sa iyong robot sa pamamagitan ng pag-navigate sa https://: jetbot-ip-address:: 8888
  3. Mag-sign in gamit ang default na password na jetbot
  4. I-shutdown ang lahat ng iba pang tumatakbo na mga notebook sa pamamagitan ng pagpili ng Kernel -> I-shutdown ang Lahat ng Kernels…
  5. Mag-navigate sa ~ / Mga Notebook / traffic_cones_diving
  6. Buksan at sundin ang live_demo_cones.ipynb notebook

Magsimulang mag-ingat at bigyan ang JetBot ng sapat na puwang upang lumipat. Subukan ang iba't ibang pagsasaayos ng kono at tingnan kung gaano kahusay gumaganap ang robot sa iba't ibang mga kapaligiran, ilaw, atbp. Habang ang notebook na live_demo_cones.ipynb ay ipinapaliwanag ang lahat ng mga hakbang nang detalyado, ipinapakita ng sumusunod na tsart ang lohika ng mga paglipat ng robot na ibinigay ang mga posibilidad na hinulaang ng mga modelo.

Ipinapaliwanag din ng notebook kung paano iimbak ang kasaysayan ng mga robot na gumagalaw nang may libre / kaliwa / kanan / naka-block na mga posibilidad na hinulaang ng modelo at kung paano gumawa ng dalawang mga video ng FPV (First Person View) (sa 1 fps at 15 fps rate) na may superimposed telemetry at Data ng mga pagkilos ng JetBot. Kapaki-pakinabang ang mga iyon para sa pag-debug, pag-tune ng PID controller at pagpapabuti ng modelo.

Magsaya at ipaalam sa akin kung mayroon kang mga katanungan!:-)

Magagamit ang code sa Github

Inirerekumendang: