Automatic License Plate Recognition (ALPR) with Tensorflow
Automatic License Plate Recognition is a difficult task, especially in the United States where the variation of License Plate styles by State and county adds a significant extra challenge. For this particular project the difficulty was increased as we wanted to use standard range CCTV cameras, processing cars moving at normal speeds some distance away rather than dedicated ALPR cameras that would have a static close-up view of a plate (e.g. at a toll booth barrier)
We also had to account for multiple angles and multiple lighting conditions. We ended up using a combination of traditional image processing techniques via OpenCV, and then Google's new Machine learning library Tensorflow to build and train a Convolutional Neural Network (CNN) to distinguish different characters in a plate from each other
Results
The final algorithm was written in a combination of C++ (with OpenCV) and Python and produced excellent results
- A 95% plate recognition rate
- The learning phase was especially effective with the Neural Network correctly identifying 98% or plate characters
- Effective in all lighting conditions, with specific and important tweaks to handle various shadow effects on plates
- Solution was effective at high range and from multiple angles so no additional cameras were needed
- Project took 3 months from start to finish - very cost effective solution given the high licensing cost of current solutions