Using neural networks to build an automatic number plate recognition system. See this blog post for an explanation.
Note: This is an experimental project and is incomplete in a number of ways, if you're looking for a practical number plate recognition system this project is not for you.
This project relies on Python 3.6 x64
if you are using Windows.
Has the following dependencies:
- numpy==1.15.4
- opencv_python==3.4.4.19
- matplotlib==2.0.2
- Pillow==5.3.0
- tensorflow==1.12.0
Different typefaces can be put in fonts/
in order to match different type
faces. With a large enough variety the network will learn to generalize and
will match as yet unseen typefaces. See
#1 for more information.
You can install all required packages using:
pip install -r ./requirements.txt
-
./extractbgs.py SUN397.tar.gz
: Extract ~3GB of background images from the SUN database intobgs/
. (bgs/
must not already exist.) The tar file (36GB) can be downloaded here. This step may take a while as it will extract 108,634 images. -
./gen.py 1000
: Generate 1000 test set images intest/
. (test/
must not already exist.) This step requires some font in thefonts/
directory. You can download the UK version here. -
./train.py
: Train the model. A GPU is recommended for this step. It will take around 100,000 batches to converge. When you're satisfied that the network has learned enough pressCtrl+C
and the process will write the weights toweights.npz
and return. -
./detect.py in.jpg weights.npz out.jpg
: Detect number plates in an image.