https://github.com/abtinmy/clustered-fl-brainage
Official implementation of paper "Brain Age Estimation Using Structural MRI: A Clustered Federated Learning Approach"
Science Score: 10.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
○codemeta.json file
-
○.zenodo.json file
-
○DOI references
-
✓Academic publication links
Links to: ieee.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (9.7%) to scientific vocabulary
Keywords
Repository
Official implementation of paper "Brain Age Estimation Using Structural MRI: A Clustered Federated Learning Approach"
Basic Info
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
README.md
Clustered-FL-BrainAGE
Official implementation of paper "Brain Age Estimation Using Structural MRI: A Clustered Federated Learning Approach", Accepted to IEEE COINS 2023 conference.
Abstract
Estimating brain age based on structural Magnetic Resonance Imaging (MRI) is one of the most challenging and prominent areas of research in recent medical imaging and neuroscience studies. The significance of brain age prediction in the early diagnosis of neurological disorders has fueled a resurgence of interest in this field. Various studies have addressed this issue using a spectrum of techniques, from traditional machine learning to deep neural networks. The majority of these techniques employ centralized paradigms, which do not adequately preserve privacy. To tackle this problem, a handful of studies have utilized a federated approach. In this study, we propose a novel hierarchical clustered federated learning approach that carefully captures and considers the similarities of the clients' predictions on a certain benchmark dataset. This method enhances performance in Non-Independent and Identically Distributed (Non-IID) environments while preserving privacy. We use a multi-site dataset that provides a broad variety of MRI scans, characterizing a proper Non-IID environment. Our method achieves a Mean Absolute Error (MAE) of 3.86, while the non-clustered FedAvg federated approach attains a 4.14 MAE on the test set.
Setup & Usage
- Clone the repository.
git clone https://github.com/Abtinmy/Clustered-FL-BrainAGE.git - Create a conda environment using the
requirements.txtfile.conda create --name <env> --file requirements.txt - Run the sample experiment using the shell command in the
scriptdirectory. Arguments and their descriptions are explained inarguments_parser.py.cd scripts/ sh sample.sh## Citation@inproceedings{cheshmi2023brain, title={Brain Age Estimation Using Structural MRI: A Clustered Federated Learning Approach}, author={Cheshmi, Seyyed Saeid and Mahyar, Abtin and Soroush, Anita and Rezvani, Zahra and Farahani, Bahar}, booktitle={2023 IEEE International Conference on Omni-layer Intelligent Systems (COINS)}, pages={1--6}, year={2023}, organization={IEEE} }
Acknowledgement
This project is inspired by FLIS repository.
Owner
- Name: Abtin Mahyar
- Login: Abtinmy
- Kind: user
- Location: Tehran, Iran
- Repositories: 2
- Profile: https://github.com/Abtinmy
B.Sc-Computer Science student at Shahid Beheshti University (SBU)
GitHub Events
Total
- Watch event: 3
Last Year
- Watch event: 3
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 2
- Total pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Total issue authors: 2
- Total pull request authors: 0
- Average comments per issue: 0.5
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- z775357 (1)
- Gengsheng-Li (1)
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- absl-py =1.4.0=pyhd8ed1ab_0
- aiohttp =3.8.1=py310h5764c6d_1
- aiosignal =1.3.1=pyhd8ed1ab_0
- asttokens =2.2.1=pyhd8ed1ab_0
- async-timeout =4.0.2=py310h06a4308_0
- attrs =22.2.0=pyh71513ae_0
- backcall =0.2.0=pyh9f0ad1d_0
- backports =1.0=pyhd8ed1ab_3
- backports.functools_lru_cache =1.6.4=pyhd8ed1ab_0
- blas =1.0=mkl
- blinker =1.5=pyhd8ed1ab_0
- brotlipy =0.7.0=py310h7f8727e_1002
- bzip2 =1.0.8=h7b6447c_0
- c-ares =1.18.1=h7f98852_0
- ca-certificates =2022.12.7=ha878542_0
- cachetools =5.3.0=pyhd8ed1ab_0
- certifi =2022.12.7=pyhd8ed1ab_0
- cffi =1.15.1=py310h5eee18b_3
- charset-normalizer =2.0.4=pyhd3eb1b0_0
- click =8.1.3=unix_pyhd8ed1ab_2
- cryptography =39.0.1=py310h9ce1e76_0
- cuda =11.7.1=0
- cuda-cccl =11.7.91=0
- cuda-command-line-tools =11.7.1=0
- cuda-compiler =11.7.1=0
- cuda-cudart =11.7.99=0
- cuda-cudart-dev =11.7.99=0
- cuda-cuobjdump =11.7.91=0
- cuda-cupti =11.7.101=0
- cuda-cuxxfilt =11.7.91=0
- cuda-demo-suite =12.1.55=0
- cuda-documentation =12.1.55=0
- cuda-driver-dev =11.7.99=0
- cuda-gdb =12.1.55=0
- cuda-libraries =11.7.1=0
- cuda-libraries-dev =11.7.1=0
- cuda-memcheck =11.8.86=0
- cuda-nsight =12.1.55=0
- cuda-nsight-compute =12.1.0=0
- cuda-nvcc =11.7.99=0
- cuda-nvdisasm =12.1.55=0
- cuda-nvml-dev =11.7.91=0
- cuda-nvprof =12.1.55=0
- cuda-nvprune =11.7.91=0
- cuda-nvrtc =11.7.99=0
- cuda-nvrtc-dev =11.7.99=0
- cuda-nvtx =11.7.91=0
- cuda-nvvp =12.1.55=0
- cuda-runtime =11.7.1=0
- cuda-sanitizer-api =12.1.55=0
- cuda-toolkit =11.7.1=0
- cuda-tools =11.7.1=0
- cuda-visual-tools =11.7.1=0
- debugpy =1.5.1=py310h295c915_0
- decorator =5.1.1=pyhd8ed1ab_0
- efficientnet-pytorch-3d =0.6.3=pypi_0
- entrypoints =0.4=pyhd8ed1ab_0
- executing =1.2.0=pyhd8ed1ab_0
- ffmpeg =4.3=hf484d3e_0
- filelock =3.10.0=pypi_0
- flit-core =3.6.0=pyhd3eb1b0_0
- freetype =2.12.1=h4a9f257_0
- frozenlist =1.3.3=py310h5eee18b_0
- gds-tools =1.6.0.25=0
- giflib =5.2.1=h5eee18b_3
- gmp =6.2.1=h295c915_3
- gnutls =3.6.15=he1e5248_0
- google-auth =2.16.2=pyh1a96a4e_0
- google-auth-oauthlib =0.4.6=pyhd8ed1ab_0
- grpcio =1.42.0=py310hce63b2e_0
- huggingface-hub =0.13.2=pypi_0
- idna =3.4=py310h06a4308_0
- importlib-metadata =6.0.0=pyha770c72_0
- intel-openmp =2021.4.0=h06a4308_3561
- ipykernel =6.15.0=pyh210e3f2_0
- ipython =8.11.0=pyh41d4057_0
- ipywidgets =8.0.5=pypi_0
- jedi =0.18.2=pyhd8ed1ab_0
- joblib =1.2.0=pypi_0
- jpeg =9e=h5eee18b_1
- jupyter_client =7.3.4=pyhd8ed1ab_0
- jupyter_core =4.12.0=py310hff52083_0
- jupyterlab-widgets =3.0.6=pypi_0
- lame =3.100=h7b6447c_0
- lcms2 =2.12=h3be6417_0
- ld_impl_linux-64 =2.38=h1181459_1
- lerc =3.0=h295c915_0
- libcublas =11.10.3.66=0
- libcublas-dev =11.10.3.66=0
- libcufft =10.7.2.124=h4fbf590_0
- libcufft-dev =10.7.2.124=h98a8f43_0
- libcufile =1.6.0.25=0
- libcufile-dev =1.6.0.25=0
- libcurand =10.3.2.56=0
- libcurand-dev =10.3.2.56=0
- libcusolver =11.4.0.1=0
- libcusolver-dev =11.4.0.1=0
- libcusparse =11.7.4.91=0
- libcusparse-dev =11.7.4.91=0
- libdeflate =1.17=h5eee18b_0
- libffi =3.4.2=h6a678d5_6
- libgcc-ng =11.2.0=h1234567_1
- libgomp =11.2.0=h1234567_1
- libiconv =1.16=h7f8727e_2
- libidn2 =2.3.2=h7f8727e_0
- libnpp =11.7.4.75=0
- libnpp-dev =11.7.4.75=0
- libnvjpeg =11.8.0.2=0
- libnvjpeg-dev =11.8.0.2=0
- libpng =1.6.39=h5eee18b_0
- libprotobuf =3.20.3=he621ea3_0
- libsodium =1.0.18=h36c2ea0_1
- libstdcxx-ng =11.2.0=h1234567_1
- libtasn1 =4.16.0=h27cfd23_0
- libtiff =4.5.0=h6a678d5_2
- libunistring =0.9.10=h27cfd23_0
- libuuid =1.41.5=h5eee18b_0
- libwebp =1.2.4=h11a3e52_1
- libwebp-base =1.2.4=h5eee18b_1
- lxml =4.9.2=pypi_0
- lz4-c =1.9.4=h6a678d5_0
- markdown =3.4.1=pyhd8ed1ab_0
- matplotlib-inline =0.1.6=pyhd8ed1ab_0
- mkl =2021.4.0=h06a4308_640
- mkl-service =2.4.0=py310h7f8727e_0
- mkl_fft =1.3.1=py310hd6ae3a3_0
- mkl_random =1.2.2=py310h00e6091_0
- multidict =6.0.2=py310h5eee18b_0
- ncurses =6.4=h6a678d5_0
- nest-asyncio =1.5.6=pyhd8ed1ab_0
- nettle =3.7.3=hbbd107a_1
- nibabel =5.0.1=pypi_0
- nilearn =0.10.0=pypi_0
- nsight-compute =2023.1.0.15=0
- numpy =1.23.5=py310hd5efca6_0
- numpy-base =1.23.5=py310h8e6c178_0
- oauthlib =3.2.2=pyhd8ed1ab_0
- openh264 =2.1.1=h4ff587b_0
- openssl =1.1.1t=h7f8727e_0
- packaging =23.0=pyhd8ed1ab_0
- pandas =1.5.3=pypi_0
- parso =0.8.3=pyhd8ed1ab_0
- pexpect =4.8.0=pyh1a96a4e_2
- pickleshare =0.7.5=py_1003
- pillow =9.4.0=py310h6a678d5_0
- pip =22.3.1=py310h06a4308_0
- prompt-toolkit =3.0.38=pyha770c72_0
- prompt_toolkit =3.0.38=hd8ed1ab_0
- protobuf =3.20.3=py310h6a678d5_0
- psutil =5.9.0=py310h5eee18b_0
- ptyprocess =0.7.0=pyhd3deb0d_0
- pure_eval =0.2.2=pyhd8ed1ab_0
- pyasn1 =0.4.8=py_0
- pyasn1-modules =0.2.7=py_0
- pycparser =2.21=pyhd3eb1b0_0
- pygments =2.14.0=pyhd8ed1ab_0
- pyjwt =2.6.0=pyhd8ed1ab_0
- pyopenssl =23.0.0=py310h06a4308_0
- pysocks =1.7.1=py310h06a4308_0
- python =3.10.9=h7a1cb2a_1
- python-dateutil =2.8.2=pyhd8ed1ab_0
- python_abi =3.10=2_cp310
- pytorch =1.13.1=py3.10_cuda11.7_cudnn8.5.0_0
- pytorch-cuda =11.7=h67b0de4_1
- pytorch-mutex =1.0=cuda
- pytz =2022.7.1=pypi_0
- pyu2f =0.1.5=pyhd8ed1ab_0
- pyyaml =6.0=pypi_0
- pyzmq =23.2.0=py310h6a678d5_0
- readline =8.2=h5eee18b_0
- requests =2.28.1=py310h06a4308_0
- requests-oauthlib =1.3.1=pyhd8ed1ab_0
- rsa =4.9=pyhd8ed1ab_0
- scikit-learn =1.2.1=pypi_0
- scipy =1.10.1=pypi_0
- setuptools =65.6.3=py310h06a4308_0
- six =1.16.0=pyhd3eb1b0_1
- sqlite =3.40.1=h5082296_0
- stack_data =0.6.2=pyhd8ed1ab_0
- tensorboard =2.10.0=py310h06a4308_0
- tensorboard-data-server =0.6.1=py310h52d8a92_0
- tensorboard-plugin-wit =1.8.1=pyhd8ed1ab_0
- threadpoolctl =3.1.0=pypi_0
- timm =0.6.12=pypi_0
- tk =8.6.12=h1ccaba5_0
- torchaudio =0.13.1=py310_cu117
- torchvision =0.14.1=py310_cu117
- tornado =6.1=py310h5764c6d_3
- tqdm =4.65.0=pypi_0
- traitlets =5.9.0=pyhd8ed1ab_0
- typing_extensions =4.4.0=py310h06a4308_0
- tzdata =2022g=h04d1e81_0
- urllib3 =1.26.14=py310h06a4308_0
- wcwidth =0.2.6=pyhd8ed1ab_0
- werkzeug =2.1.2=pyhd8ed1ab_1
- wheel =0.38.4=py310h06a4308_0
- widgetsnbextension =4.0.6=pypi_0
- xz =5.2.10=h5eee18b_1
- yarl =1.7.2=py310h5764c6d_2
- zeromq =4.3.4=h9c3ff4c_1
- zipp =3.15.0=pyhd8ed1ab_0
- zlib =1.2.13=h5eee18b_0
- zstd =1.5.2=ha4553b6_0