# Differences Between lingbot-map-long, lingbot-map, and lingbot-map-stage1 Checkpoints

> Understand the differences between lingbot-map-long, lingbot-map, and lingbot-map-stage1 checkpoints. Discover their sequence length optimization, memory use, and ideal applications for your next project.

- Repository: [Robbyant/lingbot-map](https://github.com/Robbyant/lingbot-map)
- Tags: deep-dive
- Published: 2026-06-29

---

**The three LingBot-Map checkpoints differ primarily in sequence length optimization, memory utilization, and intended use cases, with `lingbot-map-long` engineered for 10,000+ frame sequences, `lingbot-map` serving as a balanced general-purpose option, and `lingbot-map-stage1` providing stage-1 pre-training weights for research and fine-tuning.**

The LingBot-Map repository ships three distinct model checkpoints, each targeting a specific deployment scenario within video reconstruction pipelines. Understanding the architectural and functional differences between `lingbot-map-long`, `lingbot-map`, and `lingbot-map-stage1` ensures you select the appropriate variant for your sequence length and computational constraints. These checkpoints share the same underlying codebase but vary in trained weights, KV-cache configurations, and inference capabilities as documented in the repository's [`README.md`](https://github.com/Robbyant/lingbot-map/blob/main/README.md) Model Download section.

## Checkpoint Overview and Selection Criteria

Selecting the correct checkpoint depends on your expected sequence length and whether you require end-user inference or research flexibility.

### lingbot-map-long: Extended Sequence Support

The **`lingbot-map-long`** checkpoint is optimized for **very long video sequences** exceeding 10,000 frames and large-scale outdoor scenes such as city-scale reconstructions. This variant implements a larger KV-cache and enhanced drift-correction mechanisms within the full **Geometric Context Transformer** architecture, preserving anchor context, pose-reference windows, and trajectory memory without sacrificing inference speed. In [`lingbot_map/models/gct_stream_window.py`](https://github.com/Robbyant/lingbot-map/blob/main/lingbot_map/models/gct_stream_window.py), the windowed inference implementation supports this checkpoint's ability to maintain approximately **20 FPS** while handling extended sequences, making it the recommended default for production deployments involving long runs.

### lingbot-map: General-Purpose Balance

The **`lingbot-map`** checkpoint provides a **balanced** configuration ideal for short to medium-length video streams ranging from a few hundred to a few thousand frames. This variant shares the same architecture as the long checkpoint but utilizes a more modest KV-cache size (limited to approximately **320 frames**), making it marginally lighter on GPU memory while delivering superior per-frame pose accuracy for shorter sequences. According to the model table in [`README.md`](https://github.com/Robbyant/lingbot-map/blob/main/README.md), this checkpoint represents the optimal choice when your target scene fits comfortably within the KV-cache limit and you prioritize accuracy over extreme sequence length support.

### lingbot-map-stage1: Research and Pre-training

The **`lingbot-map-stage1`** checkpoint serves as the **stage-1 training artifact** containing weights after the initial pre-training phase of the Vision-Guided Geometric Transformer (VGGT). Unlike the production checkpoints, this variant supports **bidirectional inference** (camera-to-world, `c2w`) and is intended for researchers who need to continue training, experiment with alternative loss functions, or extract intermediate pose encodings. As noted in the repository documentation, this checkpoint is not designed for end-user inference pipelines and requires additional training steps to achieve final model performance.

## Memory and Architecture Differences

The primary architectural distinction between the checkpoints lies in **KV-cache allocation** and **trajectory memory management**. The `lingbot-map-long` checkpoint leverages the full implementation in [`lingbot_map/models/gct_stream_window.py`](https://github.com/Robbyant/lingbot-map/blob/main/lingbot_map/models/gct_stream_window.py) to handle extended sequences without truncation, while the standard `lingbot-map` uses [`lingbot_map/models/gct_stream.py`](https://github.com/Robbyant/lingbot-map/blob/main/lingbot_map/models/gct_stream.py) with constrained memory windows optimized for shorter streams. The stage-1 checkpoint contains the foundational VGGT weights before the final training phase, lacking the refined drift-correction mechanisms present in the production-ready variants.

## Loading Checkpoints in Practice

All three checkpoints integrate into the same inference pipeline and are loaded via the `--model_path` argument in [`demo.py`](https://github.com/Robbyant/lingbot-map/blob/main/demo.py). The script automatically selects the appropriate model class (`GCTStream` or `GCTStreamWindow`) based on the `--mode` flag, decoupling the architectural selection from the specific checkpoint weights.

```python

# Example: loading each checkpoint with the demo script

# 1️⃣ lingbot‑map‑long (default for long sequences)

!python demo.py --model_path /path/to/lingbot-map-long.pt \
                --image_folder example/courthouse --mask_sky

# 2️⃣ lingbot‑map (balanced checkpoint)

!python demo.py --model_path /path/to/lingbot-map.pt \
                --image_folder example/university --mask_sky

# 3️⃣ lingbot‑map‑stage1 (stage‑1 training checkpoint)

!python demo.py --model_path /path/to/lingbot-map-stage1.pt \
                --image_folder example/loop --mask_sky

```

For evaluating the long checkpoint on large-scale outdoor datasets, reference the configuration in [`benchmark/configs/oxford_long.yaml`](https://github.com/Robbyant/lingbot-map/blob/main/benchmark/configs/oxford_long.yaml), which specifies parameters optimized for extended sequence handling.

## Summary

- **Use `lingbot-map-long`** when processing very long sequences (10,000+ frames) or large-scale outdoor scenes requiring maximum drift correction and trajectory memory.
- **Use `lingbot-map`** for general-purpose inference on short to medium sequences (up to ~320 frames) where balanced speed and accuracy are prioritized.
- **Use `lingbot-map-stage1`** for research applications requiring pre-training weights, bidirectional pose encoding, or fine-tuning the Vision-Guided Geometric Transformer.
- All checkpoints load through the same [`demo.py`](https://github.com/Robbyant/lingbot-map/blob/main/demo.py) interface via the `--model_path` parameter, with underlying architecture differences handled automatically by the model classes in `lingbot_map/models/`.

## Frequently Asked Questions

### Which checkpoint should I choose for city-scale reconstruction?

For city-scale reconstruction involving 10,000+ frames, select **`lingbot-map-long`**. This checkpoint implements an expanded KV-cache and enhanced drift-correction mechanisms specifically designed to handle the geometric complexity and extended duration of large outdoor scenes while maintaining real-time performance at approximately 20 FPS.

### Can I use lingbot-map-stage1 for standard inference tasks?

No, **`lingbot-map-stage1`** is not intended for end-user inference. This checkpoint contains stage-1 pre-training weights of the Vision-Guided Geometric Transformer and requires additional training to reach production-level accuracy. It is designed for researchers who need to continue training or extract bidirectional camera-to-world (`c2w`) pose encodings from intermediate model states.

### What is the KV-cache limit for the general-purpose lingbot-map checkpoint?

The **`lingbot-map`** checkpoint operates with a KV-cache limit of approximately **320 frames**, making it suitable for short to medium-length video streams. This constrained memory footprint allows for better per-frame accuracy on shorter sequences while remaining lighter on GPU memory compared to the long-sequence variant.

### How do I switch between checkpoints in the inference pipeline?

You switch checkpoints by passing the appropriate file path to the `--model_path` argument in [`demo.py`](https://github.com/Robbyant/lingbot-map/blob/main/demo.py). The script automatically instantiates the correct model class (`GCTStream` or `GCTStreamWindow`) based on the `--mode` flag, allowing seamless swapping between `lingbot-map`, `lingbot-map-long`, and `lingbot-map-stage1` without modifying the underlying codebase.