This repository contain our work for the capstone project of Citizen, to create a model to detect an Indonesian License Plate and read the plate using OCR
We Trained the model using the Tensorflow Object Detection API to do transfer learning from pre trained network provided by the tensorflow
To use the model you can run the test-model.ipynb
inside the training_models
folder
Requirement :
- Tensorflow 2.2.0
- Tensroflow Object Detection API (you need to install this manually)
Currently we don't have an endpoint API Implementation yet
we have gathered various dataset and trained the model using various combination, for the dataset without label, we labelled them manualy using labelImg tool, you can find the label in the annotation folder
Datasets Name | Annotation |
---|---|
Caltech | ❌ |
EnglishLP | ❌ |
AOLP | ❌ |
Indonesian Plate Number Plate number of Indramayu | ✔ |
UFPR-ALPR | ✔ |
Open Image Dataset V6 | ✔ |
EuropeLP/Car License Plate Detection (Kaggle) | ✔ |
1 The UFPR-ALPR Dataset is not used in the training
Aside from labelling the image manually we also need to convert the dataset TFRecord dataset type, as the TFOD API Require that specific dataset type we are using script provided by this following repository
We decided to do Transfer Learning from existing model (SSD MobileNet V2 FPNLite 320x320
) that provided by tensorflow team
Custom Model Name | Caltech | AOLP | IndonesianLP | UFPR-ALPR | OIDV6 | EuropeLP | EnglishLP |
---|---|---|---|---|---|---|---|
Custom_SSDmobilenet | ✔ | ||||||
Custom_SSDmobilenet_CirebonLP | ✔ | ||||||
Custom_SSDmobilenet_CirebonLP_with_EnglisLP-Caltech | ✔ | ✔ | ✔ | ||||
Custom_SSDmobilenet_Europe | ✔ | ||||||
Custom_SSDmobilenet_Various | ✔ | ✔ | ✔ | ✔ | |||
Custom_SSDmobilenet_Various_OIDV6 | ✔ | ✔ | ✔ | ✔ | ✔ | ||
custom-resnet50-retinanet-640 | ✔ | ||||||
custom-resnet50-retinanet-640-v2 | ✔ |
We used various combination of dataset to train our model, to achieve best result, and decided to use the Custom_SSDmobilenet_Various_OIDV6
as this is the best model trained that can predict bounding box properly on our own license plate
Not yet implemented
The plan is to take the coordinate that predicted from the model and then crop it and feed the image to EasyOCR