Nomeroff Net. Automatic numberplate recognition system.
Nomeroff Net. Automatic numberplate recognition system. Version 0.3.1
Nomeroff Net is an opensource python license plate recognition framework based on the application of a convolutional neural network on the Mask_RCNN architecture, and cusomized OCR-module powered by GRU architecture.
The project is now at the initial stage of development, write to us if you are interested in helping us in the formation of a dataset for your country.
To install cpu version nomeroff-net via pip, use
pip3 install git+https://github.com/matterport/Mask_RCNN pip3 install nomeroff-net
To install gpu version nomeroff-net via pip, use
bash pip3 install git+https://github.com/matterport/Mask_RCNN pip3 install nomeroff-net-gpu
Nomeroff Net requires Python 3.5, 3.6 or 3.7 and opencv 3.4 or latest
bash 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
# ensure that you have installed gcc compiler apt-get install gcc
for opencv install
apt-get install -y libglib2.0 apt-get install -y libsm6 apt-get install -y libfontconfig1 libxrender1 apt-get install -y libxtst6
for pycocotools install (Check the name of the dev-package for your python3)
apt-get install python3.6-dev
pip3 install Cython pip3 install numpy pip3 install git+https://github.com/matterport/Mask_RCNN pip3 install -r requirements.txt
On Windows, you must have the Visual C++ 2015 build tools on your path. If you don't, make sure to install them from here:
visualcppbuildtools_full.exeand select default options:
# Import all necessary libraries. import os import numpy as np import sys import matplotlib.image as mpimg
change this property
NOMEROFF_NET_DIR = os.path.abspath('../../')
specify the path to Mask_RCNN if you placed it outside Nomeroff-net project
MASK_RCNN_DIR = os.path.join(NOMEROFF_NET_DIR, 'Mask_RCNN') MASK_RCNN_LOG_DIR = os.path.join(NOMEROFF_NET_DIR, 'logs')
Import license plate recognition tools.
from NomeroffNet import filters, RectDetector, TextDetector, OptionsDetector, Detector, textPostprocessing, textPostprocessingAsync
Initialize npdetector with default configuration file.
nnet = Detector(MASK_RCNN_DIR, MASK_RCNN_LOG_DIR) nnet.loadModel("latest")
rectDetector = RectDetector()
optionsDetector = OptionsDetector() optionsDetector.load("latest")
Initialize text detector.
textDetector = TextDetector.get_static_module("eu")() textDetector.load("latest")
img_path = '../images/example2.jpeg' img = mpimg.imread(img_path) NP = nnet.detect([img])
Generate image mask.
cv_img_masks = filters.cv_img_mask(NP)
arrPoints = rectDetector.detect(cv_img_masks) zones = rectDetector.get_cv_zonesBGR(img, arrPoints)
regionIds, stateIds, countLines = optionsDetector.predict(zones) regionNames = optionsDetector.getRegionLabels(regionIds)
find text with postprocessing by standart
textArr = textDetector.predict(zones) textArr = textPostprocessing(textArr, regionNames) print(textArr)
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 GRU 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)
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 98% accuracy on photos that are uploaded to AUTO.RIA project
For several months now, we have been devoting some of our time to developing new features for the Nomeroff Net project. In the near future we plan: * Post a detailed instruction on the training of recognition models and classifier for license plates of your country. * To expand the classification of countries of license plates by which to determine the country in which this license plate is registered.
Contributions to this repository are welcome. Examples of things you can contribute: * Training on other datasets. * Accuracy Improvements.