
Una cámara automatizada siguió una cabeza calva durante todo un partido. Construí la compuerta física que dice no.
En octubre de 2020, una cámara automatizada en el Inverness Caledonian Thistle pasó gran parte de un partido de fútbol siguiendo la cabeza calva de un juez de línea en lugar del balón. Bajo los focos, la cabeza brillaba como un balón, la cámara Pixellot siguió la detección de mayor confianza que se le entregó, y los espectadores en casa tuvieron un primer plano prolongado y dedicado de un hombre calvo trotando por la línea de banda mientras el partido transcurría fuera de cuadro (documentado en nuestra página de solución WP43).
Esa historia me acompañó durante todo este desarrollo, porque es la imagen más nítida que conozco de un fallo que todos en visión por computadora han sentido y casi nadie nombra correctamente. El detector no estaba averiado. Hizo exactamente lo que hace un detector. Puntuó una región de píxeles, el brillo de la cabeza obtuvo una puntuación alta y cada sistema aguas abajo confió en la puntuación. Plumbline, la demo que construí, está en https://veriprajna.com/demos/physics-constrained-computer-vision, y todo ello sostiene un único argumento: la solución no reside dentro del detector.
El momento en que dejé de culpar al modelo
Pasé el primer día de este proyecto intentando imaginar un detector mejor, y no logré hacer desaparecer el problema. Un detector de objetos es independiente de los fotogramas. Evalúa cada imagen según su textura y forma, sin memoria de dónde estaba un objeto real hace un instante ni de dónde puede estar físicamente a continuación. Por eso, bajo la iluminación del estadio, una cabeza calva es un balón localmente excelente. Puedes entrenar un modelo más preciso y aun así, en el fotograma donde el brillo alcanza su punto máximo, te entregará un balón con un 98 % de confianza sobre la cabeza de un hombre. La confianza no está mintiendo sobre los píxeles. Está respondiendo a una pregunta que no tiene nada que ver con si un balón puede estar ahí.
Fue entonces cuando el enfoque cambió para mí.
Tu sistema de visión no tiene un problema de confianza. Tiene un problema de física.
Un balón real obedece a restricciones que una cabeza calva no cumple, y ninguna de esas restricciones reside en la puntuación del detector. Ese único cambio de perspectiva definió toda la arquitectura. Dejé de intentar hacer el detector más inteligente y empecé a construir una capa que se sitúa detrás de él y hace cumplir la física que el detector nunca conoció.
Cómo se ve «físicamente imposible» en código
Quería ver cómo se rechazaba una detección por un motivo que pudiera leer en lenguaje sencillo, así que eso fue lo primero que construí. Plumbline se sitúa aguas abajo de cualquier detector y ejecuta tres compuertas deterministas sobre cada candidato antes de que nada actúe sobre él. La compuerta cinemática utiliza un filtro de Kalman —un Unscented Kalman Filter en la trayectoria sintética con un modelo de movimiento de proyectiles— para predecir dónde puede estar a continuación un balón real, y luego mide cuánto se aleja cada candidato de esa predicción como una distancia de Mahalanobis: acepta por debajo de 3 sigma, rechaza por encima de 5 sigma y marca la banda de 3 a 5 sigma para revisión. La compuerta de flujo óptico compara el movimiento de píxeles local de un candidato con la velocidad esperada de la trayectoria, y rechaza un «balón» cuyo flujo apunta en la dirección equivocada o apenas se mueve en juego abierto. La compuerta geométrica utiliza un modelo estenopeico para calcular cuántos píxeles puede subentender un balón de 22 cm a la profundidad implícita del candidato, y descarta los tamaños que no pueden ser reales.
Ninguna de ellas es un modelo. Son simple numpy y scipy que puedes leer línea por línea, situadas fuera de cualquier red, que es la razón fundamental por la que confío en ellas. La confianza aquí no depende de que una caja negra se explique a sí misma a posteriori.
La cabeza calva falla las tres compuertas a la vez. Inyecté ese impostor deliberadamente, como una reproducción del incidente de Inverness de 2020 en lugar de un afortunado error orgánico, porque el caso que rompe una cámara es exactamente el que nunca aparece en el conjunto de prueba de un detector. En el peor fotograma del clip sintético, la cabeza se desvía 82,3 sigma del movimiento previsto del balón, lo cual no es una decisión ajustada: es cinemáticamente absurdo. El balón real, situado en una confianza de 0,87 y 0,4 sigma, pasa limpiamente y la cámara permanece sobre él.

Cada rechazo deja constancia de su motivo
No quería que nada de esto fuera algo que hubiera que aceptar por fe, así que cada decisión escribe un registro que puedes abrir. El registro de decisiones exportado incluye la semilla, el escenario, el id del detector y los umbrales de las compuertas en la parte superior, y luego una fila por fotograma para cada candidato: la clase y confianza emitidas por el detector, el veredicto numérico de cada compuerta y su motivo en lenguaje claro («Mahalanobis 82 sigma >= 5 sigma: kinematically impossible»), y la acción final. En el escenario del juez de línea calvo, las compuertas rechazan las 18 falsas detecciones de alta confianza del impostor, y el rastreador físico mantiene el balón el 97,7 % del tiempo frente al 59,1 % del criterio de seguir la mayor confianza y el 20,5 % de un umbral elevado (escena sintética, semilla 7).
Para cualquiera que asuma responsabilidades por una decisión visual automatizada, ese registro marca la diferencia entre un informe de incidente y encogerse de hombros. Está diseñado para constituir pruebas archivables de por qué una cámara hizo lo que hizo, no un certificado de cumplimiento normativo: solo la justificación física, registrada, fotograma por fotograma.

