Cada vez que un proveedor de tecnología te dice "usamos inteligencia artificial", vale la pena hacer una pregunta concreta: ¿qué modelo, exactamente? Si la respuesta es vaga ("un algoritmo propio que no podemos detallar") o un nombre que no aparece en ninguna parte fuera del catálogo del propio proveedor, vale la pena dudar. Si la respuesta nombra modelos que existen, que tienen literatura técnica disponible y que cualquier ingeniero puede inspeccionar, la conversación es mucho más sana.
En Abordo trabajamos con dos piezas: YOLO y ByteTrack. Las dos son modelos abiertos, con código disponible, papers académicos y comunidades activas que los mejoran constantemente. Este post explica qué hace cada una y por qué decidimos no inventar la rueda.
Pieza 1: YOLO — detección de personas en imagen
YOLO son las siglas de You Only Look Once. Es una familia de modelos de visión por computador diseñados para hacer detección de objetos muy rápida sobre una imagen. El nombre viene de su característica clave: con un solo paso (a diferencia de modelos más antiguos que requerían varias pasadas), produce una lista de "cajas" con etiquetas. Para cada caja dice: "aquí hay un objeto del tipo X, con esta probabilidad".
YOLO existe desde 2015 y ha pasado por varias versiones (YOLOv5, YOLOv7, YOLOv8, etc.). Cada generación mejora dos cosas: precisión y velocidad. Para nuestro caso necesitamos ambas: precisión porque el conteo tiene que ser confiable, y velocidad porque corremos el modelo dentro del bus, sobre un Raspberry Pi 5, y la latencia tiene que ser baja para procesar 15-30 cuadros por segundo en vivo.
YOLO no aprende a contar personas solo. Aprende a detectarlas. En la práctica usamos un YOLO preentrenado sobre el dataset abierto COCO (un conjunto de imágenes anotadas con personas, autos, bicicletas, etc.) y le aplicamos un fine-tuning sobre imágenes de pasajeros en buses, en cámara cenital, en condiciones reales de operación. Ese ajuste fino es la diferencia entre un modelo que funciona regular y uno que funciona en producción.
¿Qué te devuelve YOLO cuando le das un cuadro de video? Algo así:
Cuadro 4.872 — 14:23:08
Persona detectada en (x=312, y=180), confianza 0.94
Persona detectada en (x=420, y=215), confianza 0.89
Eso es todo. Una lista de detecciones con coordenadas en píxeles y una confianza. Nada más. Nada de identificación, nada de quién es esa persona.
Pieza 2: ByteTrack — seguimiento entre cuadros
Si solo tuviéramos YOLO, contaríamos mal. Cada cuadro detectaría personas, pero no sabríamos cuáles son las mismas personas vistas un instante después. Si una persona avanza por la puerta, aparecería en 30 cuadros consecutivos como 30 detecciones distintas. El sistema contaría una persona 30 veces.
Para evitarlo necesitamos seguimiento (tracking): tomar las detecciones de cuadros consecutivos y decir cuáles corresponden a la misma persona. Esa es la pega de ByteTrack.
ByteTrack es un modelo abierto de seguimiento publicado en 2021, popular precisamente por dos virtudes: es rápido (corre sobre la salida de YOLO sin agregar mucha carga) y es robusto a oclusiones momentáneas —cuando una persona desaparece brevemente porque otra le pasó por delante, ByteTrack la reasocia correctamente cuando vuelve a aparecer.
Lo que hace ByteTrack es asignar a cada persona detectada un identificador efímero ("persona 47", "persona 48") y mantener ese identificador mientras la persona siga visible en la escena. Cuando la persona sale del campo de visión, el identificador se descarta. Nada de eso se guarda, se transmite ni se asocia con identidades reales.
Combinando YOLO y ByteTrack, la salida ya no es una lista de detecciones desconectadas. Es algo así:
Persona 47 — entrada (12:03:08.4) → centro (12:03:08.8) → salida (12:03:09.3)
Persona 47 cruzó la línea virtual de conteo en dirección entrante.
EVENTO: subió 1 a las 12:03:08.9
Eso es un evento de conteo. Eso es lo que se sube a la nube (sin el video, sin la imagen, sin nada más).
La línea virtual: dónde y cómo se cuenta
Mencionamos arriba "la línea virtual". Es una pieza clave del sistema y no la inventa el modelo: la define el integrador en la calibración por bus durante la instalación. La línea es una recta horizontal o ligeramente curva, dibujada en el plano de la imagen, justo en el umbral de la puerta.
El conteo no ocurre cuando aparece una persona en la escena. Ocurre cuando el seguimiento detecta que el centro de masa de una persona cruza esa línea en una dirección u otra. Cruzó hacia adentro → subió. Cruzó hacia afuera → bajó. Pasó por el lado sin cruzar → no se cuenta.
Esto elimina una cantidad enorme de falsos positivos: el chofer que pasa varias veces por la puerta sin entrar/salir realmente, el pasajero que se asoma y vuelve atrás, el cargador que ayuda a subir y se baja inmediatamente. Solo se cuentan cruces efectivos.
¿Por qué no algo "más nuevo" o propio?
La pregunta es razonable. La respuesta es práctica:
-
YOLO y ByteTrack están probados. Tienen literatura académica, código abierto, miles de proyectos en producción, comunidades que los mantienen. Apostarle a un modelo propio cerrado es introducir riesgo gratuito.
-
Son auditables. Si un cliente quiere meterse a la cocina y entender qué hace exactamente el modelo, puede. Eso baja la barrera de confianza enormemente.
-
Son rápidos en hardware barato. Cada generación de YOLO se ha optimizado para acelerar inferencia, y existen versiones específicamente afinadas para correr en aceleradores como el Hailo-8L que usamos. Inventar algo equivalente desde cero costaría meses de ingeniería sin entregar mejora real.
-
El valor de Abordo no está en el modelo, está en lo que ocurre después. La reconciliación contra boletos, el motor de riesgo por chofer y ruta, el portal, las alertas: ahí es donde Abordo es propio. El modelo de visión es un commodity que mejora año a año en código abierto, y aprovechamos eso.
Cierre
Hay productos de IA que esconden lo que hacen detrás de marketing. Hay productos de IA que nombran exactamente sus piezas, citan sus papers y aceptan auditoría. Los segundos son los que pueden mantener una conversación honesta con clientes que tienen que justificar el gasto. En Abordo elegimos ese segundo camino, y nombrar YOLO + ByteTrack en público es parte de esa elección.
En el próximo post explicamos por qué tomamos la decisión de procesar todo eso en el bus —y no en la nube como suelen hacer otros proveedores—. Spoiler: la economía no cierra de otra forma.