跳转至

PiLoT: Neural Pixel-to-3D Registration for UAV-based Ego and Target Geo-localization

会议: CVPR 2026
论文: CVF Open Access
代码: 无(项目页 https://nudt-sawlab.github.io/PiLoT/)
领域: 遥感 / 无人机视觉定位 / 3D视觉
关键词: 无人机定位, 像素到3D配准, GNSS拒止, 位姿优化, 目标地理定位

一句话总结

PiLoT 把"无人机自定位 + 任意目标地理定位"统一成「实时视频帧与带地理坐标的 3D 地图做像素到 3D 配准」这一个问题,用双线程引擎 + 百万级合成数据训练的轻量网络 + 神经引导随机梯度优化器(JNGO),在无 GNSS / IMU 的条件下做到 1.37 m 中位误差、Jetson Orin 上 25+ FPS。

研究背景与动机

领域现状:无人机要"知道自己在哪 + 知道看到的东西在哪",主流是解耦的两条流水线——自定位用 VIO(视觉惯性里程计)融合 GNSS,目标定位再额外挂激光测距仪(如 DJI Matrice 4 系列)这类主动传感器。

现有痛点:这套范式有两个硬伤。一是强依赖 GNSS,在信号被干扰 / 拒止的环境里直接失效;二是激光测目标又贵又笨重,而且一次只能测一个点,无法对画面里任意像素做地理定位。即便退一步只看纯视觉,VIO/SLAM 虽然局部平滑,却会在长航时飞行中累积漂移,缺少全局参考。

核心矛盾:无人机定位被"精度 / 鲁棒 / 实时"这个不可能三角卡死——要无漂移精度就得对齐全局地图,要鲁棒就得扛日夜/季节的外观剧变和激进的 6-DoF 机动(帧间位移可达 10 m / 10°,超出常规优化器的收敛盆地),而要实时又被基于学习的稠密匹配器拖垮(机载算力有限)。三者很难同时满足。

本文目标:在没有 GNSS / IMU 的前提下,同时给出每帧无人机的 6-DoF 位姿,以及把查询图任意像素 \(\mathbf{u}=(u,v)^\top\) 映射到真实世界坐标 (lon, lat, alt)。

切入角度:作者主张范式转移——不再堆传感器,而是把自定位和目标定位重写成同一个像素到 3D 配准问题。只要把实时视频流持续配准到全局 3D 地图(如 Google Earth),系统天然就能恢复无人机 6-DoF 位姿,并由位姿 + 深度反推任意像素的地理坐标,两个任务一次解决。

核心 idea:用"视频帧↔带地理坐标 3D 地图的特征空间配准"取代"GNSS+激光"的解耦传感器方案,并为不可能三角的三条边分别设计一个组件(双线程→实时、合成数据→鲁棒泛化、JNGO→抗激进运动的精度)。

方法详解

整体框架

PiLoT 的输入是带地理坐标的 3D 地图 \(M\)、已知内参的单目视频流 \(\{I^q_i\}\),以及第一帧的一个粗位姿先验 \(\tilde{T}_{\text{init}}\);输出是每帧 6-DoF 位姿 \(\hat{T}_i\) 和任意目标像素的 3-DoF 地理坐标。整个系统由两条并行线程驱动:渲染线程用卡尔曼滤波预测一个参考位姿、在该位姿下渲染一张合成参考视图并反投影出一批 3D 地理锚点,打包成参考 bundle;定位线程对每个新来的查询帧抽多尺度特征,再用 JNGO 优化器把查询帧与这批地理锚点在特征空间对齐,求出全局一致的位姿,并把结果回传给渲染线程准备下一帧。

关键在于:自定位的位姿一旦求出,对画面里任意像素投射一条相机射线进 3D 地图、查深度即可得到该像素的地理坐标——目标定位是自定位的"免费副产品",这也是把两个任务统一的根源。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入:单目视频帧 +<br/>地理参考 3D 地图"] --> B["UAV专属特征提取<br/>合成数据训练·轻量网络"]
    A --> C["双线程引擎<br/>渲染线程·KF预测+渲染参考视图<br/>反投影出 3D 地理锚点 B_i"]
    C -->|参考 bundle B_i| D["JNGO 优化器<br/>旋转感知采样→并行精化→运动约束择优"]
    B -->|多尺度特征+不确定度| D
    D --> E["6-DoF 自位姿 T̂"]
    E -->|对任意像素投射射线<br/>查深度| F["目标 3-DoF 地理坐标<br/>(lon, lat, alt)"]
    E -.->|回传位姿,准备下一帧 B_(i+1)| C

关键设计

1. 双线程引擎:把渲染从定位主线程里拆出去,换实时又不漂移

朴素做法是"用上一帧渲染参考视图 → 当前帧做位姿精化"串成一条线,但渲染和优化有强时序依赖,定位引擎必须停下来等渲染完成,形成实时瓶颈。PiLoT 改成解耦的双线程并行架构:渲染线程先用恒速卡尔曼滤波从上一估计 \(\hat{T}_{i-1}\) 预测参考位姿 \(\hat{T}_{i|i-1}\),在该位姿下渲染新参考视图 \((I^r_i, D^r_i)\),并把其中 \(N\) 个深度有效的像素反投影到世界系,得到一组 3D 地理锚点:

\[\mathbf{P}_{i,j}^{W} = \hat{\mathbf{T}}_{i|i-1}\left( D_{i}^{r}(\mathbf{p}^r_{i,j}) \cdot \mathbf{K}^{-1}\mathbf{p}^r_{i,j} \right)\]

再把参考视图、预测位姿和锚点打包为 bundle \(\mathcal{B}_i := (I_i^{r},\, \hat{\mathbf{T}}_{i|i-1}, \{\mathbf{P}_{i,j}^{W}\}_{j=1}^{N})\) 交给定位线程。这样每个查询帧都被"随无人机视角动态更新的地理锚点"约束住——锚点直接挂在全局地图上,所以不会随时间漂移,这是无漂移精度的来源。另一处巧思是一对多策略:面对快速运动,常规思路是围绕上一位姿渲染多张视图扩大搜索域,而 PiLoT 只渲染单张参考锚视图,让一"群"位姿假设都去对这张共享渲染做精化,用极少的渲染成本换到大搜索范围。

2. 百万级合成数据集:用几何监督逼网络学"扎根 3D 结构"的特征,换零样本 sim-to-real

无人机定位需要轻量网络在视角和光照剧变下仍判别力强,但现有无人机数据集要么缺稠密深度和精确位姿这类几何标注,要么城市/视角太单一,撑不起序列化的几何监督。作者自建了一条全自动 AirSim–Cesium–Unreal 仿真管线,在全球真实感地形上模拟无人机轨迹,渲出百万级(1.1M+ RGB-D 对,覆盖 82 个区域、650 km 飞行)合成数据,并导出绝对相机位姿和逐像素深度,全部经重投影校验。三级特征金字塔在 1/4、1/2、1 分辨率上提取(backbone 用 MobileOne-S0,配紧凑 U-Net 解码器,通道宽仅 \(C=32\))。训练用直接对齐范式,端到端联合优化特征提取器和迭代位姿精化,几何损失最小化地理锚点真值投影 \(\mathbf{p}_j^q\) 与估计投影 \(\tilde{\mathbf{p}}_j^q\) 之间的重投影误差:

\[\mathcal{L} = \sum_{j} \rho_B\left( \left\| \mathbf{p}_j^q - \tilde{\mathbf{p}}_j^q \right\|_2^2 \right)\]

其中 \(\rho_B(\cdot)\) 是 Barron 鲁棒损失。因为监督信号是"几何一致性"而非外观,网络被迫学到对光度变化不变、扎根底层 3D 结构的特征,从而只在合成数据上训练就能零样本泛化到真实无人机图像(消融里这一步是地基,见下)。

3. JNGO:神经引导的随机-梯度联合优化器,专治激进机动下的大位移收敛

激进的无人机机动会带来很大的帧间位移,传统纯梯度优化器容易掉进局部极小。JNGO 的思路是把全局探索局部利用捏在一起,分三步走。

其一,旋转感知假设生成:基于"无人机图像的像素位移对旋转远比对平移敏感"这一观察,对俯仰 pitch 和偏航 yaw 这两个运动敏感轴分配更大的采样范围,从各向异性包围盒 \(\mathcal{B}_r = [-\alpha_{\text{pitch}},\alpha_{\text{pitch}}]\times[-\alpha_{\text{yaw}},\alpha_{\text{yaw}}]\) 里均匀采旋转扰动,平移扰动则从卡尔曼预测推出的高斯 \(\delta\mathbf{t}_m\sim\mathcal{N}(\boldsymbol{\mu}_t,\boldsymbol{\Sigma}_t)\) 里小幅采样,一次生成 \(M\) 个位姿假设(测试时 \(M=144\),pitch/yaw 在 \([-11°,11°]\)\(2°\) 步长)。

其二,神经引导并行精化:每个假设 \(\tilde{T}_m\) 在地理锚点上做由粗到细的 Levenberg–Marquardt 优化(CUDA 并行)。在金字塔层 \(\ell\),把假设位姿下查询特征与参考特征的残差

\[\mathbf{r}^{(\ell)}_{j,m} = \mathbf{f}^q_{\ell}\left( \pi\left( \mathbf{K}_{\ell}, \tilde{\mathbf{T}}_{m}^{-1}, \mathbf{P}_j^W \right) \right) - \mathbf{f}^r_{\ell}(p^r_j)\]

\(\pi(\cdot)\) 为针孔投影)按不确定度加权聚成代价 \(\mathcal{C}_{\text{photo}}^{(m,\ell)} = \sum_j \rho\left( w_\ell(j)\cdot\|\mathbf{r}^{(\ell)}_{j,m}\|^2_2 \right)\)\(\rho\) 为 Huber 损失,\(w_\ell(j)\) 是查询/参考不确定度的联合得分),再用 LM 在 \(SE(3)\) 上迭代更新:\((\mathbf{J}^\top\mathbf{W}\mathbf{J}+\lambda\mathbf{I})\Delta\boldsymbol{\xi}=-\mathbf{J}^\top\mathbf{W}\mathbf{r}\)\(\tilde{\mathbf{T}}^{(k+1)}_{m}=\exp(\Delta\boldsymbol{\xi})\cdot\tilde{\mathbf{T}}^{(k)}_{m}\)

其三,运动约束择优:精化后从 \(M\) 个假设里选最优时,除了最终特征代价,再加一项物理运动先验,惩罚偏离卡尔曼预测轨迹 \(\hat{T}_{\text{pred}}\) 的假设:

\[\mathcal{C}_{\text{total}}^{(m)} = \mathcal{C}_{\text{photo}}^{(m,\ell=2)} + \lambda\,\|\log(\hat{\mathbf{T}}_{\text{pred}}^{-1}\tilde{\mathbf{T}}^{'}_{m})^\vee\|_2^2\]

后一项是假设位姿与预测位姿在 \(\mathfrak{se}(3)\) 上的测地距离平方(把相对变换 \(\log(\cdot)^\vee\) 映成 6D twist),最终取总代价最小者 \(m^*=\arg\min_m\mathcal{C}_{\text{total}}^{(m)}\)。"随机采样扩搜索 + 梯度精化收敛 + 运动先验防跳变"三件套合起来,让优化器在 10 m / 10° 的极端帧间位移下仍稳定收敛。

损失函数 / 训练策略

端到端用几何重投影损失(上式 \(\mathcal{L}\)\(N=500\) 个参考锚点),Adam(lr \(=10^{-3}\))训 30 epoch,8 张 RTX 4090。训练时对查询位姿加 5~15 m 平移 / 5~15° 旋转噪声模拟初始化不确定性,数据增强叠加 Fourier 高频噪声和光度抖动(模糊、对比度、高斯噪声、亮度)。

实验关键数据

主实验:自定位(Tab. 2)

共享地图、512 px 输入,中位误差单位 m / °;R@1/3/5 为给定阈值内召回率,Comp. 为完整率,FPS 为定位频率。

数据集 方法 FPS↑ Med m↓ Med °↓ R@1 (m,°)↑ Comp.↑
SynthCity-6 (合成) Render2Loc(LoFTR) 2.0 0.49 0.04 76.5 100.0
SynthCity-6 (合成) Render2Loc(RoMaV2) 0.8 0.47 0.04 77.2 100.0
SynthCity-6 (合成) PiLoT 28.0 0.46 0.03 80.4 100.0
UAVScenes (真实, 零样本) Render2Loc(LoFTR) 2.0 1.62 0.52 23.2 100.0
UAVScenes (真实, 零样本) PiLoT 28.0 1.27 0.47 25.5 100.0
UAVD4L-2yr (真实, 两年时差) Render2Loc(RoMaV2) 0.8 1.05 0.97 43.2 100.0
UAVD4L-2yr (真实, 两年时差) PiLoT 28.0 0.92 0.89 45.8 100.0

PiLoT 在三个数据集上都拿到最低中位误差和最高召回,同时是最快的(28 FPS)。对比之下精度接近的 Render2Loc(LoFTR/RoMaV2) 只有 0.8~2 FPS,慢一两个数量级;快的 Render2Loc(ELoFTR, 20 FPS) 精度又掉。真实数据全是零样本部署、未做任何微调,UAVD4L-2yr 还引入了两年的季节/光照差,PiLoT 仍 SOTA。

目标地理定位(Tab. 3)

R@k 定义为目标 3D 距离误差在 k 米内的比例。

方法 单目标(真实) R@1/3/5 多目标(合成) R@1/3/5
Render2ORB 72.13 / 84.59 / 89.74 79.51 / 91.04 / 93.28
PixLoc 83.37 / 87.29 / 91.85 86.15 / 91.88 / 93.91
Render2Loc 87.62 / 92.60 / 96.25 89.03 / 93.15 / 96.07
PiLoT 90.81 / 94.32 / 96.85 93.74 / 95.56 / 98.19

自定位精度高直接转化成目标定位精度高(目标坐标靠从估计位姿射线投射 + 查深度得到),两类场景都领先。

消融实验(Tab. 4)

Recall(%) @ 1m/1° 在不同初始化噪声预算下:

配置 w/ 3m,3° w/ 5m,5° w/ 10m,10° 说明
现成 backbone 4.2 0.0 0.0 通用特征在无人机域几乎全失败
+ 域专属训练 51.4 43.2 15.2 合成数据训练是地基
+ 旋转感知假设 83.8 78.9 70.6 大噪声下提升最猛
+ 运动正则(完整) 84.3 84.3 84.2 把不同噪声预算下的性能拉平
训练数据 3m,3° 5m,5° 10m,10°
合成(无光照/天气) 63.5 62.4 61.6
仅 MegaDepth 69.9 69.5 68.7
本文合成(含光照/天气) 84.3 84.3 84.2

关键发现

  • 域专属训练是地基:现成 backbone 在无人机域几乎全军覆没(3m,3° 仅 4.2%,更松阈值下归零),换成本文合成数据训练后跳到 51.4%——这一步不做,后面所有组件都无从谈起。
  • 旋转感知假设在大位移下贡献最大:在 10m,10° 这种激进初始化预算下,从 15.2% 一举拉到 70.6%,印证了"无人机像素位移对旋转更敏感、就该往 pitch/yaw 多撒采样"的观察。
  • 运动正则负责"稳":它把 3m/5m/10m 三档预算下的性能从 83.8/78.9/70.6 拉平到 84.3/84.3/84.2,即在最难的大位移档把鲁棒性补齐。
  • 合成数据的光照/天气多样性关键:含光照天气的合成数据(84.3)显著优于真实 MegaDepth(69.9)和无光照天气的合成(63.5),说明跨域 gap 主要靠"多样视觉条件 + 几何监督"来弥合,而非单纯堆真实图。

亮点与洞察

  • 把两个任务统一成一个:自定位求出 6-DoF 位姿后,目标定位只是"对任意像素射线投射 + 查深度",几乎零额外成本——一个配准问题同时干掉了 GNSS 依赖和激光测距硬件。
  • 一对多策略很省:只渲染单张参考视图、让一群位姿假设共享它做精化,把"扩大搜索域"的成本从"多次渲染"转嫁到"CUDA 并行优化假设",这是双线程能跑实时的关键工程取舍。
  • "对旋转更敏感"的观察直接落到采样设计:各向异性包围盒把采样预算偏向 pitch/yaw,是消融里大位移档增益最大的来源,这种"先看清域特性再设计采样"的思路可迁移到其他有强运动先验的配准任务。
  • 几何监督 > 外观监督换泛化:损失只盯重投影误差、监督来自几何一致性,逼网络学扎根 3D 结构的特征,是零样本 sim-to-real 的根因,对其他需要跨域的定位/匹配任务有借鉴价值。

局限与展望

  • 作者承认:极端视觉条件(如浓雾)或显著标定偏差下性能会退化。
  • 强依赖高保真 3D 网格地图:只能用在已有 mesh 数据的区域,限制了地理覆盖范围;作者计划扩展到数字正射影像(DOM)和数字高程模型(DEM)这类更通用的表示,以覆盖荒野和城市。
  • 自己看到的局限:所有真实评测的"零样本"都建立在合成数据足够真实的前提上,跨到与训练分布差异更大的相机/地形时是否仍稳,论文未充分压力测试;⚠️ 目标定位假设目标是"已知 2D 像素位置的点状物体",对大尺度/非刚体目标的几何定位误差如何,文中未深入。
  • 第一帧仍需一个粗位姿先验(真实数据来自粗 GNSS/IMU 或真值),即"无 GNSS"是指运行期不依赖、而非完全零先验。

相关工作与启发

  • vs VIO/SLAM(ORB-SLAM3 等):它们局部平滑但缺全局参考、长航时会漂移;PiLoT 每帧都对齐全局 3D 地图,从根上无漂移,代价是需要预建地图。
  • vs 2D 卫星图配准:早期方法只能恢复 3-DoF(经纬度 + yaw)、受限于俯视假设;PiLoT 用 3D 地图恢复完整 6-DoF。
  • vs 匹配类 Render2Loc(LoFTR/RoMaV2):它们精度相近但要稠密匹配 + PnP,机载上只有 0.8~2 FPS;PiLoT 用直接特征对齐 + 并行假设把速度拉到 28 FPS。
  • vs 直接对齐 PixLoc:PixLoc 同为特征度量对齐但对初始化敏感、在无人机域泛化差;PiLoT 靠大规模地图扎根训练闭合航空域 gap,并用 JNGO 缓解初始化敏感。

评分

  • 新颖性: ⭐⭐⭐⭐ 把自定位与目标定位统一成像素到 3D 配准、为不可能三角三条边各配一个组件,框架级创新清晰。
  • 实验充分度: ⭐⭐⭐⭐ 合成 + 两个真实数据集、自定位与目标定位双任务、组件与训练数据双消融,零样本验证扎实;极端域外压力测试略缺。
  • 写作质量: ⭐⭐⭐⭐ 三大贡献对应三条边的叙事线清楚,公式与图配合到位。
  • 价值: ⭐⭐⭐⭐ GNSS 拒止下的实时无人机定位有强实用价值,且嵌入式平台实测可跑。