Tres fuentes, una tasa de fotogramas y una discrepancia de 35×


Foto de Markus Spiske en Unsplash
Cada vídeo de mi dataset declaraba su tasa de fotogramas tres veces, y las tres lecturas no coincidían. Resolver eso fue la mayor parte del proyecto.
El número que no era un número
Tenía 181 vídeos y un pipeline que escribir. El plan era simple: leer cada fichero, seguir el marcador, convertir el desplazamiento en píxeles a milímetros y el tiempo a segundos. La tasa de fotogramas es el factor de conversión de la segunda mitad de esa frase, y di por hecho que era un dato que se consulta y ya está.
No es un dato. Son tres.
OpenCV declara una tasa de fotogramas. ffprobe declara r_frame_rate. ffprobe declara también avg_frame_rate, que es otra cosa distinta, y el convenio de nombres de fichero que usábamos codifica un valor previsto que constituye una cuarta afirmación.
Cuánto se puede torcer
En un fichero, dos de esas lecturas implican un clip de 983 segundos. Las otras implican 28,3 segundos. El mismo fichero.
Eso es una diferencia de aproximadamente 35× en el tiempo derivado, y el tiempo es el denominador de todas las velocidades del dataset. Un pipeline que elija en silencio el primer valor que ha leído producirá números que parecen perfectamente razonables y que están mal por más de un orden de magnitud.
Un valor que no has elegido deliberadamente no son datos. Es un valor por defecto que ha sobrevivido.
La discrepancia no era un caso raro en cuatro ficheros. En cuanto lo comprobé de verdad, el conflicto estaba en los 181.
Qué hice en su lugar
Tres cosas, ninguna ingeniosa:
- Registrar todas las afirmaciones. El inventario guarda todas las fuentes de cada fichero en vez de colapsarlas al leer.
- Resolver un valor autoritativo, mediante una regla explícita, y dejar escrito qué regla se aplicó.
- Mantener el conflicto visible. Cada registro lleva un campo
inconsistencies, y el resumen del análisis explica la distinción con palabras, para que nadie aguas abajo reinterprete el tiempo por accidente.
Lo último es lo que más importa. Resolver el conflicto es fácil; el riesgo es que la resolución se vuelva invisible y que, seis meses después, alguien asuma con toda la razón que el número nunca estuvo en duda.
Lo que le diría a la Carla de hace un mes
Perdí una semana larga con esto y al principio me fastidió, porque no produjo ni un hallazgo. Esa era la forma equivocada de contabilizarlo.
Los resultados reales de la campaña —una relación entre curvatura y asimetría, un exceso sistemático de velocidad— solo merecen enunciarse porque el tiempo que hay debajo es defendible. La semana no fue un desvío del análisis. Fue el análisis ganándose el derecho a existir.