Skip to content

Latest commit

 

History

History
92 lines (64 loc) · 3.01 KB

README.md

File metadata and controls

92 lines (64 loc) · 3.01 KB

NOCaL: Calibration-Free Semi-Supervised Learning of Odometry and Camera Intrinsics

We introduce a semi-supervised learning framework capable of interpreting previously unseen cameras without calibration. We present this in our paper:

NOCaL: Calibration-Free Semi-Supervised Learning of Odometry and Camera Intrinsics

 

Authors: Ryan Griffiths, Jack Naylor, Donald G. Dansereau

Project Page: roboticimaging.org/Projects/NOCaL/ (gallery, results etc.)

If you have any questions or issues feel free to reach out.

Setup

Get the code and create the necessary conda environment using the following:

git clone https://github.com/RoboticImaging/NOCaL.git
cd NOCaL
conda env create -f environment.yml
For Detailed Dependencies

Dependencies

  • python=3.7
  • cudatoolkit=11.0.221
  • pytorch=1.7.1
  • torchvision=0.8.2
  • numpy=1.20.1
  • opencv=3.4.2
  • pandas=1.2.4
  • scipy=1.6.2
  • configargparse
  • scikit-image=0.18.1
  • tensorboardx=2.2
  • matplotlib=3.3.4
  • natsort=7.1.1
  • ordered-set=4.0.2
  • tensorboard

Running

Update the config file (data_path) to link to where the dataset is stored, if you want to try the dataset used in this work you can find it here.

Run the following command to start the training process:

conda activate nocal
python train.py --config LFOdo_config.txt

Logging is done through tensorboard, you can see the progress/results by running this and following the link provided:

tensorboard --logdir tensorboard_data

Using your own data

If you are using your own data and want to use the existing dataloader please formate your data as follows:

├── data
│   ├── scene0
│   │   ├── cam0
|   |   |   └── data
|   |   |   |   └── image1.png
|   |   |   |   └── image2.png
|   |   |   |   └── ...
|   |   |   └── data.csv (name, filename)
│   │   └── cameraInfo.txt (k matrix)                
│   │   └── poses.gt (image,x,y,z,q_w,q_x,q_y,q_z)
|   ├── scene...

You can then use the existing dataloader, by changing the dataset in the config file. Otherwise you can create a new dataloader for your dataset.

Create a new config file and use this file when running the commands above.

See LFOdo_config.txt for configuration options.

Citation

If you find our work useful, please cite the below paper:

@article{griffiths2023nocal,
  title = {{NOCaL}: Calibration-Free Semi-Supervised Learning of Odometry and Camera Intrinsics},
  author = {Ryan Griffiths and Jack Naylor and Donald G. Dansereau},
  journal = {Robotics and Automation ({ICRA})},
  year = {2023}
}