Computer Vision & Edge Computing

Computer Vision & Edge Computing

24 de abril de 2024

Redes neuronales y edge computing para la detección automática de matrículas

Resulta curioso. La forma estándar de entrenar un sistema de visión artificial es similar a la forma que tenemos de enseñar a un niño. Le señalamos objetos y le decimos qué son, para que lo identifique con claridad. Repetimos este proceso hasta que el niño (que sería nuestro modelo) empieza a encontrar patrones en la información que le estamos dando: un gato suele tener orejas puntiagudas y cuatro patas, un pájaro tiene pico y alas, un coche tiene ruedas, puertas y volante.

A este proceso se le conoce como aprendizaje supervisado. Un sistema que aprende, pero que no lo hace de forma totalmente autónoma. Para que se lleve a cabo, se le debe indicar explícitamente al modelo lo que representa cada objeto, lo que se le conoce como «etiqueta».

Así, una vez que ha recibido suficientes pares de imágenes/etiquetas correctamente vinculadas durante su entrenamiento para que haya aprendido las principales características de los objetos de interés, se puede utilizar en una aplicación. ¿Cómo se hace? Simplemente dándole una imagen y recogiendo el output del modelo: el objeto que haya encontrado en ella. Como vimos en los ejemplos anteriores del gato, el pájaro o el coche, gracias al reconocimiento de los patrones encontrados en las imágenes, el sistema puede clasificarlas.

Eso es lo que ha hecho el equipo de Inteligencia Artificial de Sngular para crear un sistema de detección automática de matrículas. Se trata concretamente de una aplicación Android que se ejecuta directamente dentro de una cámara, capaz de detectar y leer las matrículas presentes en el flujo de vídeo de la cámara y enviar esta información a un sistema de gestión de vídeo o a un servidor para su uso posterior. Es decir, el sistema toma una imagen (o vídeo) como entrada, detecta las matrículas que aparecen y lee los caracteres de esas matrículas.

¿Y para qué se usa un sistema que detecta matrículas? Uno de los problemas habituales que resuelve es que reduce el número de pasos necesarios para que un conductor entre y salga de un parking a través de la automatización de la gestión del aparcamiento. Otro caso de uso muy común es la gestión del tráfico, donde el sistema se puede utilizar para detectar vehículos con exceso de velocidad o controlar el acceso a zonas restringidas de una ciudad.

El objetivo final del proyecto no es otro que el de disponer de una aplicación que permita leer las matrículas de cualquier vehículo en cualquier escenario, ya sea un coche entrando en un garaje, una moto circulando por el centro de la ciudad o un camión en la autopista. Todo eso sin limitaciones en cuanto al número de vehículos y al tipo de matrícula que puedan tener.

Edge computing: procesamiento de datos en local

Pero hay más. El reconocimiento de matrículas no es una novedad en sí misma, sino la forma de hacerlo y, sobre todo, dónde se procesan los datos. Aquí es donde entra en juego una nueva forma de llevar a cabo los procesos de tratamiento de datos, que ahora se hacen en el propio dispositivo, lo que ayuda a hacer las infraestructuras más simples y mejorar la privacidad. Esto es lo que llamamos edge computing.

La principal ventaja de utilizar una cámara con capacidad de procesamiento es que no se necesita ningún hardware adicional para configurar el sistema. Lo único que necesita la cámara es alimentación y una mínima conexión a internet para enviar las matrículas detectadas. Esto permite que el sistema esté fácilmente disponible en zonas remotas en las que internet es limitado y reduce los costes de instalación de forma significativa: los sistemas sin edge computing requieren instalar servidores adicionales para procesar los datos, lo que es especialmente limitante en las zonas más remotas.

La tecnología que nos ha permitido desarrollar nuestro sistema en edge computing es la plataforma INTEOX de Bosch. Uno de los aspectos importantes de usar INTEOX es la flexibilidad que nos ofrece la plataforma para desarrollar aplicaciones específicas para clientes o customizar aplicaciones ya existentes. Una vez desarrollada una primera aplicación, los mismos bloques pueden reutilizarse para desarrollar diferentes aplicaciones. Esto nos permitió desarrollar rápidamente otras aplicaciones en torno al recuento de peatones y a la clasificación de vehículos.

Así se crea un sistema de visión artificial

Manuel Renner, Jorge Prudencio y Javier Pulido han sido las personas que, desde Sngular, han liderado este proyecto, desarrollado como piloto y prueba de laboratorio de lo que puede venir en el futuro próximo: la optimización del flujo de tráfico, la gestión de aparcamientos, el control de accesos, el cumplimiento de la ley y un largo etcétera. Muchas de estas aplicaciones aportan importantes ventajas tanto sociales como económicas.

