Semana 17: Revisión del dataset, nuevos entrenamientos y pruebas
Esta semana hemos vuelto al entrenamiento de un modelo con los actuadores steer y throttle, usados en semanas anteriores.
Principalmente, se ha revisado el dataset completo con el objetivo de eliminar muestras que pudieran causar error en el aprendizaje del modelo durante el entrenamiento, es decir, todas aquellas muestras que son de mala conducción hecha a propósito que finalmente tienen una rectificación (reflejada en los actuadores). Dejando las muestras que forman parte de la rectificación o corrección del error.
Posteriormente se ha balanceado el dataset, ya con las muestras que son de interés, y se ha procedido al entrenamiento de un modelo de redes neuronales con PilotNet. A diferencia de estas últimas semanas, la salida de esta red neuronal será de los actuadores steer y throttle.
Tras realizar varios entrenamientos y ver progresos positivos con respecto a las anteriores semanas y que el modelo converge (comparando los valores de pérdida de train y val), se piensa que el error no está en el entrenamiento o en el dataset. La predicción, como se ha explicado en anteriores reportes semanales, empieza siendo acertada y coherente desde el punto de vista de la conducción en los primeros segundos. No obstante, a causa de un frame rate muy bajo (5 FPS) la predicción no está sincronizada con los frames a medida que avanza nuestro vehículo. Esto provoca que el coche se desvíe, a falta de recibir un valor actualizado de los actuadores, y a pesar de poder llegar a ‘reengancharse’ a la conducción con algún frame nuevo actualizado, la corrección en la predicción no llega a tiempo.
Para aumentar el número de FPS se ha intentado optimizar el código durante la simulación: evitar prints innecesarios, corregir funciones asíncronas (callbacks), quitar la visión de la cámara frontal (que visualizábamos con pygame), etc. Sin embargo, sigue siendo insuficiente.
Se plantea, por ahora, la realización de un test off-line, con la creación de un nuevo dataset (o buscar alguno de dominio público) y realizar pruebas de predicción para poner a prueba el modelo.
A continuación, un ejemplo de la predicción del último modelo entrenado con PilotNet: https://youtu.be/h_bwam8taaE