Subir el umbral de confianza es el control equivocado
Cuando muestro a los ingenieros el rechazo de la cabeza calva, el primer instinto es casi siempre el mismo: simplemente subir el umbral de confianza hasta que desaparezca el balón falso. Construí la demo para responder a ese instinto con cifras, porque parece intuitivo pero es erróneo. En la escena sintética limpia y sin ningún impostor, elevar el umbral descarta el 43,2 % de los balones reales de baja confianza, mientras que las compuertas físicas mantienen su tasa de omisión en el conjunto limpio en un 2,3 %, lo que representa un único fotograma de latencia de adquisición en lugar de un balón perdido. El umbral cambia un falso positivo por una pila de falsos negativos.
Las compuertas físicas operan en un eje completamente distinto. Pueden rechazar la detección imposible sin descartar la auténtica pero tenue, porque lo que comprueban (¿puede un balón estar aquí, moviéndose de esta manera y con este tamaño?) no guarda relación con la fuerza con la que votó el detector. Esa ortogonalidad es lo que construí la prueba de la escena limpia para hacer innegable.

Hay un detalle menor al que le tomé cariño mientras probaba esto: el caso de oclusión. Un jugador se cruza delante del balón durante una docena de fotogramas, todos los candidatos son rechazados y, en lugar de engancharse al jugador, el rastreador físico avanza por inercia sobre su propia predicción a través del intervalo y vuelve a adquirir el balón cuando reaparece. Verlo mantener una trayectoria vacía en vez de fingir una errónea fue la primera vez que sentí esta capa menos como un filtro y más como criterio.
La cifra que casi decido no mostrar
Estuve a punto de suprimir la ejecución con metraje real, y mantenerla es la decisión de la que me siento más orgulloso en todo este desarrollo. Todo lo anterior se ejecuta sobre una escena sintética con ground truth conocido, que es lo que hace posible una comparativa limpia, pero una victoria sintética es fácil de desconfiar. Así que tomé un clip de transmisión real, ejecuté detecciones reales con YOLO11x fotograma a fotograma, inyecté la cabeza del juez de línea como un balón falso a partir de la detección real de la persona y ejecuté las mismas tres compuertas sin cambios. De ahí surgieron dos compromisos honestos. Un único clip de transmisión sin calibrar no tiene profundidad métrica, por lo que la compuerta cinemática se ejecuta en el plano de la imagen como un filtro de Kalman 2D, no en el espacio del mundo real, y fingir un filtro 3D habría sido una mentira. Y la puntuación cayó. En el clip real, las compuertas físicas retienen el balón el 68,3 % del tiempo, frente al 43,8 % del criterio de seguir la mayor confianza y el 30,0 % del umbral elevado.
Me quedé pensando en ese 68,3 % durante un tiempo, porque el 97,7 % es la cifra que vende y el 68,3 % es la cifra que es real en un vídeo difícil. Mantuve la cifra honesta en el marcador, dentro de la aplicación, donde cualquiera puede leerla. Una capa de verificación que se sobrevende ya ha fracasado en la única tarea que afirma realizar. Lo que respalda el argumento es la dirección: el mismo código de compuertas, sin modificar, supera a ambas líneas base en detecciones reales y en simuladas, y expone con franqueza sus propios límites.

De qué es realmente el sustrato todo esto
No me propuse construir un producto de fútbol, y quiero ser prudente sobre lo que esta demo es y no es. No es una afirmación de que superemos el rastreo de cualquier sistema de cámaras comercial, ya que el firmware posterior de Pixellot ya gestiona el caso literal de la cabeza calva, y el detector no es el producto. El producto es la capa delgada e inspeccionable situada entre un detector y lo que sea que actúe sobre su salida. Estas métricas reflejan la calidad de rastreo, no una tasa de error del detector, razón por la cual el valor se mantiene sin importar lo bueno que llegue a ser el detector subyacente.
Esa capa importa más ahora que cuando empecé. La visión por computadora se está volviendo agéntica, con sistemas que no se limitan a etiquetar un fotograma sino que actúan sobre él, y la pregunta de gobernanza sin resolver subyacente a todos ellos es cómo evitar que un agente autónomo actúe a partir de una detección físicamente imposible. SoccerNet todavía califica el seguimiento multiobjeto como «lejos de estar resuelto», sin ningún método consciente de la física integrado aún en sus comparativas. La cabeza calva nunca fue la parte interesante para mí. Lo interesante es que la restricción que la atrapa —que un objeto real debe obedecer a la física— también se sostiene frente a un futuro detector perfecto, porque un balón que flota a una altura constante moviéndose a tres millas por hora es erróneo con cualquier nivel de confianza. Si quieres ver cómo se anula una detección y leer la razón exacta por la que fue anulada, la demo se encuentra en https://veriprajna.com/demos/physics-constrained-computer-vision, ejecutando el clip real y las escenas sintéticas lado a lado.
Y si prefieres verlo antes que creer solo en mi palabra, aquí está todo el sistema funcionando de principio a fin, con el clip real y las escenas sintéticas lado a lado.
La cámara siguió una cabeza calva porque nadie le dijo nunca lo que puede hacer un balón. Todo lo que construí es simplemente esa instrucción, registrada donde puedes comprobarla.

