Mejora del balanceo de Dataset y entrenamiento de modelos
Esta semana el objetivo era seguir con la mejora del balanceo de nuestro dataset y de los entrenamientos de nuestro modelo con MobileNet y PilotNet. Una de las mejoras a implementar esta semana era la de aumentar el número de muestras para el entrenamiento de redes neuronales (por limitaciones de mi portátil) y, para ello, he podido acceder al servidor Libélula (proporcionado por el laboratorio de este proyecto). No obstante, debido a fallos del servidor, no ha sido posible conectarse, ni poder trabajar con más datos. Por tanto, se ha seguido trabajando en la misma línea de la semana anterior (dentro de las limitaciones actuales), aunque no se han logrado grandes avances.
Para empezar, decidimos seguir probando el dataset balanceado que creamos de semana anterior y aumentamos el número de iteraciones (epochs) a 100, pues se estaban entrenando ambos modelos con 50-60 epochs (muy pocas para que pueda aprender a minimammente a predecir los actuadores). Con PilotNet no conseguimos mejorar la conducción. Sin embargo, con MobileNet conseguimos, ya no solo una conducción más controlada durante varios minutos con el volante, sinó también con el acelerador. Se muestra en el siguiente enlace: VIDEO
Creación de nuevo dataset.
Con el ánimo de mejorar los datos de entrada, la conducción “experta” que aprenderá el modelo, creamos un nuevo dataset de (7679 muestras). Como ya hemos comprobado las anteriores semanas, nuestros datasets siempre van a tener más muestras de (steer=0, throttle = 1) y (steer=0, throttle = 0), es decir, recto a máxima aceleración y recto sin aceleración. Para ello, primero hemos hecho data augmentation en el resto de tipos de muestras (550-600 cada tipo) y, posteriormente, hemos disminuido los dos casos más frecuentes a 900 muestras. Siendo conscientes de que el tamaño del dataset sigue siendo muy pequeño, este balanceo se ha realizado a modo de prueba y para poder mejorar el tramiento de datasets de cara a cuando podamos trabajar con mayor cantidad de datos.
Entrenamiento y simulación con MobileNet
Una vez entrenado el modelo con MobileNet (sin apenas modificaciones del código de le Semana 7) con un 80% de train, un 10% de validation y el restante para test, hemos visualizado la evolución de pérdida durante el entrenamiento y realizado un test offline o matriz de confusión con el conjunto de test que habíamos reservado:
Durante el entrenamiento se puede observar que a partir de las 30-40 épocas, nuestro modelo ya no aprende más.
Además, hemos realizado varias simulaciones con predicción de volante del modelo entrenado con MobileNet: VIDEO
Entrenamiento y simulación con PilotNet
Para el entrenamiento con PilotNet, hemos seguido el mismo procedimiento que con MobileNet (train=80%, validation=10%, test=10%, 100 epochs). Podemos observar que, a partir de las 60 iteraciones, el modelo ya no puede aprender más:
A continuación, se muestra la matriz de confusión obtenida tras la predicción del modelo con el conjunto reservado de test:
Finalmente, también se ha realizado una simulación con la predicción de steer y con throttle constante (a 0.5): VIDEO
Conclusiones
Esta semana, nos hemos quedado estancados con el balanceo de datasets “pequeños” y el posterior entrenamiento con MobileNet y PilotNet. Sí hemos avanzado con la investigación de soluciones para mejorar el balanceo del conjunto de datos y con el entrenamiento de redes neuronales.
En cuanto a las predicciones online de los modelos entrenados, podemos llegar a las mismas conclusiones que la semana anterior. Los primeros 2-3 minutos de conducción, el volante responde de forma equilibrada y corrige bien las desviaciones. Aunque finalmente el vehícula acaba por colisionar. Y destacar la primera simulación mostrada en la actualización de este cuaderno, que ha conseguido una conducción muy equilibrada tanto con el volante, como con el acelerador.
Pese a las dificultades de esta semana, hay optimismo con los pequeños avances de esta semana que, con la posibilidad de poder trabajar con mayor tamaño de datasets, serán muy útiles y conseguirán resultados mucho mejores.