Sisällysluettelo:

Siirron oppiminen NVIDIA JetBotin avulla - hauskaa liikennekartioiden kanssa: 6 vaihetta
Siirron oppiminen NVIDIA JetBotin avulla - hauskaa liikennekartioiden kanssa: 6 vaihetta

Video: Siirron oppiminen NVIDIA JetBotin avulla - hauskaa liikennekartioiden kanssa: 6 vaihetta

Video: Siirron oppiminen NVIDIA JetBotin avulla - hauskaa liikennekartioiden kanssa: 6 vaihetta
Video: Karttunen pelaa gambiitteja: Tietokone meinaa väsyä kesken pelin! 2024, Heinäkuu
Anonim

Tekijä dvillevaldMy GithubFollow About: Pidän tekoälystä ja koneoppimissovelluksista, erityisesti robotiikasta Lisätietoja dvillevaldista »

Opeta robotillesi löytää polku liikennekartioiden sokkelosta kameran ja huipputason syväoppimismallin avulla.

Tarvikkeet

  • NVIDIA JetBot

    NVIDIA JetBot Wikin materiaaliluettelo -sivu sisältää kaiken, mitä tarvitset JetBotin rakentamiseen, sekä ostolinkkejä suosituilta toimittajilta

  • Tietokone, jossa on NVIDIA GPU

    Tarvitaan mallin kouluttamiseen

  • BlueDot Trading 4”RC Racing Agility -kartiot, oranssi - 20 kpl

Vaihe 1: Motivaatio

Image
Image

Aina ajaessani supistumisalueella ajattelen, kuinka haastavaa olisi itseohjautuvalle autolle navigoida liikennekartioiden läpi. Osoittautuu, että se ei ole niin vaikeaa uusien NVIDIAn JetBot-laitteiden kanssa-vain parilla sadalla kuvalla voit kouluttaa huipputason syväoppimismallin, joka opettaa robotillesi löytää polun lelujen käpyjen sokkelossa käyttämällä vain sisäistä kameraa eikä muita antureita.

Vaihe 2: NVIDIA JetBotin ja projektin yleiskatsaus

NVIDIA JetBotin ja projektin yleiskatsaus
NVIDIA JetBotin ja projektin yleiskatsaus

JetBot on avoimen lähdekoodin robotti, joka perustuu NVIDIA Jetson Nano -sarjaan. Täältä löydät yksityiskohtaiset ohjeet sen rakentamisesta ja asentamisesta.

Tämä projekti on muokattu esimerkki törmäysten välttämisestä NVIDIA JetBot Wikistä. Se koostuu kolmesta päävaiheesta, joista jokainen on kuvattu erillisessä Jupyter -muistikirjassa:

  • Kerää tietoja JetBotista - muistikirjan data_collection_cones.ipynb
  • Juna -malli toisessa GPU -koneessa - notebook train_model_cones.ipynb
  • Suorita live -esittely JetBotissa - muistikirja live_demo_cones.ipynb

Löydät nämä kolme Jupyter -muistikirjaa täältä

Vaihe 3: Luo JetBot ja lähetä Jupyter -muistikirjat

  1. Rakenna ja asenna JetBot tässä kuvatulla tavalla
  2. Yhdistä robottiisi siirtymällä osoitteeseen https://: 8888Kirjaudu sisään oletussalasanalla jetbot
  3. Sammuta kaikki muut käynnissä olevat muistikirjat valitsemalla Ydin -> Sammuta kaikki ytimet…
  4. Siirry kohtaan ~/Muistikirjat/
  5. Luo uusi alikansio ~/Muistikirjat/traffic_cones_driving/
  6. Lataa data_collection_cones.ipynb ja live_demo_cones.ipynb kohteeseen ~/Notebooks/traffic_cones_driving/

TÄRKEÄÄ: Tässä ohjeessa mainitut Jupyter -muistikirjat data_collection_cones.ipynb ja live_demo_cones.ipynb on suoritettava JetBotilla ja train_model_cones.ipynb - tietokoneessa, jossa on GPU.

Siksi meidän on ladattava data_collection_cones.ipynb ja live_demo_cones.ipynb JetBotiin ja sijoitettava ne ~/Notebooks/traffic_cones_driving/

Vaihe 4: Harjoitustietojen kerääminen JetBotissa

