/Self-Driving-Cars-Term1-Project2

Self Driving Card - Project 2 - Traffic Sign Classifier

Primary LanguageHTML

Self-Driving-Cars-Term1-Project2

**Udacity Self Driving Car - Term 1 - Project 2 - Traffic Sign Classifier - submission by Jai Lad **

Objective :

  • Given a set of German traffic signs, design and train a convolutional neural network ( CNN ) in Tensorflow, to achieve a validation accuracy of at least 93%.

  • Explain the process of designing, validating and testing the CNN and the overall solution approach.

  • Download new German traffic sign images from the internet, and explore how your trained model performs against these new images.

Pre-Requisite :

I followed the instructions for Docker image ( Mac ) because I preferred to have the same code easily deployable to my local workstation ( with CPU ) versus GPU ( Amazon ), and Docker allows for that flexibility. This was also done to gain more familiarity with the Docker environment, and also because the setup was fairly straightforward.

Packages used to build the pipeline / CNN :

Once the above was installed I used the following packages to build the pipeline :

  • Numpy - for matrix manipulations.
  • TensorFlow - to design, train, validate and test the CNN.
  • MatPlotLib - to generate visualizations.
  • Pickle - to serialize / deserialize data to the Disk.
  • Json - to write training performance data to the Disk ( so that it was easily human consumable ).
  • OpenCV - for image manipulations, like resizing, and converting a 4 channel image to a 3 channel image.
  • Others - os, sys, time, copy, resource, scipy

Tweakable parameters for the project :

  • Epochs
  • Batch Size
  • Feature images mean
  • Feature images standard deviation
  • Learning Rate
  • Type of activation function.
  • Type of pooling.
  • Data transormations - like rotation and preprocessing of data.
  • Type of optimizer
  • Regularization - Dropout

Key File(s) :

Key Folder(s) :

  • data_for_analysis - the folder which contains the summary of a training session. The file(s) contain data in JSON format, and can be opened by any text editor ( e.g. Sublime Text ) For example, the file '1492470140.0814645' contains the details of the training session used for this submission.

  • NewImages - The folder which contains new German traffic acquired from the web.

  • pickle_data_for_analysis - The folder to which the program saves normalized images ( and generated fake data images for under represented classes), so that they can be read from here for subsequent runs, therefore saving time.

  • Traffic_Sign_Classifier - the folder which contains the fully executed version of the notebook, in markdown format - Traffic_Sign_Classifier.md

  • OlderNotebooks - Backups of previously exported versions of the dev notebook.