Semana 15
Durante estas semanas hemos estado con diversas cosas. Por una parte, hemos podido continuar con la preparación de un dataset para posteriormente entrenar modelos de redes neuronales que puedan predecir el giro de volante de un vehículo simulado. Por otra, se ha estado analizando la manera en que hemos estado avanzando para crear y balancear el dataset, y para entrenar un modelo y su posterior predicción mediante un test online; con el objetivo de ver qué puede estar generando errores de predicción.
Semanas anteriores.
Este post es un resumen de lo realizado estas semanas, así que vamos a repasar lo que teníamos hasta ahora.
-
Hemos creado un cerebro (brain.py), para visualizar mediante una cámara frontal y un sensor LiDAR, y teleoperar un vehículo mediante teclado en el simulador Carla. Realizado a partir de trabajo previo hecho por compañeros.
-
Hemos creado (esta última vez) un dataset para registrar por una parte, los frames de la cámara frontal del vehículo (simulado en Carla), y por otra, los valores de steer_rate obtenidos tras pulsar A o D (con los que se calcula steer, es decir, una variable intermedia que mide la velocidad de giro del volante).
-
Tras la creación del dataset, de 17k muestras (aprox.), hemos balanceado el mismo para igualar el número de muestras/etiqueta del conjunto, para que haya un número igual o parecido de muestras para cada valor de steer_rate. No obstante, se ha dejado un número superior de muestras para un steer_rate que ronde el origen, para que siga habiendo superioridad en el caso más común de conducción, “ir recto”. Finalmente, el dataset balanceado es de 40k muestras.
-
Tras el balanceo, se ha construido un modelo de PilotNet (mostrado en las anteriores semanas) para entrenarlo con el dataset balanceado. Tras varios intentos tras el entrenamiento del modelo, que no ha dado resultados de giro coherente del volante, surge la duda de dónde podría estar el error.
Al analizar qué es lo que puede estar fallando en la predicción, hay varias partes de nuestro trabajo que podrían estar causando error:
- El conjunto de datos: tanto el contenido de información como la manera en que obtenemos los frames (espacio de color, tamaño, etc.) como las etiquetas o los valores de steer_rate.
- El balanceo del dataset: el número de muestras por cada ‘label’.
- El modelo de redes neuronales (PilotNet en nuestro caso) en el entrenamiento.
- Brain, al predecir el modelo el valor de steer_rate: la predicción, el cálculo de steer o el input del modelo entrenado.
Se han identificado y corregido errores en las imágenes del dataset, en el balanceo del mismo y en el cálculo de steer (tras obtener la predicción de steer_rate) que, a priori, podían ser los causantes de la mala conducción. Sin embargo, seguimos teniendo un volante (con velocidad constante, throttle = 0.5) que gira de extremo a extremo. Pasa de forma gradual de valores de steer=1 a steer=-1. Analizando varias pruebas, puede que realmente el error de predicción esté en el balanceo del conjunto de datos.