Eight laps of track 1 (4 in each direction) were used as initial training data.
More data was generated using Data.py. It does the following things to generate data:
- It takes as input, images from all three cameras.
- For images from the left camera, a correction of 0.2 is added to the measurements
- For images from the right camera, a correction of 0.2 is subtracted from the measurements
- All images are horizontally flipped, and their measurements are also reversed. This is done to help the model generalise better.
- The Data.py stores these images into a Numpy array.
I have used the Nvidia's CNN architecture. For this the following operations were performed
- Cropping the top and bottom of image
- Resize to 66 by 200 pixels
- Normalise between -.5 and .5
- 5 layers of convolution
- 3 fully connected layers
- Dropout with keep_prob = 0.75 in first fully connected layer
I also used LeNet, but, no amount of training and tweaking could get it to steer the car successfully about the last corner.
Initially, learning parameter is 0.0001. For fine tuning, the learning rate is set at 0.00001.
I was unable to generate good data on my hardware, hence I ended up using Udacity's dataset