All Projects → ankandrew → ConvALPR

ankandrew / ConvALPR

Licence: GPL-3.0 license
Reconocedor Automatico (real-time) de Patentes utilizando Redes Neuronales Convolucionales

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to ConvALPR

deep-license-plate-recognition
Automatic License Plate Recognition (ALPR) or Automatic Number Plate Recognition (ANPR) software that works with any camera.
Stars: ✭ 309 (+1960%)
Mutual labels:  anpr, alpr, plate-detection, license-plate-recognition
open-lpr
Open Source and Free License Plate Recognition Software
Stars: ✭ 74 (+393.33%)
Mutual labels:  alpr, license-plate-recognition
cnn-ocr-lp
OCR implementado con solo Redes Convolucionales (CNN) de Patentes Argentinas
Stars: ✭ 22 (+46.67%)
Mutual labels:  plate-recognition, license-plate-recognition
DarkPlate
License plate parsing using Darknet and YOLO
Stars: ✭ 36 (+140%)
Mutual labels:  anpr, alpr
vrpdr
Deep Learning Applied To Vehicle Registration Plate Detection and Recognition in PyTorch.
Stars: ✭ 36 (+140%)
Mutual labels:  license-plate-recognition
Vehicle-Number-Plate-Reading
Read Vehicle Number Plate and store the data in a CSV file with date and time.
Stars: ✭ 47 (+213.33%)
Mutual labels:  license-plate-recognition
ALPR-Indonesia
Automatic license plate recognition for Indonesian plate (White on black)
Stars: ✭ 40 (+166.67%)
Mutual labels:  plate-recognition
alpr utils
ALPR model in unconstrained scenarios for Chinese license plates
Stars: ✭ 158 (+953.33%)
Mutual labels:  license-plate-recognition
python-codicefiscale
🇮🇹 💳 encode / decode italian fiscal codes - codifica / decodifica del Codice Fiscale italiano.
Stars: ✭ 53 (+253.33%)
Mutual labels:  anpr
license-plate-detect-recoginition-pytorch
深度学习车牌检测与识别,检测结果包含车牌矩形框和4个角点,基于pytorch框架运行
Stars: ✭ 77 (+413.33%)
Mutual labels:  license-plate-recognition
anpr
Issue tracker e documentazione di ANPR - Anagrafe Nazionale della Popolazione Residente
Stars: ✭ 174 (+1060%)
Mutual labels:  anpr
Easypr
An easy, flexible, and accurate plate recognition project for Chinese licenses in unconstrained situations.
Stars: ✭ 6,046 (+40206.67%)
Mutual labels:  plate-recognition
Hyperlpr
基于深度学习高性能中文车牌识别 High Performance Chinese License Plate Recognition Framework.
Stars: ✭ 4,399 (+29226.67%)
Mutual labels:  plate-recognition
TensorRT-LPR
车牌识别,基于HyperLPR实现,修改模型调用方法,使用caffe+tensorRT实现GPU加速,修改了车牌检测模型
Stars: ✭ 14 (-6.67%)
Mutual labels:  plate-recognition
Indian-Number-Plate-Recognition-System
Indian Number Plate Recognition System built using OpenCV
Stars: ✭ 72 (+380%)
Mutual labels:  anpr
ANPR-Tensorflow
Using neural networks to build an automatic number plate recognition system.
Stars: ✭ 26 (+73.33%)
Mutual labels:  anpr
LPEX
Detect vehicles license plate location
Stars: ✭ 60 (+300%)
Mutual labels:  alpr
Self-Driving-Car-Engines
Gathers signal processing, computer vision, machine learning and deep learning for self-driving car engines.
Stars: ✭ 68 (+353.33%)
Mutual labels:  plate-detection
my deep anpr
License Plate Recognition based on CNN/Deep Learning
Stars: ✭ 56 (+273.33%)
Mutual labels:  license-plate-recognition
ALPR System
Automatic License Plate Recognition System for Vietnamese Plates
Stars: ✭ 71 (+373.33%)
Mutual labels:  license-plate-recognition

ConvALPR

Alt Text

ConvALPR es un Reconocedor Automatico de Patentes Vehiculares, que utiliza Redes Neuronales Convolucionales. A diferencia de metodos tradicionales, este approach puede reconocer patentes con obstrucciones/diferencia de brillo/letras borrosas, etc. ConvALPR consiste de dos procesos: localizar (detector de objetos) y reconocedor (Reconocimiento Optico de Caracteres). Ambas usan solamente Redes Convolucionales/ConvNets/CNNs.

