空中视觉语言导航 · arXiv:2610.21450

X-Fly 在整块执行的空中视觉语言导航中,学会到达与停止

Ruibin Ju*Ruifeng CaiMin XuLin Wang

ARIDGE · XPENG

整块执行 8 步控制,将每个航点的模型推理时间从 195 ms 降至 42 ms,却让策略进入专家示范覆盖不足的决策状态。X-Fly 分三阶段训练:多域行为克隆、在学习者访问锚点上的 Recovery DAgger,以及对整块控制与 STOP 的 Flow-GRPO。

示意图,非实验数据。策略在每个决策锚点 (◇) 一次输出 8 步控制指令(刻度)。整块执行的 BC 逐渐漂移,穿过目标区域却不停,继续往前飞。Recovery 训练让每个 chunk 都朝专家后续路径收回,并在区域内停下。
SR, test-seen
74.18%
表 1,第 6 页 · k = 8
SR, test-unseen
51.73%
表 1,第 6 页 · k = 8
每航点模型推理时间
195 → 42ms
§4.1,第 5 页 · k = 1 → k = 8

讲解动画 · 57 秒

一分钟看懂 X-Fly

由 HTML 与 JavaScript 在浏览器中实时渲染,无声音,画面文字为英文。点击可暂停。画面中的每个数字都来自论文。

全屏打开

闭环演示 · test-unseen

未见过的 SmallCity 航线,每次决策执行 8 步控制

以下展示未参与训练的 UE SmallCity 测试集中的 6 条航线。左:专家的第一人称视角。中:X-Fly 自己的视角,叠加了当前 8 步控制块(绿色为已执行,青色为待执行)。右:专家 (GT) 与策略 (PRED) 轨迹的俯视对比。

定性示例:选取实际飞行路径超过 30 m 的成功 episode,由开发过程中的一个 Flow-GRPO checkpoint 渲染,对平滑后的停止概率应用固定阈值,决定何时停止。它们用于展示行为;本页的基准评测结果均来自论文的评测协议(表 1)。

问题 · 整块执行的专家数据覆盖缺口

两次“看”之间飞 8 步很省算力,却带来控制与停止两类缺口

基于大型视觉语言模型的空中智能体,每次查询都很昂贵。动作块策略每次查询预测多个未来控制,但 DreamFly 等智能体只执行第一个控制就重新查询。整块执行能把推理开销摊到整块控制上:对 X-Fly 而言,每个已执行航点的模型推理时间从 195 ms 降至 42 ms。代价是飞行器要连飞 8 步,新的视觉反馈才能纠正它。

策略下一次被查询的状态,即决策锚点,会偏离专家轨迹。纯专家数据对这些学习者访问到的锚点覆盖很差,体现在两方面:没有任何专家 chunk 从偏离航线的学习者位姿出发、把它带回航线,这是控制缺口;STOP 正样本只来自专家的终点窗口,而不是学习者自己首次进入成功区域的那个锚点,这是终止缺口。两者合起来就是整块执行的专家数据覆盖缺口(§3.1,第 2 页)。

在 test-seen 上,把 BC 从单步执行改为整块执行,SR 从 46.57% 跌到 16.45%,而导航失败几乎不变。到达目标,不等于在目标处停下。

洞察

在学习者自己的决策锚点上,专家数据缺少一个把它带回航线的 chunk,也缺少一个告诉它该停的标签。在学习者真正所在的位置补上这两样,再利用同一任务下的闭环执行结果,学习何时停止。

转述自 §1 与 §3.1,第 1–2 页

方法 · 分阶段训练框架

同一个策略骨干,分三个阶段训练

