Nomeroff Net. Automatic numberplate recognition system. Version 4.0.0
Now there is a war going on in our country, russian soldiers are shooting at civilians in Ukraine. Enemy aviation launches rockets and drops bombs on residential quarters.
We are deeply thankful for the unprecedented wave of support for Ukraine from around the world. Below is a list of funds that help the Ukrainian army in the fight against Russian invaders: Photo: Konstantin Liberov https://www.instagram.com/libkos/
Nomeroff Net is an opensource python license plate recognition framework based on YOLOv8 bbox and pose networks and customized OCR-module powered by RNN architecture.
Write to us if you are interested in helping us in the formation of a dataset for your country.
Nomeroff Net requires Python >= 3.9
Clone Project
git clone https://github.com/ria-com/nomeroff-net.git
cd nomeroff-net
# for Opencv
yum install libSM
# for pycocotools install
yum install python3-devel
# ensure that you have installed gcc compiler
yum install gcc
yum install git
# Before "yum install ..." download https://libjpeg-turbo.org/pmwiki/uploads/Downloads/libjpeg-turbo.repo to /etc/yum.repos.d/
yum install libjpeg-turbo-official
install requirements:
pip3 install -r requirements.txt
# ensure that you have installed gcc compiler
apt-get install gcc
# for opencv install
apt-get install -y libglib2.0
apt-get install -y libgl1-mesa-glx
# for pycocotools install (Check the name of the dev-package for your python3)
apt-get install python3.9-dev
# other packages
apt-get install -y git
apt-get install -y libturbojpeg
install requirements:
pip3 install -r requirements.txt
from nomeroff_net import pipeline
from nomeroff_net.tools import unzip
number_plate_detection_and_reading = pipeline("number_plate_detection_and_reading",
image_loader="opencv")
(images, images_bboxs,
images_points, images_zones, region_ids,
region_names, count_lines,
confidences, texts) = unzip(number_plate_detection_and_reading(['./data/examples/oneline_images/example1.jpeg',
'./data/examples/oneline_images/example2.jpeg']))
print(texts)
Note: This example disables some important Nomeroff Net features. It will recognize numbers that are photographed in a horizontal position.
from nomeroff_net import pipeline
from nomeroff_net.tools import unzip
number_plate_detection_and_reading = pipeline("number_plate_short_detection_and_reading",
image_loader="opencv")
(images, images_bboxs,
zones, texts) = unzip(number_plate_detection_and_reading(['./data/examples/oneline_images/example1.jpeg',
'./data/examples/oneline_images/example2.jpeg']))
print(texts)
# (['AC4921CB'], ['RP70012', 'JJF509'])
If you don't want to install and configure the Nomeroff Net programmed code for your own tasks or if your client hardware does not have enough resources to run a service that requires ML computing, you can use our commercial Numplate RIAder API, which allows you to perform recognition remotely on the RIA.com Сompany servers.
The Numplate RIAder API is based on the open source Nomeroff Net engine, with commercial modifications aimed mainly at using improved models that can produce better results in photos with poor image quality.
Right now you can try ALPR/ANPR Numplate RIAder Demo for free.
In order to evaluate the quality of work of Nomeroff Net without spending time on setting up and installing, we made an online form in which you can upload your photo and get the recognition result online
All data on the basis of which the training was conducted is provided by RIA.com. In the following, we will call this data the AUTO.RIA Numberplate Dataset.
We will be grateful for your help in the formation and layout of the dataset with the image of the license plates of your country. For markup, we recommend using VGG Image Annotator (VIA)
The system uses several neural networks. One of them is the classifier of numbers at the post-processing stage. It uses dataset AUTO.RIA Numberplate Options Dataset.
The categorizer accurately (99%) determines the country and the type of license plate. Please note that now the classifier is configured mainly for the definition of Ukrainian numbers, for other countries it will be necessary to train the classifier with new data.
As OCR, we use a specialized implementation of a neural network with RNN layers, for which we have created several datasets:
- AUTO.RIA Numberplate OCR UA Dataset (Ukrainian)
- AUTO.RIA Numberplate OCR UA Dataset (Ukrainian) with old design Dataset
- AUTO.RIA Numberplate OCR EU Dataset (European)
- AUTO.RIA Numberplate OCR RU Dataset (Russian)
- AUTO.RIA Numberplate OCR KZ Dataset (Kazakh)
- AUTO.RIA Numberplate OCR GE Dataset (Georgian)
- AUTO.RIA Numberplate OCR BY Dataset (Belarus)
- AUTO.RIA Numberplate OCR SU Dataset (exUSSR)
- AUTO.RIA Numberplate OCR KG Dataset (Kyrgyzstan)
- AUTO.RIA Numberplate OCR AM Dataset (Armenia)
If we did not manage to update the link on dataset you can find the latest version here
This gives you the opportunity to get 99% accuracyon photos that are uploaded to AUTO.RIA project
Contributions to this repository are welcome. Examples of things you can contribute:
- Training on other datasets.
- Accuracy Improvements.
- Dmytro Probachay <[email protected]>
- Oleg Cherniy <[email protected]>