This project showcases a license plate localisation and recognition, utilizing the power of OpenVINO framework.
License plates localisation and recognition in a real-life scene:
- OpenVINO: OpenVINO is a toolkit for quickly developing computer vision applications which based on Convolution Neural Networks(CNNs), and it is hassle-free to optimize performance across platforms by leveraging OpenVINO.
- MobileNet-SSD: We choosed TensorFlow implementation of MobileNet-SSD to detect license plates, and train it on BIT-Vehicle dataset.
- LPRNet: We use a pre-trained LRPNet which combine character segmentation and recognition in one inference, and it is trained on a private Chinese license plate dataset.
- OpenCV: We use C++ version OpenCV to capture videos from a webcam and parse video frames and then fill into CNN models via OpenVINO APIs.
- license_plate_localisation_recognition: Can be executed it directly in command line using "./license_plate_localisation_recognition".
- lib folder: Dependencies lib files.
- LPL.xml and LPL.bin: Network Model for license plate localisation, have been converted to proprietary OpenVINO format using Model Optimizer.
- LPR.xml and LPR.bin: Network Model for license plate recognition, have been converted to proprietary OpenVINO format using Model Optimizer.
- main.cpp: Main Source code of this project, use the CMakeLists.txt to build executable file.
We follow this tutorial to train the MobileNet-SSD model. However, unlike this tutorial, we detect license plate directly without vehicles.
First, we need to use BIT_to_COCO.py to convert annotations of BIT-Vehicle from JSON to COCO xml format; Then we utilize K-Mean algorithm to cluster the bounding boxes of the BIT-Vehicle dataset to find 10 width/height ratios, which is cluster_bounding_box.py , and we got the following result:
Then we choose three scales instead of five which in the SSD paper because we only need to detect license plates and less default boxes can reduce training time and inference time. Default boxes for each SSD layer are the following:
Other parameters we follow the tutorial
We plan to train the MobileNet-SSD and LPRNet on multiple license plate dataset to obtain more generalization.