We have modified code by Alexandros Stergiou (2018 paper) to create synthetic traffic signs placed over background images to create a holistic dataset for training detection models. Furthermore, we have implemented various kinds of synthetic damage that are applied to the signs. This damage is quantified by using the percentage of the sign that has been changed or obscured. The purpose of this is to train a detection model to not only detect each class of sign, but to also detect the class and assess the severity of damage that is present on the sign, if any.
The above shows close-up examples of damage applied to synthetic signs.
This work formed the basis of the primary author's thesis: Traffic Sign Damage Assessment with Synthetic Datasets.
This codebase's functionality is described in Chapter 3.
It also includes 9 example images generated by this code in its Appendix.
Conference paper repository (only includes an outdated portion of this repository): End-to-End Traffic Sign Damage Assessment
@inproceedings{rados2022end,
title={End-to-End Traffic Sign Damage Assessment},
author={Radoš, Kristian and Downes, Jack and Pham, Duc-Son and Krishna, Aneesh},
booktitle={2022 International Conference on Digital Image Computing: Techniques and Applications (DICTA)},
year={2022},
doi={10.1109/DICTA56598.2022.10034587}
}
- TODO: Fix incorrect
environment.yaml
and badrequirements.txt
(and/or just make a Dockerfile)
Using an Anaconda environment is recommended. Install Miniconda (terminal only) here. Once installed, run the following command while in the repo directory:
$ conda env create -f environment.yaml
Alternatively, to install the required packages using pip, simply execute the following command (pip3
may be exchanged with pip
):
$ pip3 install -r requirements.txt
Navigate to the signbreaker
directory. To run the generator, simply execute the following command:
$ python create_dataset.py
The --output_dir
argument can be used to specify a custom directory for the generated dataset. A complete path is required.
The generator can be configured by modifying the config.yaml
file.
Please allow for sufficient storage space when running the dataset generator. With default config values the size of the dataset could be on the order of 1-100 GB depending on the inputs.
Example traffic sign templates for data generation can be downloaded below. Place these templates into the signbreaker/Sign_Templates/1_Input
directory. Templates can be quickly sourced using wikipedia_sign_templates.py
(example pages).
[download] | UK | UK templates used by Stergiou et al. in their paper.
[download] | GTSDB | classes matched as closely as possible using UK templates. Covers ~31/43 classes.
[download] | GTSDB | classes matched using German Wikipedia and Wikimedia Commons images. Covers 43/43 classes.
[download] | AU | 559 images retrieved from Road signs in Australia and manually filtered.
[download] | Various | 46 classes used in the thesis.
Example backgrounds for data generation can be downloaded below.
[download] | Google Images | UK Google Images backgrounds used by Stergiou et al. in their paper, suitable only for creating image patch datasets for recognition tasks.
[download] | GTSDB | 4 GTSDB background images for quick testing.
[download] | GTSDB | all 600 images from the GTSDB training set (warning: if used as backgrounds, synthetic data would contain unlabelled signs).
[download] | Various | 1191 images taken from various sources with no visible traffic sign faces. See here for details.
[download] | Various | 5663 images used in the thesis: 1191 from above, 1742 from vistas_backgrounds.py
, and 2700 from random-mapillary.
Kristian Radoš (Primary)
[email protected]
Seana Dale
[email protected]
Allen Antony
[email protected]
Prasanna Asokan
[email protected]
Jack Downes
[email protected]