Home

Awesome

DRUPE

This repository is the source code for "Distribution Preserving Backdoor Attack in Self-supervised Learning" (S&P 2024).

Environment

See requirements.txt

Prepare Pretrained Encoders

Downloading the clean pretrained encoders in the link provided by Jia et al.: https://drive.google.com/drive/folders/1D8YxcBS4Lo5Da62IbPZrXMP_CA4aWHqL

For example download the pth file "output/cifar10/clean_encoder/model_1000.pth"

Running

For example, running our method on CIFAR-10 pretrained dataset and GTSRB downstream dataset:

python3 -u main.py \
--mode drupe \
--batch_size 256 \
--shadow_dataset cifar10 \
--pretrained_encoder ./output/cifar10/clean_encoder/model_1000.pth \
--encoder_usage_info cifar10 \
--downstream_dataset gtsrb \
--target_label 12 \
--gpu 0 \
--trigger_file ./trigger/trigger_pt_white_21_10_ap_replace.npz \
--lr 0.05 --epochs 120 \
--reference_file ./reference/gtsrb_l12_n3.npz 

Running baseline method:

python3 -u main.py \
--mode badencoder \
--batch_size 256 \
--shadow_dataset cifar10 \
--pretrained_encoder ./output/cifar10/clean_encoder/model_1000.pth \
--encoder_usage_info cifar10 \
--downstream_dataset gtsrb \
--target_label 12 \
--gpu 0 \
--trigger_file ./trigger/trigger_pt_white_21_10_ap_replace.npz \
--lr 0.05 --epochs 120 \
--reference_file ./reference/gtsrb_l12_n3.npz 

Acknowledgements

Part of the codes are modifed based on https://github.com/jinyuan-jia/BadEncoder.

Cite this work

You are encouraged to cite the following paper if you use the repo for academic research.

@inproceedings{tao2023distribution,
  title={Distribution preserving backdoor attack in self-supervised learning},
  author={Tao, Guanhong and Wang, Zhenting and Feng, Shiwei and Shen, Guangyu and Ma, Shiqing and Zhang, Xiangyu},
  booktitle={2024 IEEE Symposium on Security and Privacy (SP)},
  pages={29--29},
  year={2023},
  organization={IEEE Computer Society}
}