Autos autónomos y behavioral cloning

15 de Enero de 2018

En abril de 2016, la empresa NVIDIA realizó un proyecto que consistió en entrenar una red neuronal con el objetivo de que pueda controlar la dirección de un auto. Para esa fecha ya había bastante experiencia de otras empresas con autos autónomos, pero este proyecto tuvo algunas características particulares:

  1. El entrenamiento de la red neuronal fue con imágenes obtenidas de cámaras, no se uso ningún otro sensor. Se grabaron 72 horas de video de diferentes autos manejados por personas en diferentes calles y carreteras. Luego con estas imágenes y la información de la dirección se entrenó una CNN1 esperando que aprenda de lo realizado por el conductor. Esta técnica se llama behavioral cloning.

  2. El aprendizaje fue "end to end". Esto quiere decir que la entrada a la red neuronal fueron las imágenes crudas, sin ningún tipo de procesamiento previo, y la salida fue el ángulo de giro de la dirección, sin etapas intermedias.

Por lo general los sistemas de self driving utilizan varios sensores y para llegar a la solución final resuelven problemas parciales que después los componen (por ejemplo es común hacen tareas de procesamiento de imágenes para detectar las rayas o límites de rutas).

Este proyecto realizó todo el proceso en un único modelo con el argumento de así lograr un sistema óptimo buscando la mejor solución de principio a fin, sin tener que optimizar "criterios humanos" intermedios.

El resultado fue exitoso, se demostró que una CNN es capaz de detectar por sí misma las características importantes de una calle/ruta para lograr mantener a un auto en su carril. Este es un video del auto de test con la dirección controlada por la CNN circulando por diferentes rutas y calles:

Self driving car nanodegree

Estoy haciendo el nanodegree de self driving de Udacity y uno de los proyectos a realizar consiste en hacer algo similar al proyecto de NVIDIA, pero en vez de en un auto real, hay que hacerlo con un simulador.

Para generar imágenes para entrenar, el simulador permite manejar y grabar el recorrido de un auto en varios circuitos. Luego, para verificar el funcionamiento de la red neuronal, el simulador también permite que el auto sea controlado por un modelo.

Usando la misma arquitectura del modelo de NVIDIA y entrenando con una vuelta en uno de los circuitos, este es el resultado de mi modelo:

Referencias

Paper publicado del proyecto de NVIDIA: https://arxiv.org/abs/1604.07316

1 Convolutional neural network


Comentarios

Los comentarios de este post hacelo en el siguiente tweet. Gracias.