每个阶段训练的都是同一组模块:查询组、融合层、flow 控制器和 STOP 头,合计约 45M 参数。Qwen3.5-4B VLM 及其视觉塔全程冻结,每个阶段都从上一阶段的策略开始。

  1. 1

    多域行为克隆

    在 OpenFly 的 UE、3DGS 与 AirSim 三个域共 849,106 个有效决策窗口上训练 rectified-flow 控制器与 STOP 头,共 10 个 epoch。仅在专家轨迹终点的窗口对 STOP 进行监督。

    §3.2,第 3 页 · 式 1 · 表 2,第 10 页

  2. 2

    Recovery DAgger

    学习者在训练场景中用部署时的整块执行器飞行。它访问的每个锚点都被标上一个平滑 chunk,回到专家的后续路段;第一个进入成功区域的锚点标为 STOP。共三轮,每轮从上一轮热启动,recovery 与 BC 窗口按 1:1 混合。

    §3.3,第 3 页 · 式 2

  3. 3

    Flow-GRPO

    每次更新在 48 个 BigCity 任务上各跑 8 次闭环尝试:6 次自由尝试,2 次 STOP-override 尝试。对自由尝试使用带 KL 正则项的策略梯度更新,同时优化整块控制与 Bernoulli STOP;override 尝试额外提供经结果验证的停止样本对。共 3000 次更新。

    §3.4,第 4–5 页 · 附录 A.5,第 11 页

策略骨干

图 3(第 4 页)的交互重绘;点击模块查看说明(§3.2 与附录 A.2)。耗时数据见 §4.1,第 5 页。

阶段 2 · 在学习者访问的锚点上做 Recovery DAgger

从无人机当前位置出发、在前方回到航线的标签

标签必须遵循示范的先后顺序。单调路线游标 ct 在每次采集的决策中按实际执行的控制数前进,而不是沿参考路线向前搜索匹配点。它选出专家位姿 p*ct,学习者相对该位姿的偏移 dt 按 smoothstep 衰减:

恢复目标轨迹从学习者当前位姿出发,位置偏移按两端斜率均为零的曲线衰减,并在一个 chunk 结束时接入专家后续路段。偏航角偏移采用同样的衰减方式,并取最短有符号角差。Recovery 目标只在训练时构造,部署时不增加任何计算。

图中灰色的学习者以整块方式飞行,逐渐偏离航线。它访问的每个锚点都有自己的标签:从学习者位置出发,在一个 chunk 之后回到专家航线;第一个进入区域的锚点则标为 STOP。由于游标只会向前,即使航线自身相互靠近,标签也不会吸附到已经飞过的路段。

采集时禁用 STOP,并在第一个进入 20 m 成功区域的锚点处截断,该锚点标为 STOP 并配悬停目标。截断也去掉了到达之后、标签会指向后方的锚点。于是 Recovery 在学习者自己的到达锚点上补充了 STOP 正样本(共 8,404 个),与 BC 使用的专家终点窗口互补。

§3.3,第 3 页 · 式 2 · 附录 A.4,第 11 页

阶段 3 · 对整块控制与 STOP 做 Flow-GRPO

在平滑模态中探索,在同一任务内比较尝试

策略梯度更新需要似然,而确定性的 flow ODE 没有似然。训练时 X-Fly 把 6 步 Euler 中的最后 3 步改为随机。噪声放在低频时间基上,采样出的 chunk 依然平滑;一小部分补空间噪声让协方差保持满秩,因此每次转移在整个 8 × 4 chunk 上都有闭式对数密度。部署时仍使用确定性的 6 步求解器。

控制与 STOP 共用同一优势值

控制项为尾部随机去噪步 s ∈ {3, 4, 5} 的转移打分;STOP 项是训练温度 1.5 下所采样 STOP 或 CONTINUE 的 Bernoulli 对数概率。两个 KL 项均以 β = 0.01 的权重约束当前策略接近冻结的初始策略。自由尝试往往在相近的决策步停止,因此每组有两次尝试会把前 n ∈ {1, 2, 3} 次采样到的 STOP 改为继续飞。它们的回报参与组内统计,但其决策不接收策略梯度;它们提供经结果验证的 STOP 样本对,用于权重 0.5 的 margin-ranking 与 BCE 损失。STOP 从第二次决策起才合法,STOP 之后的决策不再参与回报归因。

§3.4,第 4–5 页 · 式 3–6 · 附录 A.5,第 11–12 页

实验证据

OpenFly test-seen 与 test-unseen 上的结果

评测协议。使用 DreamFly 处理后的 OpenFly 划分:test-seen 含 1,392 条轨迹(UE BigCity 与 6 个 AirSim 城市),test-unseen 含 404 条(留出的 UE SmallCity)。最终位置距目标 20 m 以内即为成功。所有 X-Fly 行使用同一规则:单位温度的 STOP ~ Bernoulli(σ(ℓ))、128 步控制上限,指标在首次停止分布上精确求期望。已有方法的行是其已发表结果,使用各自的原生停止策略,因此 X-Fly 行之间的比较才是严格对齐的。k 为每次融合策略决策执行的控制数。差值单位为百分点 (pp)。

§4.1,第 5 页 · 表 1 标题,第 6 页 · 附录 A.6,第 12 页

    基准对比

    来源:表 1,第 6 页。按论文顺序列出全部 12 行,柱条从 0 起。

    各阶段在 k = 1 与 k = 8 下的增益

    只含对齐的 X-Fly 行:同一策略骨干、同一评测协议。

    来源:表 1,第 6 页;§4.3,第 5–6 页。Flow-GRPO 只在 k = 8 下训练和评测。

    各阶段修复了什么

    在与表 1 相同的轨迹上,每个 episode 按首次停止结果归入六个互斥类别之一(2 类成功、4 类失败);各类期望占比合计 100%。

    来源:表 3,第 13 页,即图 4(第 7 页)的数据;判定规则见附录 C。成功(未 STOP):控制预算耗尽时恰在区域内。过早 / 过晚:在首个区域内锚点之前 / 之后、于区域外 STOP。未停止:到达过区域,但从未停止,最终在区域外。导航失败:即使禁用 STOP,也没有锚点进入区域。

    Flow-GRPO:Recovery 初始化与 BC 初始化对比

    源域验证曲线,每 20 次更新一个原始数值。协议与表 1 不同:384 条不参与 Flow-GRPO 更新的 BigCity 航线、固定种子、每条航线一次 STOP 采样。两条曲线仅供相互比较,不与表 1 横向比较。

    来源:§4.4,第 7 页,及图 5(第 8 页)的数据。BC 初始化的训练因 OSR 与 NE 持续变差,在 680 次更新时停止。因渲染器故障中断的验证点,事后用保存的 checkpoint 以相同航线与种子补评(附录 A.7,第 12 页)。

    局限

    适时停止仍是主要瓶颈

    禁用 STOP 时,最终策略在 93.41% 的 test-seen 与 88.61% 的 test-unseen episode 中访问到了区域内锚点,但只有 74.18% 与 51.73% 转化为成功。在 test-unseen 上,密集到达率只比锚点到达率高 0.75 个百分点,因此与 SR 之间剩下的差距主要在于:策略确实到过的锚点上,停得不是时候。

    Flow-GRPO 让停止整体后移:过晚停止在 test-seen 上升至 9.89%,在 test-unseen 上升至 15.84%;在 test-seen 上已略多于过早停止。

    每个训练配置只用了一个训练种子,因此这些结果没有衡量训练种子带来的方差。OpenFly 不包含真实的飞行器动力学、传感噪声与运行安全约束,迁移到真实平台需要另行验证。

    §5,第 7 页 · §4.3,第 6 页

    团队 · 论文 · 引用

    贡献者

    指导 · Advisor

    • Lin Wang

    核心贡献者 · Core Contributor

    • Ruibin Ju*

    贡献者 · Contributors

    • Ruifeng Cai
    • Min Xu

    ARIDGE · XPENG  ·  *通讯作者: jurb@aridge.com

    引用

    @article{ju2026xfly,
      title   = {X-Fly: Learning to Reach and Stop in Full-Chunk Aerial Vision-Language Navigation},
      author  = {Ju, Ruibin and Cai, Ruifeng and Xu, Min and Wang, Lin},
      journal = {arXiv preprint arXiv:2610.21450},
      year    = {2026},
      url     = {https://arxiv.org/abs/2610.21450}
    }