TheNeural network model we used is the inception v3 model (https://arxiv.org/abs/1512.
00567).We are using this model in our code using the keras api. Keras api providesvarious neural network models like inception v3, xception, mobilenet, resnet50,vgg16 and vgg19. It also provides us with pretrained weights which we can usefor finetuning and transfer learning. In our case we are using the inception v3architecture with no pretrained weights. Previously we had tried to usetransfer learning and fine tuning the Inception v3 weights which were trainedfor the ImageNet dataset (http://www.image-net.org/)but it didn’t give good results as the data we are trying to give to the neuralnetwork is of much different format than the ImageNet dataset.
So, we changedto training our network with no pretrained weights. The network was given themodified frame as input and the steering angle as the target. The steeringangle present in the dataset ranges from -1 to 1 (floating point numbers).These values were scaled up to 0 to 999 (integers). Later it was classifiedinto 35 classes. These steering classes were then converted to one-hot arrays.The modified frame contains the processed and enlarged minimap in top half partof the frame and the lower half was unchanged (contains the road). 4000 suchframes were given to the neural network to fit to the target.
This batch-sizewas decided according to the RAM consumption. For 16GB of RAM, the batch wouldconsume about 80% of the RAM. If more frames were given, then it would resultin OOM (Out-Of-Memory) error which would stop the program altogether and couldpotentially crash the system. The resolution of the input frame to neuralnetwork was also reduced to 299x299x3 (width=299, height=299, channels=3). Thisis to reduce the strain on the GPU, as it has to process the frames and fit themodel and weights to the target steering angle classes. the optimizer used is StochasticGradient Descent Optimizer with Nesterov momentum.