This is the official implementation of our paper ASMR: Angular Client Support for Malfunctioning Client Resilience in Federated Learning accepted at MIDL 2024.
This repository provides a framework for simulating federated learning, specifically designed to study the impact of malfunctioning clients in this context. The framework focuses on medical images, particularly in digital pathology. It considers malfunctioning clients as either malicious or unreliable. Malicious clients deliberately launch untargeted attacks to degrade the global model's performance, while unreliable clients train on suboptimal data containing artifacts. For further information, please refer to our paper.
Important: This framework trains all clients in parallel using multi-threading. Please make sure you have enough resources available.
The following datasets are supported:
Dataset | Task | Link |
---|---|---|
Colectoral Cancer | Classification | https://zenodo.org/records/1214456 |
Camelyon17 Wilds | Classification | https://wilds.stanford.edu/datasets/#camelyon17 |
Celeba | Classification | https://mmlab.ie.cuhk.edu.hk/projects/CelebA.html |
The following malfunctions are supported:
Malfunction | Class | Description |
---|---|---|
Additive-Noise-Attack (ANA) | Malicious | Adds specified amount of noise to the update |
Sign-Flipping-Attack (SFA) | Malicious | Changes the direction of the vectors of an update |
Artifacts | Unreliable | Adds pathology-specific artifacts to training data |
To add the artifacts to the training data we used the FrOoDo framework.
The following protection methods are supported:
To run federated training, you need to create a configuration file. For reference, we have included a demo config in this repository's documentation.
You can execute the training using the following command:
python3 main.py --gpu=0,1,2,3 --exp_path=demo_config.yml --logfile=logfile.txt
Ensure that the configuration file is placed inside the config
directory and the logfile is placed inside the logs
directory.