Red de conocimiento informático - Programación de la red - Principio y codificación del sistema de reconocimiento de matrículas "YOLO MLP"

Principio y codificación del sistema de reconocimiento de matrículas "YOLO MLP"

El sistema de reconocimiento de matrículas puede detectar e identificar automáticamente las matrículas de vehículos en imágenes. Su algoritmo incluye principalmente posicionamiento de matrículas, segmentación de matrículas, reconocimiento de caracteres y otros pasos. Este artículo brindará una solución de sistema de reconocimiento de matrículas basada en el aprendizaje profundo.

Debido a que la información de las matrículas del vehículo se puede extraer automáticamente de imágenes de vídeo, el sistema de reconocimiento de matrículas se puede aplicar a las siguientes industrias:

Nuestro proyecto incluye los siguientes tres pasos: matrícula Detección de caracteres de matrículas. Segmentación y reconocimiento de caracteres de matrículas.

Utilizamos el algoritmo Yolo (solo miras una) para detectar matrículas. Yolo es una arquitectura de detección de objetos de aprendizaje profundo basada en redes neuronales convolucionales. La arquitectura fue introducida por Joseph Redmond, Ali Farhadi, Ross Girshik y Santosh Divwala. La primera versión se lanzó en 2015 y se actualizó gradualmente a la versión 3:

Yolo es una red única entrenada de extremo a extremo. que se puede utilizar para predecir la categoría y el cuadro delimitador de un objeto. La red Yolo es extremadamente rápida y puede procesar imágenes en tiempo real a 45 fotogramas por segundo. Una de las redes más pequeñas, llamada Fast YOLO, alcanzó incluso una impresionante velocidad de procesamiento de 155 fotogramas por segundo.

Implementemos la red YOLO V3. Primero, preparamos un conjunto de datos que contiene 700 imágenes de matrículas turcas. Para cada imagen, utilizamos la aplicación de escritorio LabelImg para etiquetar la ubicación de la matrícula y guardarla en un archivo xml. El script de descarga de datos y entrenamiento de red es el siguiente:

Una vez completado el entrenamiento de red, para reconocer la matrícula del vehículo en la imagen, seleccionamos el último modelo de darknet/custom/weights y escribimos su nombre de ruta al objeto de archivo _ En detect_yolo.py, también usaremos el archivo yolov3.cfg, anotaremos la parte de entrenamiento y luego ejecutaremos:

Este es nuestro resultado:

Ahora necesitamos segmentar nuestro número de matrícula. La entrada para este paso es la imagen de la matrícula, y debemos poder extraer la imagen de un solo carácter. El paso de segmentación de matrículas es muy importante para el sistema de reconocimiento de matrículas porque el resultado de este paso se utilizará en el paso de reconocimiento. Para segmentar los caracteres de la matrícula lo más correctamente posible, debemos realizar el procesamiento previo necesario.

El histograma de proyección de píxeles se utiliza para encontrar los límites superior e inferior, los lados izquierdo y derecho del área del carácter. Usamos proyección horizontal para encontrar las posiciones superior e inferior de los caracteres, y proyección vertical para encontrar las posiciones izquierda y derecha de los caracteres:

Otra forma de extraer números de las placas de los vehículos es usar la apertura morfológica /cierre operaciones para generar algunas regiones conectadas y luego utilice un algoritmo de seguimiento conectado para extraer estas regiones conectadas.

La etapa de reconocimiento es el último eslabón de nuestro sistema automático de detección y reconocimiento de matrículas. El reconocimiento se basa en la imagen de un solo carácter obtenida en el enlace anterior. Nuestro modelo predecirá estas imágenes y obtendrá el número de matrícula final.

Para utilizar los datos de entrenamiento tanto como sea posible, cortamos cada carácter por separado para obtener un conjunto de datos de caracteres de matrícula, que contiene 11 categorías (números del 0 al 9 y palabras árabes), cada una de cada clase. contiene imágenes de 30 a 40 caracteres y las imágenes están en formato PNG de 28X28.

Luego, realizamos un estudio comparativo entre MLP y KNN. Los resultados muestran que para MLP, el rendimiento del clasificador mejorará si hay más neuronas en la capa oculta. De manera similar, para KNN, el rendimiento también mejora a medida que aumenta el número de vecinos. Sin embargo, dado que el potencial ajustable de KNN es mucho menor que el de MLP, finalmente optamos por utilizar la red MLP de perceptrón multicapa para reconocer los caracteres de la matrícula segmentados en esta etapa:

Puedes encontrar el código y conjunto de datos aquí: github.

Enlace original: Detección e identificación automática de matrículas de vehículos - Huizhi. es