Fantasmas en la imagen
Un ojo hecho con las técnicas de 2001 y dos modelos de visión de hoy buscan el mismo objeto en cuadros embrujados. ¿Quién se deja engañar por el fantasma?
La escena es la de un anteproyecto de 2001 para un robot con retroalimentación visual: 640×480 en grises, un disco brillante sobre fondo uniforme. A cada cuadro se le meten fantasmas: el eco de multitrayecto de la televisión analógica, ruido impulsivo, ruido gaussiano y barras de interferencia. El ojo de 2001 son las técnicas de ese anteproyecto, escritas ahora en C: filtros de ventana de 3×3 y el centroide, con un cancelador de eco que mide el fantasma en una señal de referencia, como se hacía en la tele. Los de 2026 son Qwen2.5-VL 3B y Gemma 3 4B, corriendo local con Ollama en un Intel N100. Los tres vieron los mismos 72 cuadros: 18 casos, cuatro cuadros de cada uno. Escoge un fantasma, su intensidad y un cuadro.
Lo que se ve
- Qwen sí ve el disco, pero contesta en otra escala. Ollama le pasa la imagen agrandada a 1,036×784 (37×28 = 1,036 tokens de imagen de 28×28 px; con la pregunta suman los 1,122 tokens de entrada que reporta en cada cuadro) y Qwen da las coordenadas en esa imagen, aunque la pregunta dice 640×480. Sin reescalar, su error mediano parecía de 366 px. Aquí todo lo de Qwen está reescalado a 640×480.
- El eco engaña a Qwen antes que al ojo de 2001. El fantasma es una copia del disco 40 px a la derecha. De los 16 cuadros con eco, Qwen dio el recuadro completo en 11, y en 10 de ellos abarca el disco y su fantasma juntos: unos 86 px de ancho, con el centro corrido unos 20 px, ya desde el eco más débil. El ojo de 2001 sin cancelador aguanta el eco del 20 y del 35 %, y con el del 50 y el 70 % se corre lo mismo, unos 20 px. Con el cancelador queda a menos de un píxel en los cuatro.
- Gemma contestó (320, 240) en los 72 cuadros, también en los limpios: el centro exacto de la imagen. Con esta pregunta no localiza el disco; contesta el centro.
Las diez variantes del ojo de 2001
No todas sirven. La de mediana con cancelador es la que tiene el peor caso más bajo, y por eso es la que se muestra arriba; se escogió después de ver los resultados. Con Laplaciano o mínima distancia pierde el disco en cuanto hay ruido, aun con el gaussiano más leve; sin filtro o con la media, el ruido impulsivo fuerte lo saca. Mismos cuadros que los modelos; error mediano y peor caso (la mediana del caso más difícil) en píxeles, tiempo por cuadro en el N100.
Los 18 casos
Error mediano de cada ojo en los cuatro cuadros de cada caso, en píxeles. Toca una fila para verla arriba.
Cómo se midió y lo que no mide
- Las escenas son sintéticas, generadas con semilla fija: no hay cámara de por medio. La posición real de cada cuadro se conoce porque el programa la dibujó.
- Los dos modelos corrieron en el mismo N100, uno a la vez, con temperatura 0 y semilla 42. Las preguntas no son iguales: a Gemma se le pide el centro del disco como {"x", "y"}; a Qwen, su recuadro, que es como está entrenado para ubicar objetos. A Gemma sólo se le probó una pregunta: con otra quizá le iría mejor.
- La escala de Qwen (1,036×784) sale de los tokens de imagen que reporta Ollama, no se ajustó para que cuadrara; con ella, los cuadros limpios quedan a 1.4 px o menos.
- Los modelos vieron cuatro cuadros por caso porque cada uno tarda minutos; el ojo de 2001 corrió 20, pero todo lo de esta página compara los mismos cuatro. Las imágenes de aquí son WebP con pérdida, para que pesen poco; los tres ojos vieron el cuadro original, sin pérdida.
Todo lo de esta página sale de los archivos que produjeron los equipos: las imágenes, la posición real, lo que contestó cada ojo y lo que tardó. Lo único escrito a mano son los textos que lo explican.
El código, tal como corrió en el N100 y la Raspberry Pi 5, y todas las respuestas de los tres ojos están en GitHub con licencia MIT; con ellos, comparar.py da exactamente la misma comparación.