LingBot-Map: el modelo open source que reconstruye escenas 3D en tiempo real a partir de vídeo

LingBot-Map

La reconstrucción 3D a partir de vídeo lleva años siendo un problema costoso: normalmente hacía falta procesar toda la secuencia varias veces con técnicas de optimización iterativa antes de obtener un mapa fiable. LingBot-Map cambia ese planteamiento. Es un modelo de fundación 3D feed-forward, publicado en código abierto por el equipo de Robbyant, capaz de reconstruir geometría, estimar cámaras y corregir la deriva (La «deriva» (drift, en inglés) es el error acumulado que se va sumando frame a frame cuando un sistema estima la posición de la cámara a partir de movimiento relativo.) de largo alcance mientras el vídeo se está reproduciendo, en streaming, sin pasadas adicionales.

En este artículo repaso qué es LingBot-Map, cómo funciona su arquitectura, qué rendimiento ofrece frente a otros métodos y cómo instalarlo para probarlo tú mismo. El proyecto es de acceso abierto en GitHub: robbyant/lingbot-map.

Qué es LingBot-Map

LingBot-Map es un Geometric Context Transformer para reconstrucción 3D en streaming. En términos simples: le das una secuencia de imágenes o un vídeo y, frame a frame, el modelo va estimando la pose de la cámara y la geometría de la escena, construyendo un mapa 3D denso sin necesidad de reprocesar todo el vídeo desde el principio cada vez que llega un frame nuevo.

Esto lo diferencia de los enfoques clásicos de SLAM y de los métodos de optimización iterativa (bundle adjustment, NeRF offline, etc.), que suelen requerir múltiples pasadas sobre la secuencia completa para converger. LingBot-Map está pensado desde el diseño para funcionar en tiempo real y sobre secuencias muy largas, incluso de más de 10.000 frames.

Arquitectura: Geometric Context Transformer

El núcleo del sistema es lo que sus autores llaman Geometric Context Transformer (GCT), que unifica en un único framework de streaming tres piezas que normalmente se tratan por separado:

  • Anchor context (contexto de anclaje): fija referencias geométricas estables a lo largo de la secuencia.
  • Pose-reference window (ventana de referencia de pose): mantiene un contexto reciente de posiciones de cámara para estimar la pose del frame actual con precisión.
  • Trajectory memory (memoria de trayectoria): corrige la deriva acumulada (drift) en secuencias largas, un problema clásico de cualquier sistema de odometría visual o SLAM.

Gracias a esta combinación, el modelo hace coordinate grounding (anclaje de coordenadas), extrae señales geométricas densas y corrige la deriva de largo alcance dentro del mismo pase hacia adelante, sin optimización posterior.

A nivel de inferencia, LingBot-Map usa una arquitectura feed-forward con paged KV cache attention (a través de FlashInfer), lo que le permite mantener una inferencia estable en torno a 20 FPS a resolución 518×378 incluso en secuencias que superan los 10.000 frames. El proyecto se apoya además en trabajos previos como VGGT y DINOv2.

Rendimiento y benchmarks

Según los propios autores, LingBot-Map obtiene resultados superiores tanto frente a otros métodos de streaming como frente a enfoques de optimización iterativa, evaluado en un conjunto amplio y diverso de datasets de referencia:

  • KITTI
  • Oxford Spires
  • VBR
  • Droid-W
  • TUM-D
  • 7-Scenes
  • ETH3D
  • Tanks and Temples
  • NRGBD

El repositorio incluye los scripts de evaluación para KITTI y Oxford Spires en la carpeta benchmark/, junto con un script de preprocesado (preprocess/oxford.py) para preparar los datos de Oxford Spires antes de evaluar.

Los detalles metodológicos completos, con comparativas cuantitativas frente a otros métodos, están en el paper: «Geometric Context Transformer for Streaming 3D Reconstruction» (Chen et al.).

Modelos disponibles

El equipo de Robbyant ha publicado tres checkpoints, todos disponibles en Hugging Face y ModelScope:

ModeloDescripción
lingbot-map-longOptimizado para secuencias largas y escenas a gran escala.
lingbot-mapCheckpoint equilibrado, el usado en el paper, en el benchmark y en la demo offline. Buen compromiso entre secuencias cortas y largas.
lingbot-map-stage1Checkpoint de la primera etapa de entrenamiento; puede cargarse en el modelo VGGT para inferencia bidireccional (c2w).

Los pesos están disponibles en Hugging Face (robbyant/lingbot-map) y en ModelScope. Según el changelog del repositorio, el equipo está entrenando un modelo aún más potente compatible con secuencias más largas.

Cómo instalar y probar LingBot-Map

La instalación se apoya en conda y PyTorch con CUDA 12.8. Estos son los pasos, tal y como los documenta el repositorio oficial:

1. Crear el entorno conda

conda create -n lingbot-map python=3.10 -y
conda activate lingbot-map

2. Instalar PyTorch (CUDA 12.8)

pip install torch==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128

3. Instalar LingBot-Map

pip install -e .

