Awesome
FedReID
Code for ACMMM 2020 oral paper - Performance Optimization for Federated Person Re-identification via Benchmark Analysis
Personal re-identification is an important computer vision task, but its development is constrained by the increasing privacy concerns. Federated learning is a privacy-preserving machine learning technique that learns a shared model across decentralized clients. In this work, we implement federated learning to person re-identification (FedReID) and optimize its performance affected by statistical heterogeneity in the real-world scenario.
Algorithm: Federated Partial Averaging (FedPav)
<img src="images/fedpav-new.png" width="700">Prerequisite
- Install the libraries listed in requirements.txt
pip install -r requirements.txt
Datasets preparation
🎉 We are now releasing the processed datasets. (April, 2022)
Please email us (cc this email in case it is filtered as spam) to request for the datasets with:
- A short self-introduction.
- The purposes of using these datasets.
⚠️ Further distribution of the datasets are prohibited.
We use 9 popular ReID datasets for the benchmark. <img src="images/datasets.png" width="700">
Dataset Preprocess From Scratch
You can obtain the datasets from awesome-reid-dataset
Dataset folder structure after preprocessing is provided here
You can follow the following steps to preprocess datasets:
- Download all datasets to
data_preprocess/data
folder. - We provide the Json files for spliting the small datasets. (We haven't officially release the
split.json
files. Please send an email with short introduction to request for them.) - Run the following script to prepare all datasets:
python prepare_all_datasets.py
- Move the
data
folder to the root directory.move data_preprocess/data ./
- For federated-by-identity scenario:
python split_id_data.py
- For federated-by-camera scenario:
python split_camera_data.py
- For merging all datasets to do merge training, you can use
rename_dataset.py
andmix_datasets.py
.
Run the experiments
Remember to save the log file for later use!
-
Run Federated Partial Averaging (FedPav):
python main.py
-
Run FedPav with knowledge distillation (KD):
python main.py --kd --regularization
-
Run FedPav with cosine distance weight (CDW):
python main.py --cdw
-
Run FedPav with knowledge distillation and cosine distance weight:
python main.py --cdw --kd --regularization
Citation
@inproceedings{zhuang2020performance,
title={Performance Optimization of Federated Person Re-identification via Benchmark Analysis},
author={Zhuang, Weiming and Wen, Yonggang and Zhang, Xuesen and Gan, Xin and Yin, Daiying and Zhou, Dongzhan and Zhang, Shuai and Yi, Shuai},
booktitle={Proceedings of the 28th ACM International Conference on Multimedia},
pages={955--963},
year={2020}
}
@article{zhuang2023fedreid,
title={Optimizing performance of federated person re-identification: Benchmarking and analysis},
author={Zhuang, Weiming and Gan, Xin and Wen, Yonggang and Zhang, Shuai},
journal={ACM Transactions on Multimedia Computing, Communications and Applications},
volume={19},
number={1s},
pages={1--18},
year={2023},
publisher={ACM New York, NY}
}