Built to order

Traffic Sign Recognition using CNN

A convolutional neural network that reads a cropped traffic-sign photo and names the sign — speed limits, stop, yield, no-entry and 40 more. It trains on the German Traffic Sign Recognition Benchmark: 43 classes and 50,000+ real road images photographed under genuine lighting, weather and occlusion conditions, with augmentation for blur, brightness shifts and rotation. Suitable for B.E./B.Tech final-year projects in Computer Science, AI/ML and Electronics.

Traffic Sign Recognition using CNN — project thumbnail preview
More project photos (2)

The problem

Driver-assistance systems and autonomous vehicles both depend on one deceptively simple skill: reading the signs on the road. It is simple for humans and surprisingly hard for machines — the same stop sign appears blurred at speed, backlit at noon, rain-streaked at dusk, tilted, partially hidden by a branch, or faded after a decade in the sun. Worse, the dangerous confusions are between near-twins: a 30 and an 80 differ only in their digits. The German Traffic Sign Recognition Benchmark (GTSRB), introduced at IJCNN 2011, turned this into a rigorous academic task: 43 sign classes, over 50,000 cropped real-world images, with the messy variation baked in. This project builds the complete applied-deep-learning workflow on that benchmark — a custom CNN designed for small sign crops, an augmentation pipeline that simulates road conditions, a fully logged training experiment with honest error analysis, and a demo that classifies sign photos in seconds. It classifies cropped signs; finding signs inside full road scenes is documented as the extension, not the claim.

How it works

  1. GTSRB images are loaded with their class labels; every crop is resized to 48×48 RGB and pixel values are normalized.
  2. Training images pass through augmentation — rotation, brightness jitter, blur and shifts that mimic real road photography.
  3. The custom CNN (three convolutional blocks with batch normalization and dropout, then dense layers) trains with the Adam optimizer and categorical cross-entropy.
  4. After each epoch the notebook logs training and validation accuracy plus loss curves; early stopping keeps the best checkpoint.
  5. The final model is evaluated on the held-out 12,630-image test split: accuracy, per-class F1 and the confusion matrix.
  6. The demo app loads the exported weights, preprocesses any uploaded sign photo identically, and returns the top-3 ranked predictions.

Tech stack:

  • Python 3.10, TensorFlow/Keras (CNN design, training, SavedModel export)
  • OpenCV (image loading, resizing, augmentation support)
  • NumPy, pandas (data handling, prediction tables)
  • scikit-learn (per-class F1, confusion matrix)
  • Matplotlib, Seaborn (accuracy curves, confusion heatmap)
  • Flask demo app with sign-photo upload UI
  • Jupyter notebook (buyer-run training and evaluation)

Dataset & model

  • Dataset: GTSRB — German Traffic Sign Recognition Benchmark (IJCNN 2011 competition): 43 classes, 51,839 images total (39,209 train / 12,630 test), real German road photography with lighting, weather, occlusion and motion-blur variation.
  • Model: custom convolutional network — input 48×48 RGB crop; three (Conv → BatchNorm → ReLU → MaxPool) blocks, dropout 0.5, dense head; 43-way softmax output.
  • Prediction task: single-label classification of a cropped sign image. Metrics: accuracy, per-class precision/recall/F1, confusion matrix — all computed by the notebook on the held-out test split during your build. Design target: ~95%+ test accuracy — a target, not a measured claim.
Parameter Value
Model Custom CNN (3 conv blocks + dense head), TensorFlow/Keras
Input 48 × 48 RGB cropped sign image
Classes 43 GTSRB sign classes (speed limits, prohibitory, mandatory, warning)
Dataset GTSRB — 51,839 images (39,209 train / 12,630 test)
Augmentation Rotation, brightness, blur, translation
Evaluation Accuracy, per-class F1, confusion matrix — computed on the held-out split during your build
Output Top-3 ranked predictions with confidence scores
Demo Upload UI + exported SavedModel weights

Project features

  • Custom CNN classifier designed for sign crops: stacked convolution → batch-norm → ReLU → max-pool blocks with dropout, ending in a 43-way softmax head
  • Complete GTSRB data pipeline — 39,209 training and 12,630 test images across 43 classes, resized to 48×48 with normalization
  • Road-condition augmentation: random rotation, brightness shifts, motion-blur simulation and translations applied during training
  • Top-3 prediction output with confidence bars, so near-miss confusions are visible instead of hidden
  • Demo upload UI: drop in a sign photo and get the ranked prediction in seconds
  • Evaluation notebook logging accuracy, per-class F1 and the full confusion matrix on the held-out test split
  • Misclassification gallery that collects the hardest confusions (speed-limit twins, faded signs) for the report's error analysis
  • Exported SavedModel weights from the training run for the demo and viva demonstration

What is included

  • Complete source code (data pipeline, augmentation, CNN model, training loop, evaluation, demo app)
  • Jupyter training and evaluation notebook (buyer-run procedure: train on GTSRB, evaluate on the held-out split)
  • Project report PDF (background, CNN design, augmentation strategy, results, error analysis)
  • PPT presentation for final review
  • Viva Q&A preparation document (convolutions, pooling, overfitting, GTSRB, augmentation, softmax)
  • Setup guide (environment, GTSRB download, training your own model, running the demo)

