Skip to content

Se usa YOLOv10 para detectar vehículos en la vía, para luego detectar sus matriculas y usar tesseract-OCR para leer las matrículas

Notifications You must be signed in to change notification settings

jrguignan/Proyecto-Deteccion_de_Matriculas

Repository files navigation

Índice

Objetivo

El proyecto busca detectar el código de matrícula de vehículos de transpote terrestres, autos, motocicletas, buses y camiones. Para este fin el código utilizará la detección de vehículos y luego de la matricula con YOLO10.

Cabe aclarar que cuando se hacer referencia a placa, patente o matrícula se está hablando de código de identificación vehicular.


Volver al Índice

Tegnologías Utilizadas

YOLO (You Only Look Once) de Ultralytics es una arquitectura de red neuronal profunda diseñada para la detección de objetos en tiempo real. Utiliza un enfoque de regresión único que predice directamente las clases y las ubicaciones de los objetos en una imagen en una sola pasada, lo que lo hace extremadamente rápido y eficiente. Se usa en diversas aplicaciones como vigilancia, conducción autónoma, análisis de videos y cualquier tarea que requiera identificar y localizar objetos específicos dentro de imágenes o secuencias de video de manera rápida y precisa.

Para este proyecto se uso la versión nano de YOLO. Para el caso de la detección de los vehículos se utilizó el dataset preentrenado con COCO y para el caso de la detección de la matrícula se usó un dataset de RoboFlow, este se entrenó en YOLOv8 y se pudo correr sin problemas en YOLOv10, debido a que la página de RoboFlow no se ha actualizado a YOLOv10.

Instalación YOLO10

En el momento de la realización del proyecto, recién había salido YOLOv10, por lo que tuvo que instalar desde el repositorio de GitHub.

En poco tiempo se intalará de manera automática al instalar la librería ultralytics.

Se instaló de la siguente manera:

# Dentro de la carpeta del proyecto, corre lo siguente en la terminal.
git clone https://github.com/THU-MIG/yolov10.git 
cd yolov10 
pip install .

OpenCV (Open Source Computer Vision Library) es una biblioteca de software de código abierto especializada en visión por computadora y aprendizaje automático. Desarrollada inicialmente por Intel, está escrita en C++ pero también tiene interfaces para Python y Java, entre otros lenguajes. OpenCV ofrece una amplia gama de herramientas y funciones para la captura, procesamiento y análisis de imágenes y videos. Se utiliza en aplicaciones como el reconocimiento facial, la detección de objetos, la segmentación de imágenes, el seguimiento de movimientos, la reconstrucción 3D y muchas otras tareas en los campos de la visión por computadora y la inteligencia artificial. Su capacidad para manejar tareas complejas de procesamiento de imágenes de manera eficiente la convierte en una herramienta valiosa para investigadores y desarrolladores en estas áreas.

Es una plataforma integral diseñada para facilitar el desarrollo de aplicaciones de visión por computadora. Proporciona herramientas para gestionar y mejorar datasets de imágenes, incluyendo la anotación, el aumento de datos y la exportación a formatos compatibles con diversas arquitecturas de modelos de aprendizaje profundo, como YOLO, TensorFlow, y PyTorch. Roboflow simplifica el proceso de preparar los datos para entrenar modelos de reconocimiento de objetos, clasificación de imágenes y segmentación, permitiendo a los desarrolladores centrarse en el diseño y optimización de sus modelos en lugar de en las tareas repetitivas y técnicas asociadas con la gestión de datos.

El entrenamiento del dataset de matrículas se realizo en YOLOv8 devido a que al descargar de RoboFlow aún no se puede descargar en formato YOLOv10. De igual manera funcionó bien al correr en YOLOv10.

Tesseract OCR (Optical Character Recognition) es un motor de reconocimiento óptico de caracteres de código abierto desarrollado inicialmente por Hewlett-Packard. Este software permite convertir imágenes de texto impreso o manuscrito en texto digital editable. Es altamente configurable y soporta múltiples idiomas, lo que lo hace ideal para aplicaciones como la digitalización de documentos, el procesamiento de formularios, la extracción de datos de imágenes y la lectura automática de matrículas. Tesseract OCR es ampliamente utilizado en proyectos de digitalización de archivos históricos, aplicaciones móviles de escaneo de texto y sistemas de automatización de datos.

Para utilizar este OCR se debe insatalar un archivo en la computadora y tambien la librería pytesseract para conectarse con el a través de python. Tesseract-OCR-5.3.4.20240503-64bits


Volver al Índice

Breve Explicación del Código

Cabe destacar que el codigo realiza el proceso frame a frame, por lo que se decidió dejar el archivo detector.ipynb, tambien para facilitar en el entendimiento del código del detector.

La suma del analisis de estos frames generará el video de salida.

Se pasa el frame a analizar.

Se corre modelo entrenado con el dataset de coco en YOLO, para detectar si hay un auto, motocicleta, bus o camión y se colocan las etiquetas de la detección en el frame.

Al detectar algún vehiculo se procede a cortar el box de la detección para mejorar la deteccion de la placa, aunque no es necesario, mejora la detección de la matrícula.

A partir de la imagen recortada se detecta la matrícula y se coloca la etiqueta de la detección en el frame.

Se recorta el box de la detección de la matrícula

Se transforma la imagen a escala de grises para facilitar la detección del OCR

Se imprime la deteccion del OCR en el frame, que en conjunto con las demas etiquetas muestran el frame final.

La iteración de este proceso genera el análisis de un video o también podría ser el análisis una cámara en tiempo real.


Volver al Índice

Estructura de Archivos

carpeta models -> Contiene los modelos entrenados en archivos .pt. Estos archivos son los valores de los peso y los bias de la red neuronal entrenada. Uno es el entreando por defecto con el dataset COCO y el otro es un modelo entrenado con un dataset sacado de RoboFlow.

carpeta videos -> Contiene un video que se utilizó de prueba y el video de salida luego de la detección de la matrícula.

detector.ipynb -> Contiene el código para correr sobre un frame. Muestra paso a paso lo que hace el código.

detector.py -> Contiene el código para correr sobre un video.

entrenamiento_colab.ipynb -> Contiene el entrenamiento del dataset para detectar la matrículas a 40 épocas, se realizó en la plataforma de Google Colab, por ser más potente que la computadora donde se desarolló el proyecto.

requirements.txt -> Archivo de texto que contiene las librerías utilizadas con sus versiones, en el caso de ultralytics (YOLO10), se instaló directo del reposiorio de GitHub porque ha la fecha de realización de este proyecto, tenía pocos días de su salida.


Volver al Índice

Recomendaciones

  • Es más apropiado usar modelos entrenados con datasets de imágenes prácticas, que se aproximen a las que se usarán en la detección. Esto mejora en gran medida la detección.

  • Al analizar videos largos y con detecciones continuas de varios vehiculos es necesario utilizar un tracker en el código.

  • Se puede mejorar el tratamiento previo de la imagen, antes de usar el OCR , esto mejoraría la lectura que hace tesseract-OCR.


Volver al Índice

Autor

About

Se usa YOLOv10 para detectar vehículos en la vía, para luego detectar sus matriculas y usar tesseract-OCR para leer las matrículas

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published