Many autonomous driving stacks are modular. In fact, modular designs worked best at the time of writing. Explicit decomposition of autonomous driving into modules has one disadvantage though: each module such as lane marking detection, path planning, and control has to be designed separately. This is quite labour-intensive.
In order to generate a simpler model, end-to-end learning approaches have been proposed, which optimize all processing steps simultaneously. One of them is End-to-end Conditional Imitation Learning. Imitation learning tries to mimic the behavior of an expert (in this case a human driver). It aims to directly generalize the expert strategy observed in the demonstrations to unvisited states, which is achieved by regression, e.g., steering angle regression. The autonomous driving system can’t know everything from demonstration only. There are a few problems that need to be tackled in imitation learning. This blog post on Medium describes the challenges and how we tackled them.
During my work at Merantix, we needed a simple autonomous driving algorithm that our testing system can interact with. We wanted to use the algorithm presented in the End-to-end Conditional Imitation Learning paper. The paper only included inference code, but we wanted to be able to train the deep network from scratch. Therefore, I implemented the algorithm described in the paper using Tensorflow and matched the results of the paper. Find the code on GitHub.
Tensorflow, Python, Docker