/GPFL-GRACE

[MICCAI 2023] GRACE: Enhancing Federated Learning for Medical Imaging with Generalized and Personalized Gradient Correction

Primary LanguagePython

GRACE: Enhancing Federated Learning for Medical Imaging with Generalized and Personalized Gradient Correction - MICCAI 2023

Paper of our work

This repo provides a demo for the MICCAI 2023 paper "GRACE: Enhancing Federated Learning for Medical Imaging with Generalized and Personalized Gradient Correction".

paper link: (wait for camera ready version)

To cite, please use:

@inproceedings{zhang2023grace,
  title={GRACE: Enhancing Federated Learning for Medical Imaging with Generalized and Personalized Gradient Correction},
  author={Zhang, Ruipeng and Fan, Ziqing and Xu, Qinwei and Yao, Jiangchao and Zhang, Ya and Wang, Yanfeng},
  booktitle={Medical Image Computing and Computer Assisted Intervention--MICCAI 2023: 26th International Conference, Vancouver, Canada, October 8--October 10, 2023},
  year={2023},
  organization={Springer}
}

Structure of our code

Unfinished (code for GRACE and TTA part)!

├── algorithms
│   ├── __init__.py
│   ├── ditto.py
│   ├── elcfs.py
│   ├── fed_distance.py
│   ├── fedavg.py
│   ├── fedbabu.py
│   ├── fedbn.py
│   ├── fedmtl.py
│   ├── fedper.py
│   ├── fedprox.py
│   ├── fedrep.py
│   ├── fedrod.py
│   ├── grace_client.py
│   ├── grace_fl.py
│   ├── grace_server.py
│   ├── harmo_fl.py
│   ├── meta_trainer.py
│   ├── moon.py
│   ├── perfedavg.py
│   ├── perfedme.py
│   └── scaffold.py
├── configs
│   └── default.py
├── data
│   ├── Fourier_Aug.py
│   ├── __init__.py
│   ├── a_distance.py
│   ├── flamby_fed_isic2019.py
│   ├── isic2019_dataset.py
│   ├── meta_dataset.py
│   ├── metadata
│   │   └── isic2019_train_test_split
│   └── prostate_dataset.py
├── networks
│   ├── FedOptimizer
│   │   ├── FedProx.py
│   │   ├── HarmoFL.py
│   │   ├── PerFedAvg.py
│   │   ├── PerFedMe.py
│   │   ├── Scaffold.py
│   │   └── __pycache__
│   ├── GRL.py
│   ├── __init__.py
│   ├── amp_utils.c
│   ├── get_network.py
│   ├── isic_model.py
│   ├── prostate_model.py
│   └── setup.py
├── readme.md
├── runs
│   └── run_trainer.py
├── utils
│   ├── classification_metric.py
│   ├── log_utils.py
│   ├── segmentation_metric.py
│   └── test_a_distance.py
└── visualization

Requirements

  • Python 3.9.7
  • numpy 1.20.3
  • torch 1.11.0
  • torchvision 0.12.0

Datasets

Training code

python ./runs/run_trainer.py --algorithm FedAvg_Prostate_Trainer --dataset prostate --model prostate_unet --align_weight 0.1 --align_warmup 0 --align_type CORAL --batch_size 16 --lr 1e-3 --optimizer adam --lr_policy step --local_epochs 1 --rounds 200 --note baseline_prostate

python ./runs/run_trainer.py --algorithm FedAvg_ISIC_Trainer --dataset isic --model isic_b0 --align_weight 0.1 --align_warmup 0 --align_type CORAL --batch_size 64 --lr 5e-4 --optimizer adam --lr_policy step --local_epochs 5 --rounds 40 --note baseline_isic

Acknowledgement

Part of our code is borrowed from the following repositories.

We thank to the authors for releasing their codes. Please also consider citing their works.