Top3 solution code for AAAI2022 安全AI挑战者计划第八期:Data-Centric Robust Learning on ML Models.
- 5k images: Original cifar10 training set.
- 5k images: Original cifar10 training set with Gaussian noise.
- 10k images: Adversarial examples of the cifar10 training set attacked by AdvDrop. (5k for
preactresnet18and 5k forwideresnet. Similar to the following.) - 10k images: Adversarial examples of the cifar10 training set attacked by DeepFool.
- 10k images: Adversarial examples of the cifar10 training set attacked by PGD.
- 10k images: Adversarial examples of the cifar10 training set attacked by AutoAttack.
Total: 50k images.
pip install -r requirements.txt
- Change code at line 5 in
gen_dataset.py:train=True. - Get the original cifar10 training set
data.npyandlabel.npy:python gen_dataset.py - Change code at lines 14 and 29 in
config.py:'batch_size': 64 - Train the two model, get the trained model
preactresnet18.pth.tarandwideresnet.pth.tar:python train.py
python split.py
The training set will be split into 10 parts: data_1.npy, label_1.npy, data_2.npy, label_2.npy, ... , data_10.npy, label_10.npy.
Each part has 5k images.
cd naive
python naive.py
The data will be saved in data_naive.npy and label_naive.npy
- Change codes at lines 27-30 in 'AdvDrop-main/infod_sample.py'
data_npy = '../data_3.npy' label_npy = '../label_3.npy' arch = 'wideresnet' - Run and get solution dataset part
AdvDrop-main/advdrop_train_wideresnet.npycd AdvDrop-main python infod_sample.py - Change codes at lines 27-30 in 'AdvDrop-main/infod_sample.py'
data_npy = '../data_4.npy' label_npy = '../label_4.npy' arch = 'preactresnet18' - Run and get solution dataset part
AdvDrop-main/advdrop_train_preactresnet18.npycd AdvDrop-main python infod_sample.py
- Change codes at lines 24-27 in 'DeepFool/Python/test_deepfool.py'
data_npy = '../../data_5.npy' label_npy = '../../label_5.npy' arch = 'wideresnet' - Run and get solution dataset part
DeepFool/Python/deepfool_train_wideresnet.npycd DeepFool/Python python test_deepfool.py - Change codes at lines 24-27 in 'DeepFool/Python/test_deepfool.py'
data_npy = '../../data_6.npy' label_npy = '../../label_6.npy' arch = 'preactresnet18' - Run and get solution dataset part
DeepFool/Python/deepfool_train_preactresnet18.npycd DeepFool/Python python test_deepfool.py
- Change codes at lines 24-27 in 'pgd/pgd.py'
data_npy = '../data_7.npy' label_npy = '../label_7.npy' arch = 'wideresnet' - Run and get solution dataset part
pgd/pgd_train_wideresnet.npycd pgd python pgd.py - Change codes at lines 24-27 in 'pgd/pgd.py'
data_npy = '../data_8.npy' label_npy = '../label_8.npy' arch = 'preactresnet18' - Run and get solution dataset part
pgd/pgd_train_preactresnet18.npycd pgd python pgd.py
- Change codes at lines 24-27 in 'aa/aa.py'
data_npy = '../data_10.npy' label_npy = '../label_10.npy' arch = 'wideresnet' - Run and get solution dataset part
aa/aa_train_wideresnet.npycd aa python aa.py - Change codes at lines 24-27 in 'aa/aa.py'
data_npy = '../data_9.npy' label_npy = '../label_9.npy' arch = 'preactresnet18' - Run and get solution dataset part
aa/aa_train_preactresnet18.npycd aa python aa.py
python mix.py
The solution dataset will be saved and overwrite the original dataset file data.npy and label.npy.
Then retrain the two model.
Change code at lines 14 and 29 in config.py: 'batch_size': 48
python train.py
- Advdrop: https://github.com/RjDuan/AdvDrop
- DeepFool: https://github.com/LTS4/DeepFool
- torchattacks: https://adversarial-attacks-pytorch.readthedocs.io/en/latest/