{"id":20109599,"url":"https://github.com/georgeerol/trafficsignclassifierproject","last_synced_at":"2026-06-10T05:31:56.893Z","repository":{"id":112732538,"uuid":"125692612","full_name":"georgeerol/TrafficSignClassifierProject","owner":"georgeerol","description":"How to use Deep Neural Networks and Convolutional Neural Networks to classify Traffic Signs","archived":false,"fork":false,"pushed_at":"2018-04-03T15:40:52.000Z","size":713,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-02T18:29:59.273Z","etag":null,"topics":["deep-learning","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/georgeerol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-18T04:32:31.000Z","updated_at":"2018-04-03T16:38:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"79adfdc9-c59d-42d4-a0d6-07efdf6c3b9e","html_url":"https://github.com/georgeerol/TrafficSignClassifierProject","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/georgeerol/TrafficSignClassifierProject","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeerol%2FTrafficSignClassifierProject","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeerol%2FTrafficSignClassifierProject/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeerol%2FTrafficSignClassifierProject/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeerol%2FTrafficSignClassifierProject/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/georgeerol","download_url":"https://codeload.github.com/georgeerol/TrafficSignClassifierProject/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georgeerol%2FTrafficSignClassifierProject/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34139178,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","tensorflow"],"created_at":"2024-11-13T18:08:56.227Z","updated_at":"2026-06-10T05:31:56.877Z","avatar_url":"https://github.com/georgeerol.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Project: Build a Traffic Sign Recognition Program\n[![Udacity - Self-Driving Car NanoDegree](https://s3.amazonaws.com/udacity-sdc/github/shield-carnd.svg)](http://www.udacity.com/drive)\n\nOverview\n---\nThis project is to use Deep Neural Networks and Convolutional Neural Networks to classify Traffic Signs.\n A model is trained and validated so it can classify traffic sign images using the [German Traffic Sign Dataset](http://benchmark.ini.rub.de/?section=gtsrb\u0026subsection=dataset).\nFurthermore, the model is tested on images of German traffic signs that you find on the web. These images are located under [TestImages](./TestImages)\n\nA Ipython notebook is included and it contains all the information about the projects in details.\n\n\n\nThe Project\n---\nThe goals / steps of this project are the following:\n* Load the data set\n* Explore, summarize and visualize the data set\n* Design, train and test a model architecture\n* Use the model to make predictions on new images\n* Analyze the softmax probabilities of the new images\n* Summarize the results with a written report\n\n## Data Set Summary and Exploration\n### Basic Summary of the data set\nThe pandas library is use to calculate summary statistics of the traffic signs data set:\n* The size of training set is 34799\n* The size of the validation set is 4410\n* The size of test set is  1263\n* The shape of a traffic sign image is (32,32,3)\n* The number of unique classes/labels in the data set is 43\n\n### Exploratory Visualization of the dataset\nHere is an exploratory visualization of the data set. The graph shows the traffic sign label distribution of the validation,\ntraining and test set. However as one can see the data is not uniformly distributed, a few traffic sings has less than 200 samples\nin the training set and some sign labels has more than 1250 samples.  The Traffic sign model trained in this this project\nis good at identifying some signs better then others.\n\n![DataSetGraph](./misc/DatasetGraph.png)\n\n## Design and Test the  Model Architecture\n\n### Preprocessed the image data\nA normalize() function is used to normalize image data between -1 and 1. No further pre-processing technique were done\non the data set.\n```python\ndef normalize(data):\n    normalize_data = ((data-128.0)/128.0) -1\n    return normalize_data\n\nX_train = normalize(X_train)\nX_test = normalize(X_test)\nX_valid = normalize(X_valid)\n\n```\n### Model Architecture\nThe Neural Network Architecture is based on the [LeNet-5](http://yann.lecun.com/exdb/lenet/) architecture.\nThe final model consisted of the following layers:\n\n| Layer         \t\t|     Description\t        \t\t\t\t\t| \n|:---------------------:|:---------------------------------------------:| \n| Input         \t\t| 32x32x3 RGB image   \t\t\t\t\t\t\t| \n| Convolution 5x5     \t| 1x1 stride, same padding, outputs 28x28x30 \t|\n| RELU\t\t\t\t\t|\t\t\t\t\t\t\t\t\t\t\t\t|\n| Max pooling\t      \t| 2x2 stride,  outputs 14x14x30 \t\t\t\t|\n| Convolution 5x5\t    | 1x1 stride, same padding,output 10x10x64      |\n| RELU\t\t\t\t\t|\t\t\t\t\t\t\t\t\t\t\t\t|\n| Max pooling\t      \t| 2x2 stride,outputs 5x5x64 \t\t\t\t    |\n| Flatten\t\t\t\t| input 5x5x64,output 1600(5*5*64)\t\t\t\t|\n| Fully Connected\t\t| input 1600, output 1024                       | \n| RELU\t\t\t\t\t|\t\t\t\t\t\t\t\t\t\t\t\t|\n| Drop out\t\t\t\t| Probability Keep is 50%                       |\n| Fully Connected       | input 1024,output 512                         |\n| RELU\t\t\t\t\t|\t\t\t\t\t\t\t\t\t\t\t\t|\n| Drop out\t\t\t\t| Probability Keep is 50%                       |\n| Fully Connected       | input 512,output 256                          |\n| RELU\t\t\t\t\t|\t\t\t\t\t\t\t\t\t\t\t\t|\n| Drop out\t\t\t\t| Probability Keep is 50%                       |\n| Fully Connected       | input 256,output number of classes 43         |\n\n### Model Hyperparameters\nThe model hyperparameters are:\n*  The Epoch is 10\n* The Batch size is 128\n* The learning rate is 0.001\n* The Optimizer is the Adam Optimizer\n\n#### Epoch\nTo tell the network how long we want it to train, we set an epoch number.An epoch is one trip through the entire \ntraining dataset. For this project, the training epochs} is set to 10.\n\n#### Batch size\nThe Batch size is the number of training data in one forward/backward pass. It is the number of sample that is propagated\nthrough the network. For this project the batch size is set to 128.The networks trains faster and update the weights after each mini-batches.\n#### Learning rate\nThe learning rate has to do with how quickly the network abandons old beliefs for new ones.With a higher \nLearning Rate, the network  will changes its mind more quickly which is why a low learning rate of 0.001 is chosen for this model.\n\n#### Adam Optimizer\nAdam is an optimization algorithm that is use to update the weights iteratively based of the training data.\n\n####\n## Result\nThe final model results were:\n* The Test set accuracy  is 94%\n* The validation set accuracy is 96% \n\n### Test the Model on New Images\nHere are  the five German traffic signs that were chosen from the web:\n\n[//]: # (Image References)\n[image1]: TestImages/traffic_sign_1.jpg\n[image2]: TestImages/traffic_sign_2.jpg \n[image3]: TestImages/traffic_sign_3.jpg \n[image4]: TestImages/traffic_sign_4.jpg \n[image5]: TestImages/traffic_sign_5.jpg  \n\n\n![alt text][image1] ![alt text][image2] ![alt text][image3] \n![alt text][image4] ![alt text][image5]\n\n### Model Prediction\n If the model predicted 1 out of 5 signs correctly,it would be 20% accurate on these new images.However, the model was able to predict all 5 images\n with an accuracy of 100%.\n\n| Image\t\t\t        |     Label\t | Description           | Prediction Label\t | Prediction Description|\n|:---------------------:|:----------:|:---------------------:|:-----------------:|:---------------------:|  \n| ![alt text][image1]   | 14         | Stop                  | 14                | Stop                  |\n| ![alt text][image2]   | 17 \t\t | No entry \t         | 17                | No entry \t         |\n| ![alt text][image3]\t| 0\t\t\t | 0 Speed limit(20km/h) | 0                 | 0 Speed limit(20km/h) |\n| ![alt text][image4]   | 40   \t\t | Roundabout mandatory  | 40                | Roundabout mandatory  |\n| ![alt text][image5]\t| 28\t\t | Children crossing     | 28                | Children crossing     |\n\n### Softmax probabilities for each prediction\nFor images 1, 2 4 and 5 the top prediction has a softmax probability of 1.000 and the rest of the probabilities lower than 0.000.\nFor image 3 the top prediction result has a softmax probability of 0.844, 0.049 , 0.027 0.021 and 0.01. \nThe top softmax is display in the  Jupyter Notebook.\n\n## Dependencies\nThis lab requires:\n\n* [CarND Term1 Starter Kit](https://github.com/udacity/CarND-Term1-Starter-Kit)\n\nThe lab environment can be created with CarND Term1 Starter Kit. Click [here](https://github.com/udacity/CarND-Term1-Starter-Kit/blob/master/README.md) for the details.\n\n### Dataset and Repository\n\n1. Download the data set. The classroom has a link to the data set in the \"Project Instructions\" content. This is a pickled dataset in which we've already resized the images to 32x32. It contains a training, validation and test set.\n2. Clone the project, which contains the Ipython notebook and the writeup template.\n```sh\ngit clone https://github.com/udacity/CarND-Traffic-Sign-Classifier-Project\ncd CarND-Traffic-Sign-Classifier-Project\njupyter notebook Traffic_Sign_Classifier.ipynb\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorgeerol%2Ftrafficsignclassifierproject","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeorgeerol%2Ftrafficsignclassifierproject","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorgeerol%2Ftrafficsignclassifierproject/lists"}