AI & data
Traffic sign recognition
A convolutional network that recognizes 43 classes of German road signs, with 98.45% accuracy on the official test set, close to human level.
- Completed
- Individual project
- accuracy on the official test set
- 98.45%
- human benchmark on this dataset
- 98.84%
- sign classes
- 43
- from augmentation
- +1.15 pt
01Starting point
Context & mission
The problem
A perception building block for driver assistance has to tell apart signs that look very similar. And a score is only worth something if it is measured on truly unseen data.
The mission
Train a classifier on the German Traffic Sign Recognition Benchmark (GTSRB) and measure its performance honestly.
My role
Done on my own, from data preparation to results analysis.
02Execution
What I did
Preprocessing
Histogram equalisation on the HSV brightness channel, images resized to 48×48.
Model
A VGG-style CNN of about 1.36 M parameters, trained with Keras and TensorFlow.
Domain-aware augmentation
Rotation, shifts, zoom and shear, but no horizontal flip: it would swap “left” and “right” signs.
Honest evaluation
Validation accuracy (~99.8%) overstates reality: GTSRB frames come from video, so a random split leaks near-duplicates. The figure reported is the official test score.
03Design
Architecture
A notebook pipeline: image preparation, on-the-fly augmentation during training, a VGG-style CNN, then evaluation on the 12,630 official test images, kept apart from everything else.
- GTSRB43 classes
- PreprocessingHSV · 48×48
- AugmentationNo flipping
- VGG-style CNN~1.36 M parameters
- Official test12,630 images
04Impact
Results
- 98.45% on the 12,630 official test images, close to the 98.84% human benchmark.
- Data augmentation lifts accuracy from 97.30% to 98.45%.
- The data leakage caused by a random split is identified and documented.
05Wrap-up
Takeaways
What this project provesThat I do not stop at the best-looking number: I pick augmentations that respect the domain and catch the data leakage that would inflate results.
06Technology
Full stack
- Python
- TensorFlow
- Keras
- CNN
- scikit-image
- scikit-learn
- NumPy
- pandas
- Matplotlib
- Jupyter