/UAVD4L

Primary LanguagePython

A dataset for UAV localization

This is UAVLoc, a pipeline for 6-DoF uav visual localization.

Install dependencies

  • If conda environment is available \
conda env create -f setup/environment.yml
conda activate uavloc
  • Otherwise, if conda environment is not readily available:
python3 -m venv venvuavloc
source venvuavloc/bin/activate
pip3 install pip -U && pip3 install -r setup/requirements.txt

pipeline

The pipeline include 2 steps

  1. off-line dataset generation
  2. on-line uav localization (GPS-denied)

off-line dataset generation

Preparation

  • textured 3D mesh (.obj)
  • angle txt file (bamu_euler.txt --> pitch roll yaw)
  • digital surface model (DSM)
  • camera sensor parameter (sensor width, sensor height, focal lenght)

Run

python -m targetloc.generate_dataset.pipeline_dataset_generation_limit

output

  • pose.txt (DB_pose)
  • intrinsic.txt (DB_intrinsic)
  • test (points corresponding to .obj)
  • RGB images and depth images

dataset download

  • Baidu Netdisk (password:3dvv)(including render images, query images, query pose, DSM)

dataset structure

  • For generation synthetic dataset

|--- Render_all   # synthetic dataset
  |--- images   # synthetic RGB images
  |--- depths   # synthetic depth images
  |--- db_pose.txt   # database pose w2c (Quaternion, Position:wxyz,xyz)
  |--- db_intrinsics.txt   # database intrinsic \

  • For query image, unditorted image, generate IMU and intrinsic .txt

|--- Query   # query dataset
  |--- images   # RGB images
    |--- W (wide-angle)
    |--- Z (zoom-in)
  |--- intrinsics
    |-- w_intrinsic.txt
    |-- z_intrinsic.txt
  |--- poses
    |-- w_pose.txt
    |-- z_pose.txt
    |-- gt_pose.txt


on-line uav localization

Preparation

  • offline generation datasets
    • include RGB images, depths images, pose txt, intrinsic txt
  • query images
    • include RGB images, IMU sensor, intrinsic (sensor width, sensor height, focal length, calibrate coefficient)
    • if you want to localize the target position, you also should provide _Z.JPG and intrinsic, and .json file (2D coordinates.)

Run

python -m targetloc.localization_detection.pipeline_other_city
if you use with-gravity to solve PnP, you should compile poselib, and you can refer to poselib.
For more environmental configurations, please refer to hloc.

output

  • global descriptor .h5
  • local descriptor .h5
  • uav localization result .txt
  • target localition result .txt (optimal)

Attention

Our image coordinate system selected as 114E, if you want to use our code, please modified the image coordinate system.

read_EXIF.py  --> (108)
read_SRT.py  -->  (37)
eval.py  --> (272)

version

  • for uav localization
    We provide detector-based (SPP+SPG, SPP+NN, ...) and detector-free (LoFTR).
  • for target localization
    We provide mouse-based and .json file -based.

Citation

@inproceedings{Wu2023uav4l,
    title={UAVD4L: A Large-Scale Dataset for UAV 6-DoF Localization}, 
    author={Rouwan Wu and Xiaoya Cheng and Juelin Zhu and Xuxiang Liu and Maojun Zhang and Shen Yan},
    booktitle={International Conference on 3D Vision (3DV)},
    year={2024}
}

References

This repository is built on top of the following amazing repositories:

  • Main code framework is from: hloc

Please follow the license of the above repositories for usage of that part of the codebase.