Bayesian CNN Sun Detector
Switch branches/tags
Nothing to show
Clone or download


Bayesian Convolutional Neural Network to infer Sun Direction from a single RGB image, trained on the KITTI dataset [1].


This code was used in our paper Reducing Drift in Visual Odometry by Inferring Sun Direction Using a Bayesian Convolutional Neural Network, which appeared at ICRA 2017 (preprint available: arXiv:1609.05993).


Installation & Pre-Requisites

  1. Download and compile The STARS Lab fork of Caffe-Sl (we use their L2Norm layer and add BCNN test-time dropout capability).

  2. Ensure that the lmdb and cv2 python packages are installed (e.g. through pip).

  3. Clone sun-bcnn:

git clone

Testing with pre-trained model

  1. Visit and download a pre-trained model, test LMDB file and appropriate mean file.

  2. Edit caffe-files/ to match appropriate mean file, weights file and testing file. Edit scripts/ with appropriate directories.

  3. Run scripts/

bash scripts/


Using KITTI data

  1. Visit and download a training LMDB file. Visit (Note (May 2017): This page is now down, but you can access the same model on our servers: and download the pre-trained GoogLeNet from Princeton (trained on MIT Places data).

  2. Edit caffe-files/train_sunbcnn.prototxt with the appropriate file names (search 'CHANGEME')

  3. Edit caffe-files/ with the appropriate folder and file names.

  4. Run scripts/

bash scripts/

Note: the LMDB files contain images that have been re-sized and padded with zeros along with target Sun directions (extracted through ephemeris tables and the ground truth provided by KITTI GPS/INS). A human readable table of image filenames and Sun directions can be found in the kitti-groundtruth-data folder (consult our paper for camera frame orientation).

Using your own data

See scripts/ for a wireframe of how to create your own training LMDB files.


If you use this work in your research, please cite

  address = {Singapore},
  author = {Valentin Peretroukhin and Lee Clement and Jonathan Kelly},
  booktitle = {Proceedings of the {IEEE} International Conference on Robotics and Automation {(ICRA'17})},
  date = {2017-05-29/2017-06-03},
  link = {},
  month = {May 29--Jun. 3},
  title = {Reducing Drift in Visual Odometry by Inferring Sun Direction Using a Bayesian Convolutional Neural Network},
  year = {2017}


[1] A. Geiger, P. Lenz, C. Stiller, and R. Urtasun, "Vision meets robotics: The KITTI dataset," Int. J. Robot. Research (IJRR), vol. 32, no. 11, pp. 1231–1237, Sep. 2013.

[2] Y. Gal and Z. Ghahramani, “Dropout as a bayesian approximation: Representing model uncertainty in deep learning,” in Proceedings of The 33rd International Conference on Machine Learning, 2016, pp. 1050–1059.

[3] A. Kendall, and R. Cipolla, "Modelling Uncertainty in Deep Learning for Camera Relocalization." The International Conference on Robotics and Automation, 2015.