Hoy en día las ciudades están llenas de cámaras, y también se pueden obtener imágenes aéreas interesantes de ciertos lugares en momentos clave. Esto puede hacerse desde los edificios más altos y mediante drones, globos equipados con cámaras, satélites de baja altura y otros ingenios que sobrevuelan las alturas.
Pero para obtener esa información útil es necesario interpretar esas imágenes y saber qué contienen. Es algo a lo que estamos acostumbrados por ejemplo para seguir las acciones de los jugadores en un partido de fútbol o baloncesto, o seguir la pista al puck del hockey sobre hielo. Usando como ejemplo el mundo de la automoción, la gente de Roboflow publicó un vídeo muy técnico, pero interesante, donde enumeran algunas de las herramientas que se suelen utilizar y cómo funcionan; el proceso es fácil de entender y completamente fascinante.
Una buena caja de herramientas informáticas
¿Qué herramientas utilizan los técnicos para realizar su «magia»? En este caso puede resumirse en todo esto:
Software libre – Todo el código que se menciona es software libre, lo que quiere decir que está disponible en repositorios como GitHub, de donde se puede descargar gratuitamente para usar, modificar, personalizar y mejorar. Esto quiere decir que si hay cierta comunidad tras la iniciativa es probable que además su funcionalidad avance de forma rápida y eficiente; muchos de los programas mencionados llevan ya, de hecho, muchos años y versiones como demostración.
Lenguajes – La parte principal del código está escrita en Python, que es un lenguaje moderno, popular y relativamente sencillo en comparación con otros; suele ser el primero que usan los niños en la escuela secundaria. Mediante el uso de librerías temáticas especializadas se puede ampliar fácilmente para volverlo más poderoso; de hecho muchos proyectos de hoy en día tienen una base escrita en Python y varias librerías combinadas para analizar los datos, procesarlos de forma matemática, científica o económica y luego visualizarlos. Además de Python algunas partes utilizan también Java, otro lenguaje muy popular.
Modelos de visión – En este proyecto se usa YOLOv8, que es la versión más avanzada del modelo de visión artificial de Ultralytics, creadores de la versión v5 y algunas de las anteriores. Es muy común en el terreno de la inteligencia artificial hoy en día. Contiene los algoritmos que se encargan de analizar las imágenes de las fotografías o los fotogramas de los vídeos –a toda velocidad– para la detección de objetos, la clasificación y la segmentación en diversas categorías. Es verdaderamente el corazón del sistema, la parte «inteligente» que hace que el software distinga que un coche es un coche, un peatón un peatón o un camión algo diferente y más grande que una moto.
Conjuntos de datos – Para ayudar en el desarrollo y las pruebas se menciona un importante repositorio de recursos: Roboflow Universe, donde pueden encontrarse más de 200.000 conjuntos de datos (datasets) y 200 millones de imágenes de prueba con sus metadatos de clasificación, que se pueden pasar por los modelos que se programan para validarlos y comprobar que funcionan correctamente. Esto quiere decir, por ejemplo, que si se está analizando la vista de una cámara en un semáforo para clasificar los tipos de vehículos (coches, bicicletas, motos, camiones…) no hace falta salir a la calle a grabar; de esta web pueden descargarse miles y miles de horas de ejemplos ya grabados y compartidos por la comunidad, además de clasificados correctamente, para verificar si el nuevo modelo acierta o falla.
Batir y agitar el código para completar la receta
Sin entrar en muchos detalles, el seguimiento, a modo de ejemplo, de los vehículos que circulan en una rotonda de la ciudad permite ver cómo se usan todas esas herramientas.
Aunque no sea fácil para alguien no versado en programación, lo que básicamente se hace es construir un programa principal en lenguaje Python que comience cargando todas las librerías que se van a necesitar, en este caso YOLOv8 para clasificar los vehículos, que aparecen numerados en la imagen, y otra llamada Byte Track para hacer el seguimiento visual de un fotograma a otro. Entonces se descarga un vídeo de Roboflow Universe para ver, probar y completar el desarrollo.
Uno de los trucos que se utilizan en este caso específico es que para colorear los vehículos, según de cuál de las cuatro entradas a la rotonda provengan –que es el objetivo de la clasificación– se marcan previamente unos rectángulos de colores sobre los pasos de cebra que hay en dichas entradas. Tan pronto como un vehículo entra en esas zonas, queda numerado de forma única y etiquetado con su color. De este modo, los amarillos son los que entran por la izquierda, los azules por la derecha, etcétera. Aquí se puede añadir que visualmente dejen un «rastro» al circular, todo depende de la información que se necesite.
Es fácil imaginar que posteriormente se pueden hacer otros usos con los datos ya analizados: saber cuántos coches o motos circulan por la rotonda, qué sucede con el flujo del tráfico si entra una furgoneta o un camión o qué sucede cuando se activan los semáforos y cruzan personas. Eso ya requerirá el desarrollo de otros algoritmos pero la base que es la interpretación inteligente de las imágenes ya está hecha.
Un universo de posibilidades
Teniendo en cuenta que todas estas herramientas son de código abierto y que cualquier persona con conocimientos de programación puede ensamblarlas y ponerlas en marcha en un ordenador personal, incluyendo el acceso a los conjuntos de datos de prueba, las posibilidades son inmensas. Los equipos actuales pueden procesar este tipo de información visual a gran velocidad y si hace falta siempre se puede echar mano de servicios «en la nube». Así que queda claro que lo importante es «la idea»: qué tipo de situaciones analizar, cómo obtener los datos iniciales y qué «inteligencia» se quiere obtener para dar con las claves que resulten más útiles y diferenciadoras. Por tecnología que no sea.