Keräämme kuvien luokitteluaineistoa, jota käytetään auttamaan JetBotia toimimaan liikennekartioiden sokkelossa. JetBot oppii arvioimaan todennäköisyyksiä neljästä skenaariosta (luokka):

  • Ilmainen - kun on turvallista siirtyä eteenpäin
  • Estetty - kun robotin edessä on este
  • Vasen - kun robotti pyörii vasemmalle
  • Oikea - kun robotin pitäisi pyöriä oikealle

Harjoitustietojen keräämiseen JetBotissa käytämme Jupyter -muistikirjaa data_collection_cones.ipynb, joka sisältää yksityiskohtaiset ohjeet sen tekemiseen. Voit käyttää tätä muistikirjaa JetBotissa seuraavasti:

  1. Yhdistä robottiisi siirtymällä osoitteeseen https://: jetbot-ip-address:: 8888
  2. Kirjaudu sisään oletussalasanalla jetbot
  3. Sammuta kaikki muut käynnissä olevat muistikirjat valitsemalla Ydin -> Sammuta kaikki ytimet…
  4. Siirry kohtaan ~/Muistikirjat/traffic_cones_driving/
  5. Avaa ja seuraa data_collection_cones.ipynb -muistikirjaa

Vaihe 5: Harjoittele neuroverkkoa GPU -koneella

Seuraavaksi käytämme kerättyjä tietoja AlexNet-syväoppimismallin uudelleenohjaamiseen GPU-koneella (isäntä) suorittamalla train_model_cones.ipynb.

Huomaa, että train_model_cones.ipynb on tämän opetusohjelman ainoa Jupyter -muistikirja, jota EI käytetä JetBotissa

  1. Muodosta yhteys GPU -koneeseen, johon on asennettu PyTorch ja Jupyter Lab -palvelin on käynnissä
  2. Lataa train_model_cones.ipynb -muistikirja ja tälle koneelle
  3. Lataa dataset_cones.zip -tiedosto, jonka loit muistikirjaan data_collection_cones.ipynb, ja poimi tämä tietojoukko. (Tämän vaiheen jälkeen sinun pitäisi nähdä kansio nimeltä dataset_cones tiedostoselaimessa.)
  4. Avaa ja seuraa train_model_cones.ipynb -muistikirjaa. Tämän vaiheen lopussa luot mallin - tiedoston best_model_cones.pth, joka on sitten ladattava JetBotiin live -esittelyn suorittamiseksi.

Vaihe 6: Suorita Live -esittely JetBotissa

Suorita Live -demo JetBotissa
Suorita Live -demo JetBotissa

Viimeinen vaihe on ladata malli best_model_cones.pth JetBotiin ja suorittaa se.

  1. Käynnistä robotti USB -akusta
  2. Yhdistä robottiisi siirtymällä osoitteeseen https://: jetbot-ip-address:: 8888
  3. Kirjaudu sisään oletussalasanalla jetbot
  4. Sammuta kaikki muut käynnissä olevat muistikirjat valitsemalla Ydin -> Sammuta kaikki ytimet…
  5. Siirry kohtaan ~/Muistikirjat/traffic_cones_driving
  6. Avaa ja seuraa live_demo_cones.ipynb -muistikirjaa

Aloita varovasti ja anna JetBotille tarpeeksi tilaa liikkua. Kokeile eri kartiokokoonpanoja ja katso, kuinka hyvin robotti toimii erilaisissa ympäristöissä, valaistuksessa jne. Vaikka kannettava live_demo_cones.ipynb selittää kaikki vaiheet yksityiskohtaisesti, seuraavassa kaaviossa esitetään robotin liikkeiden logiikka, kun otetaan huomioon mallien ennustamat todennäköisyydet.

Muistikirja selittää myös, kuinka robotin liikkeiden historia tallennetaan mallin ennustamilla vapailla/vasemmalla/oikealla/estetyillä todennäköisyyksillä ja miten tehdään kaksi FPV (First Person View) -videota (nopeuksilla 1 fps ja 15 fps) päällekkäisellä telemetrialla ja JetBot -toimintojen tiedot. Ne ovat hyödyllisiä virheenkorjauksessa, PID -säätimen virityksessä ja mallin parantamisessa.

Pidä hauskaa ja kerro minulle, jos sinulla on kysyttävää!:-)

Koodi löytyy Githubista

Suositeltava: