# Traffic sign localization

![Meme](https://i.imgflip.com/68uh3g.jpg)

With the advance of self driving car technology, the demand for high quality computer vision systems is increasing. On roads, different signs offer important information to a human driver through their visual system.
 
For a self driving system we gather this information with a camera and process it with the help of deep learning and computer vision. This could be very useful as a self driving system can be made more aware of the context of the area around it. This has impacts on car safety as well as even navigation where no GPS signal is available. 

![Self driving](https://nypost.com/wp-content/uploads/sites/2/2021/08/elon-musk-tesla.jpg?quality=80&strip=all)

In order to process road sign information the computer system must both localize the sign in space i.e. get the `[x1,y1,x2,y2]` pixel coordinates that define where the sign is in the image
and perform a classification in order to define what the meaning of the sign is. 
In Machine Learning, the "type" of object is referred to as a 'class'.

In this challenge the dataset contains 676 images of 4 separate classes: 
` {'speedlimit': 0, 'stop': 1, 'crosswalk': 2, 'trafficlight': 3}`
with each number in the above dictionary representing its human understandable string.

![Classification](https://www.brandonindustries.com/wp-content/uploads/2019/04/Road_Signs.jpg)

The challenge is based around the concept of performing both Regression and Classification simultaneously.  The regression is to predict the bounding box coordinates of the sign and the classification to find its class. 

This challenge involves: image pre-processing ,building and training a deep neural network.

The testing will be done on Kaggle with 60 test images

A secret held out test set containing 200 images will be used for the final leader board.

# Tips. 

Make sure you load the data properly: plot the bounding boxes on the images for the training set to make sure they are correctly aligned.

# Loading .csv files for use. 
df_train = pd.read_csv('./train.csv',delimiter=',',converters={'new_bb': literal_eval})
```

Remember: some augmentations must be performed both to the image and its bounding box!

Transfer learning - 676 images is not a lot so your models may benefit from some prior knowledge ...

Have fun! 

## Acknowledgements

D. Ghica, Si Wei Lu and Xiaobu Yuan, "Recognition of traffic signs by artificial neural network," Proceedings of ICNN'95 - International Conference on Neural Networks, 1995, pp. 1444-1449 vol.3, doi: 10.1109/ICNN.1995.487372.