Neural Intelligent Driver Model (NIDM)

This repository is the implementation of NIDM. Using a sequence of past traffic states, NIDM produces distributions over the sequence of future vehicle actions.

Training

To train the model(s), go to the models/model_trainers folder and run the train.py script for any of the models.

We can visualise the latent encoding while NIDM is being trained:

alt text where the coloring is according to the driver aggressiveness. We train the model for 20 epochs (which amounts to 3220 training iterations when using a mini-batch size of 512 samples).

Evaluation

Evaluations are performed by collecting several metrics from a set 2100 policy rollouts (i.e., Monte Carlo simulations). The configuration for the evaluation setup is located in the evaluation folder. To initiate the evaluation experiments, run the eval_run.py script (e.g., from powershell).

Note: eval_obj.py allows you to start Monte Carlo simulations from any driving episode. Simply put in the config file the number of episodes you want, and then run the eval_run.py script.

Runtime

The average NIDM runtime per 100 time steps of a single policy rollout is 635 ms. In our experiments, computations are done on an NVIDIA GeForce GTX 1050 and an 3.2 GHz Intel i5-6500 CPU.

Data Preprocessing

The synthetic dataset we use for training contains 500 driving episodes which amount to roughly three hours of driving by 1500 drivers each with unique IDM parameters. The following set of features are used to represent the local traffic context from ego car's viewpoint: alt text