Skip to content

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

Notifications You must be signed in to change notification settings

RoboticImaging/NOCaL

Repository files navigation

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}
}

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages