无人机只靠卫星俯拍图认路,SatNav 造出跨 18 城的导航评测基准

为什么到了 2026 年,还要再造一个无人机导航基准?

一架无人机悬在剑桥上空 300 米。指令是「沿着河飞,在第三座桥左转,到体育场上方停下」。它没有地图,没有预设航线,也没有激光雷达。它唯一能看见的,是一张从正上方俯拍下来的卫星照片,被裁成一小块塞进它的视野。整段航程里,它从没看清过一栋楼有多高,也没看清过哪面墙是什么材质,它认路靠的是河道走向、路网分叉和区域轮廓,而这些从正上方看已经清清楚楚。这个画面本身就回答了 SatNav 为什么要用卫星图当眼睛:无人机机头朝下时看到的本来就是一张俯视图,卫星影像可以就地顶上,另起炉灶去重建一座三维城市纯属多余。

从这只眼睛往回推,问题就落成一笔数据账。要造出足够多的训练与评测数据,最直觉的做法是把一座城市重建一遍三维资产,再让无人机在虚拟城里飞。这件事极贵,过去几年几乎所有无人机导航基准都卡在这一步,而这正是 SatNav 要绕开的成本。它的判断是,城市级导航的命运由路网走向、区域轮廓这类大尺度结构决定。既然不必管某栋楼有多高、墙是什么材质,那就不必重建三维,直接用卫星影像加 OpenStreetMap 标注即可。省掉三维资产,就是 SatNav 给出的答案。

这笔账还会被长航程继续放大,而放大的方式恰好再次说明卫星图为什么非用不可。所谓长航程导航,难点不在指令有多长。一条指令可能只有四十来个词,但无人机要飞几百米、做上百次前进与转向决策。每转错一次 15 度,误差就攒一点,攒到几百米外,它可能已经漂到隔壁街区。步数多、状态空间大、误差还会一路累积,意味着模型得在大量不同城市、不同路网里反复练,才可能学会把偏差一次次拉回来。城市越多、轨迹越长,用三维资产铺出来的数据就越买不起。于是省掉三维重建这件事,从省钱升级成了这条基准到底能不能训得动大模型的前置条件。说到底,能不能摆脱三维资产的成本,决定了这场长航程实验能不能成立。

早期工作分两条路走,两条都被成本锁死。AerialVLN 用虚拟引擎合成 25 座城市,请持证飞手飞了 8,446 条路径,人类成功率 80.8%,而当时最好的模型不到 5% AerialVLN。这个巨大的人机差距说明任务本身合理,但它终究是合成场景,换一座城市就得重新造资产。CityNav 更进一步,用真实的三维点云扫描建出 Cambridge 与 Birmingham 两座城,共 32,637 条轨迹、4.65 平方公里 CityNav。成绩扎实,作者却在结论里承认,城市数量受限于三维扫描成本。每多一座城市,就要重扫一遍、重建一遍。

图注:CityNav 的 CityFlight 仿真界面,左侧是三维点云场景与无人机模型,右侧是同步的 OpenStreetMap 与城市卫星俯视图,标注了起点与目标点。它直观呈现了真实三维资产路线的代价:每个新城市都要重新扫描并搭建一整套三维资产,地理多样性因此被锁死。CityNav

另一条路是卫星图。AVDN 早在 2022 年就把 xView 卫星影像裁成无人机下视视角,证明这条路能走通,但它只有 3,064 段轨迹,还要靠多轮对话来消歧,规模又小了一个数量级 AVDN。

SatNav 在论文的对比表里,把七个既有无人机基准放在同一口径下衡量。在覆盖面积 813 平方公里、59 个场景、11.85 万段 episode 上,SatNav 排在第一,8 类轨迹类型与 HUGE-Bench 并列最高。作者想说明的其实是一件更朴素的事:规模不是一个可以慢慢优化的小指标,而是决定这类基准能不能真正用来训练和筛选大模型的门槛。

于是 SatNav 押了一个注:如果城市级导航的本质由大尺度地理结构决定,比如路网走向、区域轮廓,而不是精细的三维几何,那么卫星影像加 OpenStreetMap 标注,就足够撑起一个又大又便宜的基准。问题随之而来,卫星图到底是什么样的「眼睛」?

卫星俯拍图,凭什么能当无人机的眼睛?

这个赌注最干净的一句话是:卫星裁片就是无人机下视观测的近似。请注意,它被当成下视观测,而不是上帝视角的全局地图。

卫星照片本身是俯视的,无人机机头朝下看时也是俯视,这是近似成立的基础。区别在于,一张完整卫星图覆盖整座城市,而无人机在任一时刻只看得见正下方一小块,这一块还会随机身转向而旋转。SatNav 用两个操作把这种视角造出来:rotate 与 crop。你可以想象在无人机底部垂直绑一支手电,光斑照到的地面就是它的观测范围。机身一转,光斑跟着转,但它始终只照正下方那一小块,绝不会突然看见整张地图。这也解释了为什么动作空间里只有前进、左转、右转、停四个动作,而不是任意方向自由飞。

那怎么把卫星图变成训练样本?SatNav 造了一条自动流水线,名字叫 cue-to-episode,意思是先找线索,再拼成一整段导航样本。

图注:SatNav 的 episode 生成流水线。左端是卫星影像与 OpenStreetMap 标注对齐后的输入,随后分成三路线索抽取,Boundary 用 OSM 多边形,Landmark 用视觉显著的局部线索,Route 用道路与水道的图结构;线索经过校验后进入轨迹生成,最终落成有线索依据的导航指令并打包成 episode。三类任务共用同一条流水线。SatNav

流水线的左端是两样对齐的东西:卫星影像与 OpenStreetMap 的结构化标注。它们在同一个米制坐标系里叠好后,按任务族抽出三类线索。Boundary 任务拿 OSM 的多边形圈出一块区域边界;Landmark 任务从卫星裁片里挑出视觉上显眼的局部地标;Route 任务把道路和水道抽象成一张图,标出每个路口与路段类型。抽出的线索先过一道校验,只保留视觉清晰、几何稳定的,再用模型写出基础描述。接着为三类任务分别采样候选轨迹,按几何可行性与长度偏好再过滤,刻意保留更长的轨迹,好让任务真正考验长期记忆。最后一步是把线索序列拼成指令,先由模型生成初稿,再改写出不同风格,打包成一条 episode。生成的指令平均 41 个词,词汇表有 4,740 个词,风格在详细、自然、简洁之间变化。

这个近似的边界值得单独说一句。它能不能站得住,取决于一个前提:城市级导航的命运主要由大尺度结构决定。你沿河飞、绕体育场一圈、在第三个路口转弯,这些判断依赖的是路网走向和区域轮廓,而不是某栋楼有多高、墙是什么材质。卫星裁片恰好把这些大尺度结构拍得清清楚楚,代价是丢掉了精细的三维几何。作者也并未宣称这种近似在光照等观测条件剧变下依然稳健——渲染迁移实验中,曝光与抖动扰动会降低导航性能,论文将其列为当前适配方法的局限。

这条流水线的关键价值在复用。三类任务共用同一套流程,想增加一个任务族,边际成本几乎只是重新定义一次线索的抽取规则。规模数字也由此撑开:118,494 段 episode,59 个场景,18 座城市横跨五大洲,平均轨迹长 379 米,中位数 340 米 SatNav。官方项目页把这组数字做成了一目了然的展示:118K episodes、59 scenes、18 cities、3 task families SatNav 项目页。

图注:SatNav 系统总览。上部是 Boundary、Landmark、Route 三族任务的示意与实例,能看到 partial-arc、extended-loop、full-loop,one-turn、two-turn,以及 road、waterway、hybrid 这些子类型标签;下部展示 agent 收到指令与 rotate-and-crop 生成的卫星裁片,预测并执行动作的端到端流程。图中是卫星裁片视角,不是真实无人机飞行截图。SatNav

规模问题解决了,可这条流水线造出来的三类任务,究竟在考什么能力?

Boundary、Landmark、Route:三类长路线分别在考什么?

先破一个误解。SatNav 考的不是「认不认得地标」。它考的是在几百米的长路线上反复重新定位,把累积的误差一次次拉回来。三类任务各自压住长程能力的一个侧面。

任务族线索来源子类型考什么
BoundaryOSM 多边形圈出的区域边界partial-arc / full-loop / extended-loop沿环线多次到访,追踪自己走到哪一段,并判断何时该停
Landmark卫星裁片里视觉显著的局部地标one-turn / two-turn用地标在视野中的方位锚定转向,做相对空间推理
Route道路与水道的图结构road / waterway / hybrid沿路网跟随「第 N 个路口左转」这类计数线索做拓扑决策

三类任务占比分别是 25.5%、38.1%、36.3%。动作与评测协议则刻意做得极简,把难度全压在长程上。动作只有四个离散值:前进 10 米、左右各转 15 度、停下。评测指标沿用视觉语言导航的惯例,但每个数字都在回答一个具体问题。

指标含义
SR成功率,停在目标附近就算成功,一般阈值 10 米,Landmark 放宽到 30 米
SPL成功率再乘上路径效率,走冤枉路会拉低它
OS有没有在任意一步进入过目标半径,不看是否停下
NE导航误差,单位米,衡量最后离目标多远

这里有一个值得记住的现象:OS 通常明显高于 SR。意思是模型经常已经路过目标附近,却没有停下来。它知道大致在哪,却拿不准「就是现在」。这个停不下来的毛病从 AerialVLN 时代一直延续到 SatNav,是长程导航最顽固的共性短板。它也直接引出了下一个问题:到底该拿什么样的模型来考这三类任务?

拿什么模型来考:从古典基线到可切换记忆的 SwiftVLN

SatNav 上的参赛选手分两代。古典一代是 Seq2Seq 和 CMA,它们靠循环网络加跨模态注意力做决策,是无人机视觉语言导航的黄金基线,在 SatNav 上成功率只有个位数百分点。新一代称为 LVLM agent,核心是让一个能同时吃图像和文本的多模态大模型直接吐动作。

这条线的源头是 NaVid,第一个用纯 RGB 视频流直接输出导航动作的模型,不需要里程计、深度或地图 NaVid。它之后分出了两支。Uni-NaVid 把同一套范式扩到多种导航任务统一,用在线 token 合并把视觉 token 压到模型能承受的量级 Uni-NaVid。StreamVLN 则专攻在线低延迟,用固定大小滑窗 KV cache 加慢更新的三维体素剪枝来管理长视频上下文 StreamVLN。在 SatNav 上,StreamVLN 微调版是最强基线,Test Seen 成功率 67.3%,Test Unseen 58.4%;Uni-NaVid 微调版次之,49.7% 与 36.7%。这些数字都出自 SatNav 论文的评测表。

作者还自己搭了一个参考模型 SwiftVLN,用来做记忆机制的对照实验。它的设计思路是滑动对话窗口加长期视觉记忆。

图注:SwiftVLN 框架示意。三类输入分别是长期历史帧(橙色)、短期滑动窗口帧(绿色)与自然语言指令(蓝色)。长期帧经过 Memory Module 处理,短期帧经过 Vision Encoder 编码,指令经过 Tokenizer 分词,三路 token 序列汇入大语言模型,输出导航动作序列。它展示了「可切换记忆模块」在框架中的位置。SatNav 项目页

SwiftVLN 真正的贡献不在某个记忆技巧,而在把记忆设计拆成了可替换、可对比的开关。长期记忆一侧挂了三组模块,想验证哪个想法有用,换上一个开关跑一遍即可。

三组开关各管一件事。History Sampling 决定长期历史帧怎么挑,可以均匀取、随机取,或偏向近期。Input Augmentation 决定要不要额外喂入线索,比如把第一帧当作视觉锚点,或给每帧补上相对位姿编码。Memory Compression 决定长期记忆怎么压,有人尝试构图式的地图记忆,也有人把 token 聚类成固定容量。同一套骨架换来换去,就能把「记忆到底重不重要」变成一个可测量的实验。它要回答的下一个问题非常直接:长期记忆一旦抽掉,成绩会掉多少?

顺带说一句,StreamVLN 和 SwiftVLN 代表了两种不同的记忆组织方式。StreamVLN 按时间分层,把上下文切成最近的窗口与更久远的压缩记忆,越旧的帧压得越狠。SwiftVLN 按功能分层,长期视觉记忆、短期对话窗口、语言指令各走各的路,记忆模块还能整体替换。两种思路谈不上绝对高下,但功能分法更适合做消融,因为它让「换掉一块记忆会发生什么」变成一次干净的对照实验。

长程记忆到底有多关键:读一遍消融实验

答案掉得让人心里一紧。SwiftVLN 的参考配置在 Test Seen 上成功率 65.8%、Test Unseen 53.7%,而且导航误差是全场最低的。一旦只保留短期记忆,把长期记忆整个撤掉,两个 split 的成功率都直降 21.3 个百分点。也就是说,模型手里的最近几帧完全不足以撑起一次几百米的长航程。

记忆配置成功率变化(Seen / Unseen)
参考配置,完整长期记忆65.8 / 53.7(绝对成功率)
只保留短期记忆双向 -21.3
滑窗重叠设为 4+5.5 / +6.6
历史帧随机采样-13.8 / -12.6
STC 分段聚类压缩+2.5 / +0.8
Map Memory 构图式压缩-5.9 / -5.0