El inicio del proyecto estuvo marcado por el desarrollo de una prueba de concepto con la que se pretendía demostrar que se podía construir un sistema capaz de detectar y leer con precisión las matrículas a partir de diversas imágenes. Para completar esta primera fase fue necesario encontrar los modelos adecuados y ajustarlos a las necesidades del equipo.

La segunda fase consistió en integrar estos modelos como parte de una aplicación Android que se ejecutaba directamente en la cámara. Esto requirió una estrecha colaboración entre desarrolladores de software y científicos de datos para dar vida a la primera versión de la aplicación.

La tercera fase, en la que el equipo continúa trabajando ahora, es la de optimizar el sistema tanto en términos de precisión como de velocidad, con el objetivo de que la cámara pueda leer varias matrículas a la vez en tiempo real y con una alta precisión.

Para que todo funcione como se espera, el software se ejecuta íntegramente dentro de la cámara que viene con un sistema operativo Android. Por lo tanto, utilizamos Java y Kotlin para desarrollar una aplicación Android que se puede instalar en la cámara fácilmente.

Pero la tecnología empleada para este tipo de proyectos varía según los sistemas. El componente de detección del sistema suele realizarse utilizando frameworks de Deep Learning como Tensorflow y librerías de visión artificial como OpenCV, que pueden implementarse fácilmente en diversas arquitecturas de software. Este dependerá del hardware utilizado.

¿Cómo funciona?

Para cada fotograma recibido del flujo de vídeo de la cámara se ejecuta un modelo que detecta matrículas dentro de la imagen. En el caso de que se haya detectado una matrícula, es entonces cuando se extrae y se procesa el área de la imagen donde esta se encuentra, para lo que se utilizan técnicas para mejorar la visibilidad de la matrícula.

Posteriormente, la imagen procesada entra en un segundo modelo que reconoce los caracteres presentes en la misma y consigue generar la matrícula en formato texto. Este resultado, junto con la marca de tiempo, puede enviarse a sistemas de gestión de vídeo o servidores para que se utilice en otras aplicaciones.

El reto de la integración

Para Manuel Renner, la principal dificultad en el desarrollo del sistema ha sido la integración y optimización del componente de visión artificial del software. Gran parte del desarrollo original (prueba de concepto, evaluación, etc.) se realizó con Python, ya que permite un desarrollo y una evaluación más rápida. Luego hubo que traducirlo a Java/Kotlin para que los modelos y la lógica se pudieran implementar en la cámara, lo que a veces resultó ser un reto para el equipo.

Así precisamente, como un reto a superar, lo define Manuel. Pero, a pesar de la complejidad, tanto él como el resto de compañeros confiesan haber aprendido mucho por el camino, por lo que para ellos ha merecido la pena emprenderlo desde los inicios.

«El equipo está formado por personas muy hábiles y el hecho de haber empezado algo nuevo desde cero y haber llegado hasta donde estamos ahora es un gran logro».

El equipo técnico ha estado compuesto por perfiles de ingeniería, científicos de datos o ingenieros de machine learning con experiencia en visión artificial, así como desarrolladores de software. Además, han podido contar con un product owner con la tarea de supervisar el desarrollo del proyecto y orientar los esfuerzos de ingeniería. Asimismo, la visión comercial es fundamental para entender lo que buscan los clientes en el mercado y asegurarse de que el sistema puede satisfacer las aplicaciones más demandadas.

En 2023, los municipios con más de 50.000 habitantes tendrán que acotar un área de circulación para vehículos no contaminantes. Soluciones como la de @BoschEspana y Sngular para detectar matrículas automáticamente serán muy relevantes. @JuanMonzonF nos cuenta cómo funciona. pic.twitter.com/sJw9mwXsLi

— SNGULAR (@sngular) April 12, 2022

El resultado de todo esto es solo un ejemplo de lo que el desarrollo conjunto de visión artificial y edge computing nos permite hacer. Gracias a esta unión, los sistemas de visión artificial son mucho más accesibles, ya que ahorran en unidades de procesamiento adicionales innecesarias. Las cámaras se pueden instalar fácilmente en cualquier entorno y realizar una gran variedad de tareas como estimar el tiempo de una cola, contar distintos tipos de productos en una cadena de producción, gestionar los sistemas de flujo de tráfico, entre otras.