|
|
| Image Attack and Defense |
| ============ |
| We introduce the usage of attacks and defense API in image package. |
|
|
| .. contents:: |
| :local: |
|
|
|
|
| Attack Example |
| ------------ |
|
|
| .. code-block:: python |
| |
| from deeprobust.image.attack.pgd import PGD |
| from deeprobust.image.config import attack_params |
| from deeprobust.image.utils import download_model |
| import torch |
| import deeprobust.image.netmodels.resnet as resnet |
|
|
| URL = "https://github.com/I-am-Bot/deeprobust_model/raw/master/CIFAR10_ResNet18_epoch_50.pt" |
| download_model(URL, "$MODEL_PATH$") |
|
|
| model = resnet.ResNet18().to('cuda') |
| model.load_state_dict(torch.load("$MODEL_PATH$")) |
| model.eval() |
|
|
| transform_val = transforms.Compose([transforms.ToTensor()]) |
| test_loader = torch.utils.data.DataLoader( |
| datasets.CIFAR10('deeprobust/image/data', train = False, download=True, |
| transform = transform_val), |
| batch_size = 10, shuffle=True) |
|
|
| x, y = next(iter(test_loader)) |
| x = x.to('cuda').float() |
|
|
| adversary = PGD(model, device) |
| Adv_img = adversary.generate(x, y, **attack_params['PGD_CIFAR10']) |
|
|
| Defense Example |
| ------------ |
|
|
| .. code-block:: python |
| |
| model = Net() |
| train_loader = torch.utils.data.DataLoader( |
| datasets.MNIST('deeprobust/image/defense/data', train=True, download=True, |
| transform=transforms.Compose([transforms.ToTensor()])), |
| batch_size=100, shuffle=True) |
| test_loader = torch.utils.data.DataLoader( |
| datasets.MNIST('deeprobust/image/defense/data', train=False, |
| transform=transforms.Compose([transforms.ToTensor()])), |
| batch_size=1000,shuffle=True) |
| |
| defense = PGDtraining(model, 'cuda') |
| defense.generate(train_loader, test_loader, **defense_params["PGDtraining_MNIST"]) |
|
|
|
|
|
|