4. Instalar FlashInfer (recomendado), que aporta la atención con paged KV cache para una inferencia en streaming eficiente:

pip install --index-url https://pypi.org/simple flashinfer-python

Si no se instala FlashInfer, el modelo cae automáticamente en SDPA (la atención nativa de PyTorch) usando el flag --use_sdpa.

Con el entorno listo y un checkpoint descargado, la demo interactiva se lanza con un solo comando:

python demo.py --model_path /ruta/a/lingbot-map-long.pt \
    --image_folder example/courthouse --mask_sky

Este comando abre un visor interactivo basado en viser en http://localhost:8080, donde se puede navegar la reconstrucción 3D generada en tiempo real. El repositorio incluye cuatro escenas de ejemplo listas para usar: courthouse, university, loop (con cierre de bucle) y oxford (escena exterior a gran escala).

Funciones adicionales: secuencias largas, sky masking y renderizado offline

Más allá de la demo básica, LingBot-Map incluye varias funciones pensadas para uso real:

  • Keyframe interval: el flag --keyframe_interval reduce el consumo de memoria de la KV cache guardando solo uno de cada N frames como keyframe, algo necesario porque el modelo se entrena con RoPE de vídeo sobre 320 vistas.
  • Inferencia por ventanas (windowed): para secuencias de más de 3.000 frames, el modo --mode windowed con --window_size y --overlap_keyframes evita el colapso de pose en vídeos muy largos.
  • Sky masking: usa un modelo ONNX de segmentación de cielo para filtrar puntos del cielo en escenas exteriores y mejorar la calidad visual de la nube de puntos resultante.
  • Pipeline de renderizado offline: demo_render/batch_demo.py permite procesar vídeos muy largos (el repositorio muestra un ejemplo de ~25.000 frames, 13 minutos de recorrido interior) y generar un vídeo MP4 con el flythrough de la nube de puntos, con trayectorias de cámara configurables por YAML (modos follow, birdeye, static y pivot).

Casos de uso

Por su diseño en streaming y su capacidad de procesar secuencias muy largas, LingBot-Map encaja especialmente bien en escenarios como:

  • Robótica y navegación autónoma, donde se necesita un mapa 3D actualizado mientras el robot se mueve, sin esperar a procesar toda la sesión.
  • Reconstrucción de espacios interiores y exteriores a partir de vídeo grabado con cámara de mano o drone.
  • Validación y reconstrucción de vídeos generados por modelos de mundo (el propio repositorio muestra ejemplos con vídeos generados por «LingBot-World»).
  • Investigación en visión por computador y SLAM, como base o punto de comparación frente a otros métodos de reconstrucción 3D.

Licencia y créditos

LingBot-Map se distribuye bajo licencia Apache 2.0, lo que permite un uso bastante flexible, incluido el comercial, respetando los términos de la licencia. El proyecto reconoce explícitamente su deuda con VGGT, DINOv2 y FlashInfer como bases sobre las que se construye.

Si usas el modelo en un trabajo académico, los autores piden citar el paper correspondiente:

@article{chen2026geometric,
  title={Geometric Context Transformer for Streaming 3D Reconstruction},
  author={Chen, Lin-Zhuo and Gao, Jian and Chen, Yihang and Cheng, Ka Leong and Sun, Yipengjing and Hu, Liangxiao and Xue, Nan and Zhu, Xing and Shen, Yujun and Yao, Yao and Xu, Yinghao},
  journal={arXiv preprint arXiv:2604.14141},
  year={2026}
}

Preguntas frecuentes sobre LingBot-Map

¿Qué necesito para ejecutar LingBot-Map?

Una GPU con soporte CUDA (el proyecto recomienda CUDA 12.8), Python 3.10 y, opcionalmente, FlashInfer para aprovechar el paged KV cache y obtener el mejor rendimiento en streaming.

¿LingBot-Map funciona en secuencias muy largas?

Sí. Con --keyframe_interval y el modo --mode windowed puede procesar secuencias de miles de frames; el ejemplo oficial del pipeline de renderizado offline llega a las 25.000 frames (13 minutos de vídeo).

¿Es gratuito y de código abierto?

Sí, el código se publica bajo licencia Apache 2.0 en GitHub, y los pesos de los modelos están disponibles públicamente en Hugging Face y ModelScope.

¿Dónde puedo ver el código y descargar los modelos?

El repositorio está en github.com/robbyant/lingbot-map, los pesos en Hugging Face y el paper en arXiv.

LingBot-Map propone una forma distinta de abordar la reconstrucción 3D: en lugar de optimizar toda la secuencia a posteriori, integra anclaje geométrico, referencia de pose y corrección de deriva en un único modelo feed-forward capaz de funcionar en streaming y en tiempo real. Es un proyecto interesante tanto para quien trabaja en robótica y SLAM como para quien simplemente quiere experimentar con reconstrucción 3D a partir de sus propios vídeos. Si quieres probarlo, el repositorio de GitHub incluye escenas de ejemplo listas para usar en cuanto tengas el entorno instalado.

Comentarios
advertise width me