This repository contains a script to train and test pre-trained ResNet models on different datasets using various attribution methods. The script supports adversarial training and provides options for customizing the training and evaluation process.
- Python 3.x
- PyTorch
- torchvision
- matplotlib
- argparse
-
Clone the repository:
git clone https://github.com/nielseni6/EvalAttAI.git cd EvalAttAI -
Install the required packages:
pip install -r requirements.txt
The script can be run from the command line with various arguments to customize the training and evaluation process.
--dataset: Dataset to use ([cifar10], [cifar100], or [mnist]). Default is [cifar10].--device: CUDA device to use (e.g., [0],0,1,2,3, or [cpu]). Default is [0].--train: Flag to indicate whether to train the model. Default is [False].--save-folder: Path to save the model weights. Default is [model_weights].--load-path: Path to load the model weights. Default is an empty string.--train-batch-size: Batch size for training. Default is [128].--test-batch-size: Batch size for testing. Default is [32].--num-workers: Number of worker threads for data loading. Default is [8].--alpha: Alpha value for input modification. Default is [0.1].--N: Number of iterations for input modification. Default is [10].--num-epochs: Number of epochs for training. Default is [10].--early-stop-patience: Number of epochs with no improvement after which training will be stopped. Default is [5].--model: Model to use (e.g., [resnet50], [resnet18]). Default is [resnet50].--adversarial: Flag to indicate whether to use adversarial training. Default is [False].--epsilon: Epsilon value for adversarial attack. Default is [0.1].--attack-type: Type of adversarial attack ([fgsm], [gaussian], or [pgd]). Default is [gaussian].--pgd-alpha: Alpha value for PGD attack. Default is [0.03].--pgd-num-iter: Number of iterations for PGD attack. Default is [10].--attr_methods: List of attribution methods to use ([VG], [GB], [IG], [SG], [GC], [random], [gradximage]). Default is['random', 'VG', 'gradximage', 'GB', 'IG', 'SG', 'GC'].--norm: Flag to indicate whether to normalize accuracies to the random method. Default is [True].
To train a ResNet-50 model on CIFAR-10 with adversarial training:
python train_and_test_evalattai.py --dataset cifar10 --train True --adversarial True --model resnet50To test a pre-trained ResNet-50 model on CIFAR-10:
python train_and_test_evalattai.py --dataset cifar10 --train False --model resnet50 --load-path path/to/weights.ptThe script will save the trained model weights to the specified folder and generate a plot of accuracies vs. number of iterations with confidence intervals for different attribution methods. The plot will be saved in the [figure] folder.
- This script uses models from the torchvision library.
- The adversarial training and evaluation methods are inspired by various research papers in the field of machine learning and computer vision.