Self Driving Car simulation built using Tensorflow and Keras neural network library. The model is connected to Udacity Self Driving Car Simulator using Flask web-framework and socketio.
The Neural Network Model follows the Nvidia Model Architecture which consists of 9 layers, including a normalization layer, 5 convolutional layers, and 3 fully connected layers. The input image is split into YUV planes and passed to the network: Source: https://developer.nvidia.com/blog/deep-learning-self-driving-cars/
X-axis -> Steering Angle
Y-axis -> Number of Samples
The training data is skewed towards the middle because most of the time the car is driven in a straight line while training. If we train the convolutional neural network based on this data, the model could become biased towards driving straight all the time.
Solution: Flatten the data distribution and cut off extraneous samples for specific bins whose frequency exceed 400.
X-axis -> Steering Angle
Y-axis -> Number of Samples
X-axis -> Steering Angle
Y-axis -> Number of Samples
Augmentation Techniques add variety to the dataset and help the model to learn more efficiently.
Different transformations applied on images:
1- Zooming
3- Shifting
4- Flipping