Limitations & prerequisites

  • The model classifies cropped sign images — it does not detect or localize signs inside full road scenes; that detection stage is a documented extension, not part of the base build.
  • GTSRB contains German signs: Indian road signs differ in design and language, so deployment here needs fine-tuning on locally photographed signs — the report states this plainly.
  • Heavily occluded, vandalized or sun-faded signs fall outside what the training data represents and are the main documented failure cases.
  • Near-identical classes (30 vs 50 vs 80 speed limits) are the top confusion pairs; the confusion matrix in the report shows this openly.
  • Reported performance is whatever your training run measures on the held-out split — the ~95% figure is a design target, never a pre-claimed result.
  • Real-time video inference needs frame-rate optimization the base notebook does not cover; the demo is upload-based.

Frequently Asked Questions

Which dataset is used?

GTSRB — the German Traffic Sign Recognition Benchmark from the IJCNN 2011 competition: 43 sign classes, 51,839 real road images (39,209 train / 12,630 test). It is the standard academic dataset for this task.

Is the accuracy guaranteed?

No. The design target is ~95%+ test accuracy, but your build's notebook measures the real number on the held-out split — accuracy, per-class F1 and the confusion matrix — and the report presents those measured results.

Can it work with a live camera?

The delivered demo classifies uploaded photos. A live-camera mode that classifies a centered sign region is a realistic extension, but full-scene sign detection (finding signs in the frame first) is a separate object-detection task.

Will it recognize Indian traffic signs?

Not directly — it learns German sign designs. The project documents the fine-tuning path: photograph local signs, label them, and retrain the final layers, which is itself good viva material.

Can new sign classes be added?

Yes. Add labeled examples of the new class to the data pipeline and retrain; the notebook's class-handling and evaluation code generalizes to any class count.

Why a custom CNN instead of a pretrained model?

Sign crops are tiny (48×48) and the task is narrow — a small custom network trains in minutes on a CPU/GPU and gives the report genuine architecture material to discuss. A MobileNetV2 transfer-learning variant is documented as an optional comparison experiment. Suitable for B.E./B.Tech final-year projects in Computer Science, AI/ML and Electronics.

Components & software requirements
  • Python 3.10, TensorFlow/Keras (CNN design, training, SavedModel export)
  • OpenCV (image loading, resizing, augmentation support)
  • NumPy, pandas (data handling, prediction tables)
  • scikit-learn (per-class F1, confusion matrix)
  • Matplotlib, Seaborn (accuracy curves, confusion heatmap)
  • Flask demo app with sign-photo upload UI
  • Jupyter notebook (buyer-run training and evaluation)

Dataset & model

  • Dataset: GTSRB — German Traffic Sign Recognition Benchmark (IJCNN 2011 competition): 43 classes, 51,839 images total (39,209 train / 12,630 test), real German road photography with lighting, weather, occlusion and motion-blur variation.
  • Model: custom convolutional network — input 48×48 RGB crop; three (Conv → BatchNorm → ReLU → MaxPool) blocks, dropout 0.5, dense head; 43-way softmax output.
  • Prediction task: single-label classification of a cropped sign image. Metrics: accuracy, per-class precision/recall/F1, confusion matrix — all computed by the notebook on the held-out test split during your build. Design target: ~95%+ test accuracy — a target, not a measured claim.
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download abstract (PDF)

Related guides

All guides
Illustration of object tracking showing video frames with bounding boxes and persistent ID labels following people and vehicles, comparing motion prediction and appearance matching.B.E./B.Tech Computer Science and Electronics students building video analytics projects — people counting, vehicle tracking, sports analysis — who have detection working and need

Object Tracking: DeepSORT and ByteTrack Explained

Detection finds objects per frame; tracking keeps their identities across frames. This guide explains tracking-by-detection, Kalman motion models, DeepSORT's appearance embeddings vs ByteTrack's low-confidence box recovery, tracking metrics (HOTA, IDF1, ID switches), and the tuning parameters that determine real-world quality.

Read guide
Illustration of image segmentation showing U-Net's U-shaped encoder-decoder with skip connections producing pixel masks, alongside Mask R-CNN detecting instances with masks.B.E./B.Tech Computer Science and AI/ML students moving from image classification or detection to pixel-level understanding — medical imaging, defect detection, autonomous driving

Image Segmentation: U-Net and Mask R-CNN

When projects need pixel-level answers, segmentation delivers. This guide explains semantic vs instance vs panoptic segmentation, U-Net's encoder-decoder with skip connections, Mask R-CNN's parallel mask head, Dice and IoU evaluation, paired augmentation, and how to choose the right architecture for your data and question.

Read guide
Illustration of Whisper speech-to-text showing sound waves flowing into a neural network and emerging as transcribed text with timestamps and speaker labels.B.E./B.Tech Computer Science and AI/ML students adding speech-to-text to projects — voice assistants, meeting transcription, accessibility tools

Whisper for Speech-to-Text in Student Projects

Whisper transcribes speech in dozens of languages with no training required. This guide covers how it works, choosing among model sizes, running it locally with faster-whisper, handling hour-long audio, timestamps and speaker diarization, multilingual quirks, and honest evaluation with word error rate.

Read guide
Get a quotation