这张表里还藏着几条更细的经验。滑窗之间留重叠能明显涨分,重叠设为 4 时 Unseen 成功率提升 6.6 个百分点,OS 口径甚至涨 7.4。这说明交界处的帧一旦丢失,模型就会断片。历史帧如果随机采样,成绩反而暴跌十来个点,规律性地挑帧比随机挑重要得多。而在三档长期记忆压缩里,只有 STC 分段聚类是正向的,构图式的 Map Memory 反而退步,作者把原因归结为地图表示与原始观测复用同一套视觉编码器,两边的需求互相妥协。

长程记忆的设计并不只有 SwiftVLN 一种答案。另一条路线把记忆分得更细:短期记忆用一个熵最小化的池化操作把旧观测模糊化,既不留下每条精确记录,也不粗暴丢弃;长期记忆则从数据集里检索最相关的历史观测与动作,把它们加权进当前决策 LHPR-VLN。

图注:LHPR-VLN 的 MGDM 框架。左侧是链式思考反馈模块,中间是短期记忆模块,按时间累积并在达到容量时触发熵最小化的池化模糊,右侧是长期记忆模块,从数据集中检索相关的观测与动作对,加权到语言模型的决策上。它代表与 SwiftVLN 平行的另一种长程记忆设计思路。LHPR-VLN

两条路线一个按功能分层,一个按时间与检索分层,但都指向同一个结论:长程表现的分水岭在记忆。不过记忆解决了「记得住」,还没解决「何时该停」。前面提到的 OS 高于 SR 在 SatNav 上依然普遍,模型能走到目标附近,却常常不按 stop。这个从 AerialVLN 时代延续下来的停止难题,是全篇最扎眼的短板。那么,在卫星图上练出来的模型,离开卫星域还能不能活?

在卫星图上训练的模型,真的能飞真无人机吗?

这是整篇论文最有分量、也最需要小心解读的一步。毕竟卫星图是垂直俯拍、光照均匀、没有晃动,而真实无人机传回的画面会抖、会过曝、会有运动模糊。如果模型一上真机就崩,前面所有的规模都只是好看的仿真玩具。

作者做了两组实验。一组是渲染迁移,用真实三维点云与三维高斯溅射从两座城市渲出无人机视角,共 94 段,分成干净画面与加了曝光抖动两类。另一组是真实飞行,用 DJI Matrice 4D 采集下视视频,每族任务 6 段,共 18 段,视频回传到工作站上做在线推理,再把控制指令发回无人机执行。

图注:真实世界运行闭环。无人机端采集下视影像,视频传到本地工作站,由带 Transformer adapter 的 SwiftVLN 做在线推理,再把控制指令回传无人机执行。论文用它说明真实飞行实验的装置,图本身不含具体评测数字。SatNav

关键零件是一个轻量的 Transformer adapter。它的作用是把无人机的视觉 token 对齐到卫星图训练出来的特征空间,相当于在两种视角之间搭一座小桥。加上它之后,整体成功率从 38.9% 提到 55.6%,Route 子集更是从 50.0% 拉到 83.3%。Route 提升最猛的原因也说得通,它靠路网结构导航,而卫星训练恰恰最擅长抓这种大尺度的线状结构。

渲染迁移那一组数字也印证了同一件事。在干净画面下,加 adapter 之前成功率是 34.0%,加了之后 43.6%;换成带曝光与抖动干扰的画面,则从 28.7% 提到 39.4%。这座桥确实在起作用,但作者也承认,它在画面扰动之下的提升空间有限。

数字好看,边界同样要说清楚。18 段真实飞行只是初步的可行性证据,论文自己的用词是「demonstrates the feasibility」,不是大样本的可靠性结论。作者也坦白了三条局限。第一,动作空间固定高度、只有四个离散动作,覆盖不了城市里的蜿蜒小路。第二,训练只在参考轨迹上进行,不支持强化学习微调,模型很少见到「走错一步之后怎么救回来」的场景。第三,真实飞行样本太少,adapter 本身也很简单。

把话收拢成一句判断:SatNav 真正的贡献,是把长航程无人机基准的规模从三维重建成本里解耦了出来。用卫星图和 OpenStreetMap 就能批量造出 18 座城市、近 12 万段任务,这条路已经被证明走得通,真实迁移也证明模型能离开卫星域。但从记忆到停止决策,从两座城的渲染到风雨光照剧变的真实天空,缺口依然清晰。它给后来者留下的,是一个足够大、足够便宜、又足够诚实暴露短板的试验场。

想深入可以读原文:SatNav: A Scalable Benchmark for Long-Horizon UAV Vision-Language Navigation from Satellite Imagery arXiv:2609.31507。

参考文献

无人机只靠卫星俯拍图认路,SatNav 造出跨 18 城的导航评测基准