Tabla de contenido:

Transferir aprendizaje con NVIDIA JetBot - Diversión con conos de tráfico: 6 pasos
Transferir aprendizaje con NVIDIA JetBot - Diversión con conos de tráfico: 6 pasos

Video: Transferir aprendizaje con NVIDIA JetBot - Diversión con conos de tráfico: 6 pasos

Video: Transferir aprendizaje con NVIDIA JetBot - Diversión con conos de tráfico: 6 pasos
Video: NVIDIA JetBot: Jetson Nano Vision-Controlled AI Robot 2024, Noviembre
Anonim

Por dvillevaldMy GithubSeguir Acerca de: Me gustan las aplicaciones de inteligencia artificial y aprendizaje automático, especialmente en robótica Más acerca de dvillevald »

Enséñele a su robot a encontrar un camino en un laberinto de conos de tráfico utilizando la cámara y el modelo de aprendizaje profundo de última generación.

Suministros

  • NVIDIA JetBot

    La página Lista de materiales de NVIDIA JetBot Wiki enumera todo lo que necesita para construir JetBot, junto con enlaces de compra de proveedores populares

  • Computadora con GPU NVIDIA

    Necesario para entrenar el modelo

  • BlueDot Trading 4 "Conos de agilidad de carreras RC, naranja - Juego de 20

Paso 1: Motivación

Image
Image

Cada vez que conduzco en el área de contracción, pienso en lo difícil que sería para un automóvil sin conductor navegar a través de los conos de tráfico. Resulta que no es tan difícil con el nuevo JetBot de NVIDIA: con solo un par de cientos de imágenes, puede entrenar un modelo de aprendizaje profundo de última generación para enseñarle a su robot cómo encontrar un camino en un laberinto de conos de tráfico de juguete. utilizando solo la cámara integrada y ningún otro sensor.

Paso 2: NVIDIA JetBot y descripción general del proyecto

NVIDIA JetBot y descripción general del proyecto
NVIDIA JetBot y descripción general del proyecto

JetBot es un robot de código abierto basado en el kit NVIDIA Jetson Nano. Puede encontrar instrucciones detalladas sobre cómo construirlo y configurarlo aquí.

Este proyecto es un ejemplo de prevención de colisiones modificado de NVIDIA JetBot Wiki. Consta de tres pasos principales, cada uno de los cuales se describe en un cuaderno de Jupyter independiente:

  • Recopile datos en JetBot - notebook data_collection_cones.ipynb
  • Modelo de tren en otra máquina GPU - notebook train_model_cones.ipynb
  • Ejecute la demostración en vivo en JetBot - notebook live_demo_cones.ipynb

Puedes encontrar estos tres cuadernos de Jupyter aquí

Paso 3: compile JetBot y cargue los cuadernos de Jupyter

  1. Construya y configure JetBot como se explica aquí
  2. Conéctese a su robot navegando a https://: 8888 Inicie sesión con la contraseña predeterminada jetbot
  3. Apague todos los demás portátiles en ejecución seleccionando Kernel -> Shutdown All Kernels…
  4. Navegue a ~ / Notebooks /
  5. Crear nueva subcarpeta ~ / Notebooks / traffic_cones_driving /
  6. Sube data_collection_cones.ipynb y live_demo_cones.ipynb a ~ / Notebooks / traffic_cones_driving /

IMPORTANTE: Los cuadernos de Jupyter data_collection_cones.ipynb y live_demo_cones.ipynb a los que se hace referencia en estas instrucciones deben ejecutarse en JetBot mientras que train_model_cones.ipynb - en una computadora con GPU.

Por lo tanto, tenemos que cargar data_collection_cones.ipynb y live_demo_cones.ipynb al JetBot y colocarlos en ~ / Notebooks / traffic_cones_driving /

Paso 4: recopilar datos de entrenamiento en JetBot

Recopilaremos un conjunto de datos de clasificación de imágenes que se utilizará para ayudar a JetBot a operar en un laberinto de conos de tráfico. JetBot aprenderá a estimar probabilidades de cuatro escenarios (clases):

  • Gratis: cuando es seguro seguir adelante
  • Bloqueado: cuando hay un obstáculo frente al robot
  • Izquierda: cuando el robot debe girar hacia la izquierda
  • Derecha: cuando el robot debe girar hacia la derecha

Para recopilar los datos de entrenamiento en JetBot usaremos el cuaderno Jupyter data_collection_cones.ipynb que contiene instrucciones detalladas sobre cómo hacerlo. Para ejecutar este portátil en JetBot, siga los siguientes pasos:

  1. Conéctese a su robot navegando a https://: jetbot-ip-address:: 8888
  2. Inicie sesión con la contraseña predeterminada jetbot
  3. Apague todos los demás portátiles en ejecución seleccionando Kernel -> Shutdown All Kernels…
  4. Vaya a ~ / Notebooks / traffic_cones_driving /
  5. Abra y siga el cuaderno data_collection_cones.ipynb

Paso 5: Entrene la red neuronal en la máquina GPU

A continuación, utilizaremos los datos recopilados para volver a entrenar el modelo de aprendizaje profundo AlexNet en la máquina GPU (host) ejecutando train_model_cones.ipynb.

Tenga en cuenta que train_model_cones.ipynb es el único cuaderno de Jupyter en este tutorial que NO se ejecuta en JetBot

  1. Conéctese a una máquina GPU con PyTorch instalado y un servidor Jupyter Lab en ejecución
  2. Sube el cuaderno train_model_cones.ipynb y a esta máquina
  3. Suba el archivo dataset_cones.zip que creó en el cuaderno data_collection_cones.ipynb y extraiga este conjunto de datos. (Después de este paso, debería ver una carpeta llamada dataset_cones aparecer en el explorador de archivos).
  4. Abra y siga el cuaderno train_model_cones.ipynb. Al final de este paso, creará un modelo: el archivo best_model_cones.pth, que luego debe cargarse en el JetBot para ejecutar la demostración en vivo.

Paso 6: Ejecute la demostración en vivo en JetBot

Ejecute una demostración en vivo en JetBot
Ejecute una demostración en vivo en JetBot

Este último paso es cargar el modelo best_model_cones.pth al JetBot y ejecutarlo.

  1. Alimente su robot con la batería USB
  2. Conéctese de nuevo a su robot navegando a https://: jetbot-ip-address:: 8888
  3. Inicie sesión con la contraseña predeterminada jetbot
  4. Apague todos los demás portátiles en ejecución seleccionando Kernel -> Shutdown All Kernels…
  5. Vaya a ~ / Notebooks / traffic_cones_driving
  6. Abra y siga el cuaderno live_demo_cones.ipynb

Comience con cuidado y dé a JetBot suficiente espacio para moverse. Pruebe diferentes configuraciones de cono y vea qué tan bien se desempeña el robot en diferentes entornos, iluminación, etc. Mientras que el cuaderno live_demo_cones.ipynb explica todos los pasos en detalle, la siguiente tabla muestra la lógica de los movimientos del robot dadas las probabilidades predichas por los modelos.

El cuaderno también explica cómo almacenar el historial de movimientos del robot con probabilidades libres / izquierda / derecha / bloqueadas predichas por el modelo y cómo hacer dos videos FPV (Vista en primera persona) (a velocidades de 1 fps y 15 fps) con telemetría superpuesta y Datos de acciones de JetBot. Son útiles para depurar, ajustar el controlador PID y mejorar el modelo.

¡Diviértete y avísame si tienes preguntas!:-)

El código está disponible en Github

Recomendado: