SatNav: A Scalable Benchmark for Long-Horizon UAV Vision-Language Navigation from Satellite Imagery
Organizations: The Hong Kong University of Science and Technology (Guangzhou) · Low Altitude Space Economy Research Center, International Digital Economy Academy (IDEA) · The Hong Kong University of Science and Technology
Abstract
Urban uncrewed aerial vehicle (UAV) vision-language navigation (VLN) requires agents to follow instructions across extended urban spaces, inherently demanding long-term memory and geospatial grounding. However, scaling existing benchmarks remains difficult because of their reliance on costly reconstructed 3D assets, limiting geographic diversity and episode scale. To address this, we introduce SatNav, a scalable, long-horizon UAV VLN benchmark built from high-resolution satellite imagery. SatNav targets city-level navigation missions and uses satellite crops as approximations of UAV nadir views for visual observations. Through an automated cue-to-episode pipeline, SatNav constructs 118K episodes from 59 scenes across 18 cities, with an average trajectory length of 379 m. To stress-test long-horizon memory and geospatial reasoning, SatNav defines three task families: Boundary, Landmark, and Route, targeting loop progress tracking, landmark-based spatial grounding, and route following with counting cues. Benchmarking classical VLN agents and recent agents based on large vision-language models (LVLMs) on SatNav shows that city-scale navigation remains challenging. We further introduce SwiftVLN, a modular framework with switchable memory components, and conduct systematic memory-design ablations. Finally, satellite-to-UAV transfer experiments show that satellite-trained navigation models can operate on real-flight UAV observations, showing the practical relevance of SatNav. Our project page: https://eku127.github.io/SatNav/
Figures & tables
| Model | Test Seen | Test Unseen | ||||||||
| SR | SPL | OS | NE | Steps | SR | SPL | OS | NE | Steps | |
| Seq2Seq | 2.1 | 2.1 | 31.1 | 180.36 | 53.29 | 1.6 | 1.5 | 29.6 | 219.17 | 58.50 |
| CMA | 9.5 | 9.3 | 44.9 | 323.25 | 94.85 | 7.3 | 7.2 | 43.9 | 363.59 | 99.31 |
| OpenFly | 13.2 | 13.0 | 33.5 | 166.88 | 58.93 | 11.7 | 11.6 | 32.2 | 195.91 | 66.35 |
| OpenFly ∗ | 21.1 | 21.0 | 38.1 | 163.07 | 57.85 | 17.1 | 16.9 | 34.9 | 196.90 | 65.56 |
| NaVILA | 18.1 | 18.0 | 27.6 | 93.05 | 48.08 | 13.0 | 12.7 | 23.7 | 128.88 | 53.71 |
| Memory Design | Test Seen | Test Unseen | ||||||||
| SR | SPL | OS | SR | OS | SR | SPL | OS | SR | OS | |
| Memory necessity | ||||||||||
| SwiftVLN reference | 65.8 | 65.5 | 72.4 | 0.0 | 0.0 | 53.7 | 53.2 | 64.1 | 0.0 | 0.0 |
| Short-term only | 44.5 | 43.8 | 62.8 | -21.3 | -9.6 | 32.4 | 31.5 | 51.4 | -21.3 | -12.7 |
| Short-term sliding window | ||||||||||
| Overlap turns( ) | 68.7 | 64.0 | 81.3 | +2.9 | +8.9 | 56.8 | 53.7 | 70.1 | +3.1 | +6.0 |
| Method | Boundary SR | Landmark SR | Route SR | Overall SR |
| SwiftVLN | 33.3 | 33.3 | 50.0 | 38.9 |
| SwiftVLN w/ adapter | 33.3 | 50.0 | 83.3 | 55.6 |
Appendix figures & tables23 assets
Supplementary material from the paper’s appendix.
Appendix
| City/Region | Scenes | Avg. Area | Episodes | City/Region | Scenes | Avg. Area | Episodes |
| (#) | (km 2 ) | (#) | (#) | (km 2 ) | (#) | ||
| Amsterdam (EU) | 2 | 6.56 | 6,424 | Minneapolis (NA) | 6 | 11.52 | 10,523 |
| Auckland (OC) | 1 | 15.17 | 2,391 | New York (NA) | 5 | 16.42 | 10,519 |
| Berlin (EU) | 5 | 11.58 | 8,942 | Orlando (NA) | 1 | 47.73 | 3,277 |
| Boston (NA) | 5 | 14.14 | 11,954 | Paris (EU) | 5 | 11.55 | 7,892 |
| Brugge (EU) | 1 | 8.75 | 2,845 | Rio de Janeiro (SA) | 1 | 22.24 | 1,975 |
| Scale | Diversity | |||||||
| Dataset | Cov. ( ) | Traj. Sum ( ) | Avg. Len. | Traj. Types | Vocab. | Lex. Div. | ||
| AVDN | 642 | – | 3.1K | 879 | 289 | 2 | 2.2K | 0.267 |
| OpenFly | 258 | 14 | 100K | 9.91K | 99 | 1 | 6.4K | 0.247 |
| AerialVLN | – | 25 | 25.3K | 16.77K | 662 | 1 | 7.0K | 0.246 |
| HUGE-Bench | 6.45 | 4 | 6.2K | 2.56K | 415 | 8 | 346 | 0.087 |
| OpenUAV | – | 22 | 12.1K | 3.10K | 255 | 1 | – | – |
| Stage | Criterion | Purpose |
| Boundary cue extraction | Boundary scale, regularity, interior consistency, and cross-boundary contrast | Retain closed structures that form coherent visible regions and provide clear perimeter-following cues. |
| Landmark cue extraction | Coarse-to-fine visual localization and local-view verification | Retain landmarks that can be localized from satellite crops and associated with nearby decision poses. |
| Route graph construction | Topological validity and visual observability of linear structures | Retain road and waterway segments that are sufficiently visible and can support unambiguous route-following instructions. |
| Trajectory instantiation | Visibility, smoothness, and action-space executability | Remove trajectories whose key cues are outside the local observation, whose turns are ambiguous or visually weak, or whose geometry cannot be followed by the discrete actions. |
| Instruction construction | Cue-trajectory consistency and language validation | Ensure that generated instructions refer only to cues that appear along the executable trajectory and remain semantically consistent after paraphrasing. |
| Way Type | Degree | Local Geometry | Node Category |
| Highway | 1 | – | Road dead end |
| Highway | 2 | – | Waypoint |
| Highway | 3 | T-like | T-shaped intersection |
| Highway | 3 | Y-like | Y-shaped intersection |
| Highway | 4 | X-like | Crossroad |
| Waterway | 1 | – | River dead end |
| Task | Subtype | Audited | Accepted | Rejected | Rejection (%) |
| Boundary | Partial-arc | 155 | 144 | 11 | 7.1 |
| Full-loop | 686 | 650 | 36 | 5.2 | |
| Extended-loop | 159 | 147 | 12 | 7.5 | |
| Total | 1,000 | 941 | 59 | 5.9 | |
| Landmark | One-turn | 813 | 741 | 72 | 8.9 |
| Two-turn | 187 | 170 | 17 | 9.1 |
| Method | Visual Input per Step | Action Output Horizon | Action Format |
| Seq2Seq & CMA | 1 current | 1 step | Categorical Logits |
| NaVILA | 1 current + 7 history | 1 step | Single-word text action |
| UniNaVid | 1 current + all history | 4 steps | Single-word text action |
| StreamVLN | current window + 8 history | 4 steps | Symbolic (e.g., ) |
| OpenFly-Agent | 1 current + 2 history + 16 past actions | 1 step | Single-word text action |
| Configuration | Seq2Seq | CMA |
| Vision Encoder | ResNet50 | ResNet50 |
| Instruction Encoding | GloVe-50d + GRU | GloVe-50d + BiGRU |
| Global Batch Size | 64 | 32 |
| Optimizer | Adam | Adam |
| Weight Decay | 0.0 | 0.0 |
| Peak LR | 3e-4 | 1e-4 |
| Configuration | NaVILA | StreamVLN | UniNaVid | OpenFly-Agent | SwiftVLN |
| Base Model | Llama-3- VILA1.5-8B | LLaVA-Video- 7B-Qwen2 | vicuna-7b- v1.5 | openvla-7b- prismatic | Qwen2.5-VL- 3B-Instruct |
| Vision Encoder | SigLIP | SigLIP | EVA-CLIP ViT | DINOv2 + SigLIP | Qwen2.5-VL ViT |
| LLM Backbone | LLaMA-3-8B | Qwen2-7B | Vicuna-7B | LLaMA-2-7B | Qwen2.5-3B |
| Precision | bf16 | bf16 | bf16 | bf16 | bf16 |
| Fine-tuning Strategy | Full | Full | Frozen Vision | Full | Full |
| #GPUs | 8 | 8 | 8 | 8 | 8 |
| Model | Boundary | Landmark | Route | |||||||||
| SR | OS | NE | Steps | SR | OS | NE | Steps | SR | OS | NE | Steps | |
| Seq2Seq | 2.1 | 78.7 | 65.11 | 45.88 | 0.0 | 0.4 | 238.47 | 55.03 | 4.4 | 12.2 | 243.57 | 59.42 |
| CMA | 12.4 | 92.4 | 63.54 | 80.05 | 0.0 | 2.9 | 789.61 | 159.76 | 13.9 | 32.0 | 214.13 | 59.58 |
| OpenFly | 16.4 | 66.9 | 52.03 | 74.10 | 2.7 | 7.1 | 288.36 | 54.06 | 20.2 | 26.9 | 160.36 | 49.15 |
| OpenFly ∗ | 27.0 | 71.5 | 41.47 | 69.20 | 6.6 | 9.9 | 311.11 | 59.18 | 29.3 | 33.2 | 137.69 | 45.82 |
| NaVILA | 20.8 | 46.4 | 42.85 | 62.00 | 8.1 | 9.3 | 128.96 | 31.67 | 25.2 | 27.1 | 106.80 | 50.51 |
| Base Model | Size | Seen | Unseen | ||||||||
| SR | SPL | OS | NE | Steps | SR | SPL | OS | NE | Steps | ||
| Qwen2.5-VL | 3B | 65.8 | 65.5 | 72.4 | 34.05 | 49.97 | 53.7 | 53.2 | 64.1 | 62.29 | 57.38 |
| Qwen2.5-VL | 7B | 70.2 | 69.8 | 77.4 | 29.97 | 48.18 | 56.6 | 56.2 | 66.2 | 55.33 | 54.62 |
| Qwen3-VL | 2B | 67.5 | 66.7 | 79.5 | 52.64 | 58.13 | 57.0 | 56.3 | 70.3 | 71.94 | 65.84 |
| Qwen3-VL | 8B | 68.3 | 67.6 | 76.7 | 45.12 | 52.16 | 56.0 | 55.3 | 64.9 | 69.79 | 58.55 |
| Method | Image perturbation | SR | SPL | OS | NE |
| SwiftVLN | None | 34.0 | 33.5 | 47.9 | 103.26 |
| SwiftVLN w/ adapter | None | 43.6 | 42.3 | 59.6 | 62.33 |
| SwiftVLN | Exposure + Jitter | 28.7 | 27.8 | 44.7 | 121.02 |
| SwiftVLN w/ adapter | Exposure + Jitter | 39.4 | 38.1 | 56.4 | 70.64 |
| Factor | Setting | Train time | Eval time | Seen SR | Unseen SR |
| Baseline | Default | 4:19:45 | 2:24:12 | 65.8 | 53.7 |
| Satellite resolution | Zoom Level 17 | 4:24:19 | 2:29:25 | 64.9 | 52.8 |
| Zoom Level 15 | 4:12:06 | 2:23:27 | 62.4 | 52.5 | |
| Crop size | px | 2:37:35 | 2:37:06 | 65.0 | 52.0 |
| px | 1:33:34 | 2:50:05 | 51.1 | 40.8 | |
| Spatial coverage | m | 4:16:34 | 3:02:32 | 56.4 | 46.3 |