GithubHelp home page GithubHelp logo

fedbevt's Introduction

FedBEVT: Federated Learning Bird’s Eye View Perception Transformer in Road Traffic Systems

FedBEVT is a federated learning framework to train a transformer-based model for road environmental BEV perception.


Installation

List of dependencies

  • matplotlib
  • PyTorch (1.8.1)
  • numpy
  • open3d
  • opencv-python
  • tensorboardX
  • shapely
  • einops
  • cumm
  • Cython
  • timm

Install requirements

cd fedbevt

# Initialize conda env
conda create -y --name fedbevt python=3.8
conda activate fedbevt
conda install pytorch==1.11.0 torchvision==0.12.0 cudatoolkit=11.3 -c pytorch

# Install dependencies
python fedbevt/utils/setup.py build_ext --inplace
python setup.py develop

Federated Data Preparation


Download

We follow the OPV2V data format, extending orignal OPV2V data (Car) with images and BEV lables for Trucks, Bus and Infrastructure: DOWNLOAD.

More details on OPV2V data format can be found HERE.

Preprocess

The data should be distributed to different clients according use cases. We provide the script and corresponding YAML-files for each use case.

Example for use case 1: python3 fedbevt/tools/fed_data_utils.py --config uc1.yaml --source /data/path/to/data_resource --target /data/fedbevt/uc1

Explanations of arguments:

  • --config: The configuration file in YAML.
  • --source: Source directory to original dataset.
  • --target: Target directory to federated dataset.

Execution FedBEVT

Example: python fedbevt/fed/fedbevt_main.py --config fed_fax_flserver_uc1.yaml --gpu 0 --per avg

Explanations of arguments:

  • --config: The configuration file in YAML
  • --gpu: The id of GPU
  • --per: The approach used for personalization: 'avg' and 'cap' are supported

Evaluation Procedures

Run python fedbevt/visualization/eval_main.py -rr 'results/json_logs' to plot the testing accuracy and training loss by the increasing number of epochs or communication rounds. Note that the labels in the figure is the name of result files

Hyperparameters and Commands

We provide tables of our recommended hyperparameters and commands

Data preparation for UC1-4

UC ID Command
#1 python fedbevt/tools/fed_data_utils.py --config uc1.yaml --source /data/path/to/data_resource --target /data/fedbevt/uc1
#2 python fedbevt/tools/fed_data_utils.py --config uc2.yaml --source /data/path/to/data_resource --target /data/fedbevt/uc2
#3 python fedbevt/tools/fed_data_utils.py --config uc3.yaml --source /data/path/to/data_resource --target /data/fedbevt/uc3
#4 python fedbevt/tools/fed_data_utils.py --config uc4.yaml --source /data/path/to/data_resource --target /data/fedbevt/uc4

Recommended hyperparameters

Training parameters:

Parameter batch size local epoches num of rounds eval freq save freq max cav num
Value 16 1 500 5 5 1

Optimizer parameters:

Parameter core method learning rate eps weight decay
Value AdamW 2e-4 1e-10 1e-2

Learning rate scheduler parameters:

Parameter core method warmup learning rate warmup round min. learning rate
Value cosineannealwarm 2e-5 10 5e-6

Experiment commands

UC1:

Exp ID --config --per
#1 fed_fax_flserver_uc1.yaml avg
#2 fed_fax_flserver_uc1.yaml cap

UC2:

Exp ID --config --per
#3 fed_fax_flserver_uc2.yaml avg
#4 fed_fax_flserver_uc2.yaml cap

UC3:

Exp ID --config --per
#5 fed_fax_flserver_uc3.yaml avg
#6 fed_fax_flserver_uc3.yaml cap

UC4:

Exp ID --config --per
#7 fed_fax_flserver_uc4.yaml avg
#8 fed_fax_flserver_uc4.yaml cap

Citation

If you find FedBEVT is useful, please cite our work:

@article{song2023fedbevt,
  title={FedBEVT: Federated Learning Bird's Eye View Perception Transformer in Road Traffic Systems},
  author={Song, Rui and Xu, Runsheng and Festag, Andreas and Ma, Jiaqi and Knoll, Alois},
  journal={arXiv preprint arXiv:2304.01534},
  year={2023}
}

Acknowledgement

The project extensively utilizes the toolchains in the OpenCDA ecosystem, including the OpenCOOD and the OpenCDA simulation tools.

fedbevt's People

Contributors

rruisong avatar

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.