Traffic sign detection is an essential capibility required by self-driving cars in today's age. A model that does not detect traffic signs in all conditions can lead road mishaps.
This project is aimed at enhancing the robustness of the mask rcnn model in detecting traffic signs.
The method to tweak the mask rcnn model to better perform on traffic sign data set has been described in the paper https://arxiv.org/pdf/1904.00649.pdf
This project builds on the above paper.
We introduce data augmentations to support camera failures in the events of motion blur, condensation and random noise.
These data augmentations are implemented with the OpenCV library.
For this project, we aimed to train the mask-rcnn model on a data set provided by Tsinghua Universit, China. Reader can learn more about the data set here https://cg.cs.tsinghua.edu.cn/traffic-sign/
Consequently, due the shear size of the dataset, we carried out some pruning on the following conditions;
- remove categories with small amount of instances
- cut down categories with excessively disproportionate instances.
- remove background noise
Additionaly, we tweaked our model as per the following paper https://arxiv.org/pdf/1904.00649.pdf, for the Mask-RCNN model to adapt for traffic sign detection. The following methods are proposed;
- Online hard-example mining
- Distribution of selected training samples
- Sample weighting
- Adjusting region pass-through during detection
We can see the loss values decreasing with more epochs, but we had to limit the number of epochs due to limite resources on Google Colab.
The initial results on test dataset didn't look promising with high losses and an mAP value of 0.045.
The problem lied with the ellipse/polygon sizes defined in the dataset. These were not tightly fit to the instances. Hence, it was our belief that the model was learning the background as well.
We tweaked the dataset for the ellipses to now fit tightly to the instances.
The new value of mAP was 0.25. While the mAP values rose by more then 5 times, a lot more work is required for enhanced performance.
Moreover, there were a lot of anomilities in the data set which the model trained on.