Proceso ALPR

Localizador

Demo yolo v4 tiny

Para el localizador se usa yolo v4 tiny, para lograr que el detector corra en tiempo real. Este detector de objetos se entreno con patentes (ni una sola de Argentina) aun asino tiene problemas en localizarlas con alta precision. Mas detalles de entrenamiento del detector aca. Se convirtieron los parametros de framework Darknet a TensorFlow usando este repo.

En este repo se pueden encontrar 3 versiones del localizador de patentes, misma arquitectura (yolo v4 tiny sin spp), pero con distinta resolucion de entrada. Los modelos usan res. de entrada de {384x384, 512x512, 608x608}, donde a mayor la resolucion mayor es la precision (y puede detectar mejor patentes alejadas) pero mayor es el tiempo de inferencia (es mas lento). Estos modelos se encuentran alpr/models/detection

Reconocedor (ROC/OCR)

Demo yolo v4 tiny

Para el reconocedor de caracteres OCR de las patentes, se diseñaron unos modelos personalizados en TensorFlow Keras.

En este repositorio se pueden encontrar los mismos modelos que aca. Estos modelos se pueden encontrar tambien en alpr/models/ocr, y los modelos que tienen _CPU al final esta mejor optimizados para CPU y corren mas rapido en el procesador.

Como usarlo

Instalar dependencias

Con python 3.x:

pip install -r requirements.txt

Para correr con la placa de video/GPU y acelerar la inferencia, instalar estos requerimientos.

Visualizar solo localizador

Para probar el localizador/detector de patentes (sin OCR, solo los bounding boxes) y visualizar las predicciones se usa el comando:

python detector_demo.py --fuente-video /path/a/tu/video.mp4 --mostrar-resultados --input-size 608

Intenta con los distintos modelos {608, 512, 384} para ver cual se ajusta mejor a tu caso

Reconocedor Automatico

Config

La configuracion del ALPR se puede encontrar en config.yaml. Este contiene los ajustes del Reconocedor y Localizador. Las distintas opciones estan descriptas en el mismo archivo (que hacen). El modelo de OCR es independiente del detector de objetos, y cualquiera deberia funcionar bien con cualquiera. Ejemplo para correr en la CPU y priorizar velocidad, se puede elegir el modelo 3 o 4 y el detector 384. Si se prefiere mayor precision se puede elegir el detector con res. de entrada 608 y OCR 1 o 2.

Ejemplo visualizar ALPR

python reconocedor_automatico.py --cfg config.yaml --demo

Guarda en Base de Datos sin visualizar

python reconocedor_automatico.py --cfg config.yaml

Visualizar prediccion de imagen y mostras FPS

En el archivo de config en la fuente poner una imagen. Luego

python reconocedor_automatico.py --cfg config.yaml --imagen --benchmark

Python API

Para usarlo en tu proyecto podes leer de config o cread un dict, es lo mismo:

Forma #1 (cfg)

from alpr.alpr import ALPR
import cv2
import yaml

im = cv2.imread('imgs/prueba.jpg')
with open('config.yaml', 'r') as stream:
    cfg = yaml.safe_load(stream)
alpr = ALPR(cfg['modelo'], cfg['db'])
predicciones = alpr.predict(im)
print(predicciones)

Forma #2 (dict)

from alpr.alpr import ALPR
import cv2

im = cv2.imread('imgs/prueba.jpg')
alpr = ALPR(
    {
        'resolucion_detector': 512,
        'confianza_detector': 0.25,
        'numero_modelo_ocr': 2,
        'confianza_avg_ocr': .4,
        'confianza_low_ocr': .35
    },
    {
        'guardar': True,
        'insert_frequency': 5,
        'path': 'test_db/plates_asd.db'
    }
)
predicciones = alpr.predict(im)
print(predicciones)

Notas

  • Aclaracion: Si bien el localizador funciona para patentes de cualquier pais el reconocedor actual esta hecho especialmente para Argentina, si queres entrenar uno personalizado

  • Este trabajo forma parte de un proyecto integrador para la Universidad

TODO

  • Ampliar modelos OCR
  • Compilar para EdgeTPU
  • Quantizar a FP16
  • Quantizar a INT8
  • Optimizar
  • Aumentar batch de OCR
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].