viernes, 29 de noviembre de 2024

Reconocimiento de placas de automobiles

¿Qué es el reconocimiento de placas de licencia?

ANPR (Automatic number plate recognition) o Automatic license plate recognition (ALPR) son las siglas en ingles del reconocimiento automático de patentes, que básicamente consiste en la extracción de información de la patente del vehículo a partir de una imagen o una secuencia de imágenes. 

El reconocimiento de placas de licencia, también conocido como reconocimiento automático de placas de licencia (RALP), es una tecnología que utiliza algoritmos de procesamiento de imágenes y aprendizaje automático para identificar y reconocer automáticamente los números de las placas de licencia de los vehículos. Esta tecnología se basa en la captura de imágenes de las placas de licencia a través de cámaras y el análisis de estas imágenes para extraer los caracteres alfanuméricos que componen los números de las placas.

Palabras claves

ANPR (Automatic number plate recognition) o Automatic license plate recognition (ALPR) son las siglas en ingles del reconocimiento aut omático de patentes, que básicamente consiste en la extracción de información de la patente del vehículo a partir de una imagen o una secuencia de imágenes. 

Tecnología utilizada en el reconocimiento de placas de licencia

Procesamiento de imágenes

Para llevar a cabo el reconocimiento de placas de licencia, se utiliza el procesamiento de imágenes. Este proceso implica la captura de imágenes de Alta resolución de las placas de licencia a través de cámaras especializadas. A continuación, se aplican algoritmos de procesamiento de imágenes para mejorar la calidad de las imágenes, corregir distorsiones y extraer los caracteres alfanuméricos de las placas.

Aprendizaje automático y redes neuronales

Además del procesamiento de imágenes, el reconocimiento de placas de licencia también hace uso de técnicas de aprendizaje automático y redes neuronales. Estas técnicas permiten entrenar algoritmos para reconocer y clasificar los caracteres de las placas de licencia, mejorando así la precisión y la capacidad de adaptación del sistema a diferentes situaciones y condiciones de captura de imágenes.

Principales modelos

YOLO (You Only Look Once)
  • Características: YOLO es un modelo de detección de objetos en tiempo real. Es muy eficiente para detectar y delimitar objetos como patentes en imágenes o videos.
  • Preentrenado: Está entrenado con el dataset COCO (Common Objects in Context), que incluye automóviles y otros objetos, pero puedes entrenarlo específicamente para detectar placas.
  • Implementación:
    Necesitarás crear un dataset anotado con las placas de autos.
    Puedes usar herramientas como LabelImg para etiquetar placas en imágenes.
Faster R-CNN
  • Características: Modelo robusto para detección de objetos con precisión alta, aunque no es tan rápido como YOLO.
  • Preentrenado: Utiliza datasets genéricos como COCO o Pascal VOC.
  • Ventaja: Fácil de ajustar a la tarea específica de detección de placas.
Detectron2 (de Facebook AI)
  • Características: Plataforma de detección de objetos de última generación basada en Faster R-CNN, Mask R-CNN y otros modelos avanzados.
  • Preentrenado: Puedes comenzar con un modelo base y realizar transfer learning con tu dataset de patentes.
EAST (Efficient and Accurate Scene Text Detector)
  • Características: Especializado en la detección de texto en imágenes.
  • Preentrenado: Muy utilizado como paso previo al OCR. Puedes usarlo para identificar áreas de texto (como placas) y luego aplicar un modelo OCR.
CRNN (Convolutional Recurrent Neural Network)
  • Características: Ideal para tareas OCR después de detectar la región de interés (ROI) de las placas con un detector de objetos.
  • Preentrenado: Hay modelos disponibles entrenados en texto en ambientes diversos.

¿Cómo funciona el reconocimiento de placas de licencia?

El funcionamiento del reconocimiento de placas de licencia consta de varios pasos principales. En primer lugar, las cámaras capturan imágenes de las placas de licencia de los vehículos. Luego, estas imágenes son procesadas mediante algoritmos de extracción de características para identificar y aislar los caracteres alfanuméricos de las placas. A continuación, se utilizan algoritmos de reconocimiento de patrones y aprendizaje automático para clasificar y reconocer los caracteres y formar las secuencias de números y letras que componen los números de las placas. Finalmente, se realiza la verificación y validación de los resultados obtenidos, y se generan informes o se toman acciones dependiendo de la aplicación específica del sistema de reconocimiento.

Repositorios y proyectos

Como referencia sabemos que la solución implementada en autopistas y CNSI tiene una efectividad del 96% (sobre 56 casos tomados).

License Plate Recognizer (Argentina)

Modelo basado en Python + OCR. Utiliza OpenCV para preprocesar imágenes y detectar regiones donde se encuentran las matrículas mediante técnicas como la binarización y la detección de bordes y Tesseract OCR, una herramienta de código abierto, para extraer el texto de las matrículas una vez que son segmentadas de las imágenes

Resultado: localizar patentes: 8%  Efectividad total 0%. Sólo funciona bien con las imágenes propias del proyecto.

Automatic Number Plate Recognition Proof of Concept with Azure Cognitive Services

Utiliza Azure Cognitive Services para reconocimiento de patentes.
Resultado: no se pudo probar todavía x falta de permisos de acceso a los servicios.

Reconocimientos Automático de Matrículas ANPR

TP de un alumno de  Ingeniería en Electrónica. Están muy bien aplicados los conceptos básicos sobre acondicionamiento y transformaciones de imágenes (smoothing, averaging, median blurring, erode y dilate).


SimpleLPR - .NET

Componente publicado en Nuget. En la página de Warelogic se publica un costo por única vez de $450.
Resultado: localizar patentes: 98%. Efectividad total 82%.

License plate recognition using CNN

Jupiter Notebook (Python) que utiliza deep learning (CNN - Convolucional Neural Network) para la detección de patentes. Utiliza OpenCV, TensorFlow, Keras y bibliotecas de Python (Sklearn).
Está optimizado para patentes de la India.
La ventaja de este proyecto es que se puede reentrenar.
Resultado: localizar patentes: 53%. Efectividad total 0%.

OpenALPR es una biblioteca de código abierto para el reconocimiento automático de matrículas escrita en C++ con enlaces en C#, Java, Node.js, Go y Python. La biblioteca analiza imágenes y secuencias de vídeo para identificar matrículas. El resultado es la representación de texto de cualquier carácter de la matrícula.
Actualmente no cuenta con reconocimientos de patentes de Argentina. Se hicieron pruebas con varioas regiones.
Resultado: localizar patentes: 63%. Efectividad total 25%.

Conclusiones

Metricas de los 3 proyectos (sobre un total de 100 casos)

Más allá del tratamiento de imágenes para reconocer las patentes está el desarrollo de la solución que toma las imágens de la cámara de video, que debe permitir definir regiones y generar la salida para el tratamiento de cada imagen y luego guardar el resultado de las capturas realizadas.
Esta solución debería dar la posibilidad de obtener la última patente registrada en un puesto de control a un momento determinado.

No hay comentarios:

Publicar un comentario