|
|
|
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"]) |
|
|
|
|
|
|