Semanas 42 a 47: Balanceo del dataset y Test del modelo offline
Durante estas semanas he terminado el script para balancear los datasets. En la primera versión del mismo se añadían o eliminaban imágenes para que hubiese el mismo número de cada tipo definido por la velocidad lineal y la angular.
Una vez conseguido he entrenado tanto el modelo para el coche holonómico como el de dinámica de ackermann. Sin embargo, a pesar de tener datasets balanceados con distintas proporciones ninguna red tenía el comportamiento deseado en los test realizados en la simulación.
Para encontrar el punto de fallo he dado un paso hacia atrás en la evaluación del modelo. Para ello he hecho un script que realiza la inferencia sobre un dataset y muestra una gráfica con los resultados. Las gráficas obtenidas reafirmaban el comportamiento de la red observado en la simulación:
Como se puede ver la salida obtenida no se parece en nada a la del conductor explícito.
A continuación probé a realizar el entrenamiento con un caso más sencillo, usando el mismo dataset de entrenamiento para la evaluación y con un conjunto reducido de tan solo 250 imágenes.
Las gráficas obtenidas son las siguientes:
Red entrenada con 100 epochs:
Red entrenada con 1000 epochs:
Red entrenada con 2000 epochs:
Las redes seguían sin converger hacia los resultados esperados.
Ya que en el entrenamiento los valores de pérdida eran bastante bajos, del orden de 10^-4, hice un nuevo programa de evaluación offline para realizar la inferencia directamente con pytorch en lugar de onnx. Finalmente los resultados son favorables:
Red entrenada con 100 epochs:
Red entrenada con 1000 epochs:
Red entrenada con 2000 epochs:
Aunque los valores de inferencia calculados por estas redes son muy similares a los originales no dejan de ser ejemplos para verificar que el método de entrenamiento es el correcto, por lo que no es sorprendente que ninguna de ellas tenga buenos resultados en la simulación.
El siguiente paso por lo tanto es reentrenar las redes con casos más complejos y hacer tests tanto offline como en simulación.