Giter Club home page Giter Club logo

vapor's Introduction

VaPoR

PyTorch source code for the Variational Pose Regression method proposed in the ICRA 2023 paper A Probabilistic Framework for Visual Localization in Ambiguous Scenes.

Dependencies

All python dependencies of the project are listed in the requirement.txt file, installed by pip install -r requirements.txt. In addition to these, and optionally

  1. Deep Bingham Networks package is required for computing sample likelihoods,
  2. Instant Neural Graphics Primitives package is required for modelling scenes and view synthesis from sampled poses, and
  3. Weights & Biases for logging of results.

If you do not wish to install the latter packages, do not run/comment out the relevant sections that use those functionalities.

Usage

Clone the repository and install it, for example, with

pip install .

The project codebase assumes the following file structure,

+── ~/data
│   +── AmbiguousReloc
│       +── blue_chairs
│       +── meeting_table
│       +── seminar
│       +── staircase
│       +── staircase_ext
│   +── CambridgeLandmarks
│       +── KingsCollege
│       +── OldHospital
│       +── ShopFacade
│       +── StMarysChurch
│       +── Street
│   +── SevenScenes
│       +── chess
│       +── fire
│       +── heads
│       +── office
│       +── pumpkin
│       +── redkitchen
│       +── stairs
│   +── Rig
│       +── Ceiling
+── ~/code
│   +── vapor (clone root)
│       +── vapor
│           +── scripts
│       +── runs

where each dataset follows its own structure for images and ground truth pose labels. Refer to vapor/data.py for the exact structures.

Data

Our recorded data for the ceiling scene can be downloaded here. Ground-truth poses are saved in the poses.txt file inside each sequence directory, where each line contains the camera pose (camera-to-world point transformation) for one image sample with the following file format:

seq_no image_no tx ty tz qw qx qy qz

Training and Evaluation

The project contains various tools for evaluation and analysis of results, including many tools that were not included in the paper. A minimal guide to train and evaluate the pipeline is provided below. However, feel free to explore the available tools.

Training

You can train the pipeline by the training script

python vapor/scripts/train_pipeline.py --dataset AmbiguousReloc --sequence blue_chairs

and provide the appropriate settings by flags. The results will be saved at vapor/runs/RUNNAME.

Evaluation

You can evaluate a pretrained model by the evaluation script

python vapor/scripts/evaluate_pipeline.py RUNNAME

You can then visualize the samples predicted by the pretrained model by the visualization script

python vapor/scripts/visualize_samples.py RUNNAME

The results will be saved at vapor/runs/RUNNAME/plots/.

Citation

If you find this library useful in your research, consider citing our publication:

@inproceedings{zangeneh2023vapor,
  title={A Probabilistic Framework for Visual Localization in Ambiguous Scenes},
  author={Zangeneh, Fereidoon and Bruns, Leonard and Dekel, Amit and Pieropan, Alessandro and Jensfelt, Patric},
  booktitle={Proceedings of the IEEE International Conference on Robotics and Automation},
  year={2023}
}

vapor's People

Contributors

efreidun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

danielduberg

vapor's Issues

Issues about results

Hello, I'm also interested in the Bingham network in 2020 ECCV and came across your article, which I find very interesting. However, I encountered a problem when running the code, and my results are very different from those in your paper. I checked the parameters, which are the same as those in the paper, but I don't know where the problem is.
1.In your Shell scripts,it gives 2000 epochs to run the code on CamReLoc dataset, but i find in your paper, it give 500,i wanna know which number i can use?
2.In train_pipeline.py, which parameters should i pay more attention on it?
Can you give me some ideas and references, please?
Thanks!

is not None?

I am writing to report a bug in the software that I have been using. The software has a feature that checks if a certain variable is not None. However, the problem is that I don't care if the variable is not None, but the software is still throwing an error when the variable is None.

Steps to Reproduce:

Open the software and navigate to the relevant feature.
Set a variable to None.
Run the code that checks if the variable is not None.
Observe that the code throws an error.
Expected Result:
The code should not throw an error when the variable is None since I don't care if it is not None.

Actual Result:
The code is throwing an error when the variable is None, which is not meeting my expectations.

Impact:
This bug is causing inconvenience and frustration as it is preventing me from using the software efficiently. I am spending more time than necessary trying to work around the bug.

Workaround:
The only workaround that I have found is to modify the code to ignore the check for the variable being not None. However, this is not an ideal solution as it requires additional work and increases the risk of introducing new bugs.

Version:
The version of the software I am using is 1.0.0.

Attachments:
I have attached a screenshot of the error message that the software is throwing when the variable is None.

Thank you for your attention to this matter. I look forward to hearing from you soon.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.