Taula de continguts:

Transferir aprenentatge amb NVIDIA JetBot: diversió amb cons de trànsit: 6 passos
Transferir aprenentatge amb NVIDIA JetBot: diversió amb cons de trànsit: 6 passos

Vídeo: Transferir aprenentatge amb NVIDIA JetBot: diversió amb cons de trànsit: 6 passos

Vídeo: Transferir aprenentatge amb NVIDIA JetBot: diversió amb cons de trànsit: 6 passos
Vídeo: CS50 2013 - Week 9, continued 2024, Juliol
Anonim

Per dvillevaldMy GithubSeguir Quant a: M’agraden les aplicacions d’intel·ligència artificial i d’aprenentatge automàtic, especialment en robòtica. Més informació sobre dvillevald »

Ensenyeu al vostre robot a trobar un camí en un laberint de cons de trànsit mitjançant la càmera i el model d’aprenentatge profund d’última generació.

Subministraments

  • NVIDIA JetBot

    La pàgina de la llista de materials de la Wiki de NVIDIA JetBot recull tot el que necessiteu per crear JetBot, juntament amb els enllaços de compra de venedors populars

  • Ordinador amb GPU NVIDIA

    Necessari per formar el model

  • BlueDot Trading 4 "RC Racing Agility Cons, taronja - joc de 20

Pas 1: motivació

Image
Image

Cada vegada que condueixo a la zona de contracció, estic pensant el desafiament que pogués un cotxe autònom navegar pels cons de trànsit. Resulta que no és tan difícil amb el nou JetBot de NVIDIA: amb només un parell de centenars d’imatges, podeu formar un model d’aprenentatge profund d’última generació per ensenyar al vostre robot com trobar un camí en un laberint de cons de trànsit de joguina. utilitzant només la càmera integrada i sense cap altre sensor.

Pas 2: Visió general del projecte i JetBot de NVIDIA

NVIDIA JetBot i Visió general del projecte
NVIDIA JetBot i Visió general del projecte

JetBot és un robot de codi obert basat en el kit NVIDIA Jetson Nano. Podeu trobar instruccions detallades sobre com construir-lo i configurar-lo aquí.

Aquest projecte és un exemple modificat d'evitació de col·lisions de la Wiki de NVIDIA JetBot. Consta de tres passos principals, cadascun descrit en un quadern Jupyter separat:

  • Recopileu dades a JetBot - notebook data_collection_cones.ipynb
  • Model de tren en una altra màquina GPU: notebook train_model_cones.ipynb
  • Executeu la demostració en directe a JetBot - notebook live_demo_cones.ipynb

Podeu trobar aquests tres quaderns Jupyter aquí

Pas 3: Creeu JetBot i pengeu quaderns Jupyter

  1. Construïu i configureu JetBot tal com s'explica aquí
  2. Connecteu-vos al robot navegant a https://: 8888 Inicieu la sessió amb la contrasenya jetbot per defecte
  3. Apagueu la resta de quaderns en execució seleccionant el nucli -> Apaga tots els nuclis …
  4. Aneu a ~ / Notebooks /
  5. Crea una subcarpeta nova ~ / Notebooks / traffic_cones_driving /
  6. Pengeu data_collection_cones.ipynb i live_demo_cones.ipynb a ~ / Notebooks / traffic_cones_driving /

IMPORTANT: els quaderns Jupyter data_collection_cones.ipynb i live_demo_cones.ipynb als quals es fa referència en aquestes instruccions s’han d’executar a JetBot mentre train_model_cones.ipynb: en un equip amb GPU.

Per tant, hem de carregar data_collection_cones.ipynb i live_demo_cones.ipynb al JetBot i col·locar-los a ~ / Notebooks / traffic_cones_driving /

Pas 4: recopilació de dades de formació a JetBot

Recopilarem un conjunt de dades de classificació d’imatges que s’utilitzaran per ajudar JetBot a operar en un laberint de cons de trànsit. JetBot aprendrà a estimar les probabilitats de quatre escenaris (classes):

  • Gratuït: quan és segur avançar
  • Bloquejat: quan hi ha un obstacle davant del robot
  • Esquerra: quan el robot gira cap a l’esquerra
  • Dreta: quan el robot gira cap a la dreta

Per recopilar les dades de formació a JetBot utilitzarem el bloc de dades Jupyter data_collection_cones.ipynb que conté instruccions detallades sobre com fer-ho. Per executar aquest bloc de notes a JetBot, seguiu els passos següents:

  1. Connecteu-vos al robot navegant a https://: jetbot-ip-address:: 8888
  2. Inicieu la sessió amb la contrasenya jetbot per defecte
  3. Apagueu la resta de quaderns en execució seleccionant el nucli -> Apaga tots els nuclis …
  4. Aneu a ~ / Notebooks / traffic_cones_driving /
  5. Obriu i seguiu el bloc de dades data_collection_cones.ipynb

Pas 5: entrenar la xarxa neuronal a la màquina GPU

A continuació, utilitzarem les dades recollides per tornar a entrenar el model d'aprenentatge profund AlexNet a la màquina GPU (host) executant train_model_cones.ipynb.

Tingueu en compte que train_model_cones.ipynb és l’únic bloc de notes Jupyter d’aquest tutorial que NO s’executa al JetBot

  1. Connecteu-vos a una màquina GPU amb PyTorch instal·lat i amb un servidor Jupyter Lab en execució
  2. Pengeu el bloc de notes train_model_cones.ipynb i en aquesta màquina
  3. Pengeu el fitxer dataset_cones.zip que heu creat al bloc de dades data_collection_cones.ipynb i extraieu aquest conjunt de dades. (Després d'aquest pas, hauríeu de veure com apareix una carpeta anomenada dataset_cones al navegador de fitxers.)
  4. Obriu i seguiu el bloc de notes train_model_cones.ipynb. Al final d'aquest pas, crearà un model: el fitxer best_model_cones.pth que després s'ha de carregar al JetBot per executar la demostració en directe.

Pas 6: executeu la demostració en directe a JetBot

Executeu la demostració en directe a JetBot
Executeu la demostració en directe a JetBot

Aquest últim pas consisteix a carregar el model best_model_cones.pth al JetBot i executar-lo.

  1. Alimenteu el robot des de la bateria USB
  2. Torneu a connectar-vos al robot navegant a https://: jetbot-ip-address:: 8888
  3. Inicieu la sessió amb la contrasenya jetbot per defecte
  4. Apagueu la resta de quaderns en execució seleccionant el nucli -> Apaga tots els nuclis …
  5. Aneu a ~ / Notebooks / traffic_cones_driving
  6. Obriu i seguiu el bloc de notes live_demo_cones.ipynb

Comenceu amb precaució i doneu a JetBot prou espai per moure’s. Proveu una configuració de cons diferent i consulteu el rendiment del robot en diferents entorns, il·luminació, etc. Mentre que el portàtil live_demo_cones.ipynb explica tots els passos amb detall, el gràfic següent mostra la lògica dels moviments del robot donades les probabilitats predites pels models.

El bloc de notes també explica com emmagatzemar la història dels moviments de robots amb probabilitats lliures / esquerres / dretes / bloquejades predites pel model i com fer dos vídeos FPV (First Person View) (a velocitat d’1 fps i 15 fps) amb telemetria superposada i Dades d'accions JetBot. Són útils per a la depuració, l’ajust del controlador PID i la millora del model.

Diverteix-te i avisa’m si tens cap pregunta!:-)

El codi està disponible a Github

Recomanat: