PiLoT: Neural Pixel-to-3D Registration for UAV-based Ego and Target Geo-localization
Organizations: National University of Defense Technology · Zhejiang University · Westlake University · Hangzhou Dianzi University
Abstract
We present PiLoT, a unified framework that tackles UAV-based ego and target geo-localization. Conventional approaches rely on decoupled pipelines that fuse GNSS and Visual-Inertial Odometry (VIO) for ego-pose estimation, and active sensors like laser rangefinders for target localization. However, these methods are susceptible to failure in GNSS-denied environments and incur substantial hardware costs and complexity. PiLoT breaks this paradigm by directly registering live video stream against a geo-referenced 3D map. To achieve robust, accurate, and real-time performance, we introduce three key contributions: 1) a Dual-Thread Engine that decouples map rendering from core localization thread, ensuring both low latency while maintaining drift-free accuracy; 2) a large-scale synthetic dataset with precise geometric annotations (camera pose, depth maps). This dataset enables the training of a lightweight network that generalizes in a zero-shot manner from simulation to real data; and 3) a Joint Neural-Guided Stochastic-Gradient Optimizer (JNGO) that achieves robust convergence even under aggressive motion. Evaluations on a comprehensive set of public and newly collected benchmarks show that PiLoT outperforms state-of-the-art methods while running over 25 FPS on NVIDIA Jetson Orin platform. Our code and dataset is available at: https://github.com/Choyaa/PiLoT.
Figures & tables
| Dataset | Img | Region | Alt (m) | Pitch ( ∘ ) | Type | Cond. | 6-DoF | Depth | Seq. |
| University-1652 [ 40 ] | 37.8k | 1,652 | - | varied | Synthetic | ✗ | ✗ | ✗ | ✗ |
| SUES-200 [ 43 ] | 24.1k | 200 | 150–300 | varied | Real | ✗ | ✗ | ✗ | ✓ |
| DenseUAV [ 8 ] | 27k | 14 | 80–100 | fixed | Real | ✓ | ✗ | ✗ | ✗ |
| UAV-VisLoc [ 37 ] | 6.7k | 11 | 400–2000 | fixed | Real | ✓ | ✗ | ✗ | ✓ |
| UAVD4L [ 36 ] | 6.8k | 1 | 50–300 | varied | Real | ✗ | ✓ | ✓ | ✗ |
| GAME4Loc [ 15 ] | 33.7k | 1 | 80–650 | varied | Synthetic | ✗ | ✓ | ✗ | ✗ |
| SynthCity-6 (Synthetic) | UAVScenes (Real) | UAVD4L-2yr (Real) | |||||||||||
| Method | FPS | Med m | Med ∘ | R@1/3/5 (m, ∘ ) | Comp. | Med m | Med ∘ | R@1/3/5 (m, ∘ ) | Comp. | Med m | Med ∘ | R@1/3/5 (m, ∘ ) | Comp. |
| Hybrid Methods | |||||||||||||
| Render2ORB | 20.0 | 18.0 / 30.2 / 55.3 | 5.7 / 63.5 / 78.4 | 29.1 / 70.9 / 89.1 | |||||||||
| Render2RAFT † | 10.0 | 8.4 / 32.5 / 48.9 | 4.2 / 45.8 / 62.3 | 22.4 / 62.6 / 77.4 | |||||||||
| Absolute Localizers | |||||||||||||
| PixLoc † | 65.4 / 92.3 / 98.2 | 12.8 / 94.6 / 97.5 | 98.4 | 31.5 / 68.9 / 87.4 | |||||||||
| Dynamic Target Indication (R@1/3/5) | ||
| Method | Single-Target(Real) | Multi-Target(Syn) |
| Hybrid Methods (Abs.+Rel.) | ||
| Render2ORB | 72.13 / 84.59 / 89.74 | 79.51 / 91.04 / 93.28 |
| Render2RAFT | 44.15 / 78.96 / 88.19 | 51.33 / 78.12 / 90.50 |
| Absolute Localizers | ||
| PixLoc | 83.37 / 87.29 / 91.85 | 86.15 / 91.88 / 93.91 |
| Recall (%) @ 1m/1 ∘ | |||
| Ablation Configuration | w/ 3m, 3 ∘ | w/ 5m, 5 ∘ | w/ 10m, 10 ∘ |
| System Components | |||
| Off-the-shelf Backbone | 4.2 | 0.0 | 0.0 |
| + Domain-Specific Training | 51.4 | 43.2 | 15.2 |
| + Rotation-Aware Hypothesis | 83.8 | 78.9 | 70.6 |
| + Motion Regularizer (Ours) | 84.3 | 84.3 | 84.2 |
Appendix figures & tables21 assets
Supplementary material from the paper’s appendix.
Appendix
| Stage | Operation | Resolution | Channels | Description |
| Encoder (MobileOne-S0) | ||||
| Input | - | 3 | Input RGB image | |
| Stage 1 ( ) | Stem + Stage 1 | First level of features (for skip) | ||
| Stage 2 ( ) | Stage 2 Blocks | Second level of features (for skip) | ||
| Stage 3 ( ) | Stage 3 Blocks | Deepest features fed to decoder | ||
| Decoder | ||||
| Metric | Yaw ( ) | Pitch ( ) | Roll ( ) | Tx | Ty | Tz |
| Conv. Limit | 3.5 ∘ | 2.7 ∘ | 3.2 ∘ | 5.6m | 8.1m | 7.4m |
| Max Motion (30 fps) | 6.7 ∘ | 3.0 ∘ | ¡0.1 ∘ | 0.7m | 0.7m | 0.3m |
| Image Size | ONNX Runtime | C++ Reference | CUDA Port | CUDA Fused Kernel |
| 512 512 | 14.9 ms | 8.44 ms | 5.72 ms | 0.49 ms |
| 256 256 | 10.4 ms | 8.35 ms | 5.24 ms | 0.47 ms |
| 128 128 | 8.8 ms | 8.27 ms | 5.21 ms | 0.44 ms |
| Sequence | Weather / Illumination | Altitude (m) | Per Trajectory | Total Camera Frames | Location |
| Switzerland-seq4 | Foggy/Night/Rainy/Sunny/Sunset | 200/500 | 900 | 9000 | Thun, Switzerland |
| Switzerland-seq7 | Foggy/Night/Rainy/Sunny/Sunset | 200/500 | 900 | 9000 | Kirchlindach, Switzerland |
| Switzerland-seq12 | Foggy/Night/Rainy/Sunny/Sunset | 200/500 | 900 | 9000 | Lausanne, Switzerland |
| USA-seq2 | Foggy/Night/Cloudy/Sunny/Sunset | 200/500 | 900 | 9000 | Chicago, USA |
| USA-seq5 | Foggy/Night/Cloudy/Sunny/Sunset | 200/500 | 900 | 9000 | New York, USA |
| USA-seq8 | Foggy/Night/Cloudy/Sunny/Sunset | 200/500 | 900 | 9000 | California, USA |
| Sequence | Illumination | Altitude (m) | Camera Frames | Scene Type & Environment | Target Object |
| UAVD4L-2yr-seq1 | Daytime | 70 | 900 | suburban | dynamic person |
| UAVD4L-2yr-seq2 | Daytime | 70 | 900 | urban | dynamic vehicles |
| UAVD4L-2yr-seq3 | Daytime | 70 | 900 | urban | static landmark |
| UAVD4L-2yr-seq4 | Daytime | 110 | 900 | suburban | dynamic vehicles |
| UAVD4L-2yr-seq5 | Night | 220 | 900 | urban | dynamic vehicles |
| UAVD4L-2yr-seq6 | Night | 310 | 900 | urban | dynamic vehicles |
| Sequence | Weather / Illumination | Altitude (m) | Camera Frames | Target Object Number |
| UAVD4L-SynTarget-seq1 | Sunny | 130 | 304 | 100 |
| UAVD4L-SynTarget-seq2 | Sunny | 130 | 344 | 100 |
| UAVD4L-SynTarget-seq3 | Sunny | 180 | 1136 | 100 |
| UAVD4L-SynTarget-seq4 | Foggy | 180 | 1136 | 100 |
| UAVD4L-SynTarget-seq5 | Night | 180 | 1136 | 100 |
| UAVD4L-SynTarget-seq6 | Foggy | 150 | 1192 | 100 |