FloppyNet is a BNN designed for VPR and loop closure detection in particular.
This repository shares several tool for training and deploying FloppyNet on a Rasperry PI4.
- main.py is the only file you need for:
- Training FloppyNet and the other BNNs presented in our paper.
- Exporting a model in Larq-Compute-Engine format for ARM64 cpus (i.e. RPI4).
- Computing an image descriptor
- TRO_pretrained contains the model trained for the paper. Both H5 and LCE (.tflite) formats are available.
- RPI4 includes an engine to run the LCE models: lce_cnn
- scripts includes detailed instructions on how to used main.py with serverl examples.
The project has been developed within Eclipse+PyDev but the code can be exectuded from a command line.
The main python3 packages required to use the provided code are the following.
- Tensorflow >= 2.3.1
- larq >= 0.10.2
- larq-compute-engine >= 0.4.3
- opencv >= 4.4.0
- prettytable >= 2.0.0
If you use this code, please cite us:
@ARTICLE{9725251,
author={Ferrarini, Bruno and Milford, Michael J. and McDonald-Maier, Klaus D. and Ehsan, Shoaib},
journal={IEEE Transactions on Robotics},
title={Binary Neural Networks for Memory-Efficient and Effective Visual Place Recognition in Changing Environments},
year={2022},
volume={38},
number={4},
pages={2617-2631},
doi={10.1109/TRO.2022.3148908}}