From c35f8f21d6b95cdd938639f53650659f2d69b6d9 Mon Sep 17 00:00:00 2001 From: spencerwooo Date: Wed, 8 May 2024 05:24:53 +0000 Subject: [PATCH] Rename attack runner helper --- src/torchattack/admix.py | 2 +- src/torchattack/deepfool.py | 2 +- src/torchattack/difgsm.py | 2 +- src/torchattack/fgsm.py | 2 +- src/torchattack/fia.py | 2 +- src/torchattack/geoda.py | 2 +- src/torchattack/mifgsm.py | 2 +- src/torchattack/nifgsm.py | 2 +- src/torchattack/pgd.py | 2 +- src/torchattack/pgdl2.py | 2 +- src/torchattack/{utils.py => runner.py} | 25 ++++++++++++++++--------- src/torchattack/sinifgsm.py | 2 +- src/torchattack/tifgsm.py | 2 +- src/torchattack/vmifgsm.py | 2 +- src/torchattack/vnifgsm.py | 2 +- 15 files changed, 30 insertions(+), 23 deletions(-) rename src/torchattack/{utils.py => runner.py} (88%) diff --git a/src/torchattack/admix.py b/src/torchattack/admix.py index 86432b1..15adc48 100644 --- a/src/torchattack/admix.py +++ b/src/torchattack/admix.py @@ -131,6 +131,6 @@ def x_admix(x: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(Admix, {'eps': 8 / 255, 'steps': 10}) diff --git a/src/torchattack/deepfool.py b/src/torchattack/deepfool.py index 0c1fab7..a6dea80 100644 --- a/src/torchattack/deepfool.py +++ b/src/torchattack/deepfool.py @@ -176,6 +176,6 @@ def _atleast_kd(self, x: torch.Tensor, k: int) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(DeepFool, attack_cfg={'steps': 50, 'overshoot': 0.02}, model='resnet152') diff --git a/src/torchattack/difgsm.py b/src/torchattack/difgsm.py index 1463a04..75884d1 100644 --- a/src/torchattack/difgsm.py +++ b/src/torchattack/difgsm.py @@ -162,7 +162,7 @@ def input_diversity( if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack cfgs = {'eps': 16 / 255, 'steps': 10, 'resize_rate': 0.9, 'diversity_prob': 1.0} run_attack(DIFGSM, attack_cfg=cfgs) diff --git a/src/torchattack/fgsm.py b/src/torchattack/fgsm.py index 5ab5984..47b0623 100644 --- a/src/torchattack/fgsm.py +++ b/src/torchattack/fgsm.py @@ -78,6 +78,6 @@ def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(FGSM, {'eps': 8 / 255, 'clip_min': 0.0, 'clip_max': 1.0}) diff --git a/src/torchattack/fia.py b/src/torchattack/fia.py index bc84c95..36d2e8d 100644 --- a/src/torchattack/fia.py +++ b/src/torchattack/fia.py @@ -163,6 +163,6 @@ def __backward_hook(self, m: nn.Module, i: torch.Tensor, o: torch.Tensor): if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(FIA, {'eps': 8 / 255, 'steps': 10, 'feature_layer': 'layer2'}) diff --git a/src/torchattack/geoda.py b/src/torchattack/geoda.py index 3395333..691d4bb 100644 --- a/src/torchattack/geoda.py +++ b/src/torchattack/geoda.py @@ -365,6 +365,6 @@ def is_adv(self, x_adv: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(GeoDA, {'epsilon': 4, 'p': 'l2', 'max_queries': 4000}, batch_size=2) diff --git a/src/torchattack/mifgsm.py b/src/torchattack/mifgsm.py index ec9bf8c..1bd9c29 100644 --- a/src/torchattack/mifgsm.py +++ b/src/torchattack/mifgsm.py @@ -101,6 +101,6 @@ def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(MIFGSM, {'eps': 8 / 255, 'steps': 10}) diff --git a/src/torchattack/nifgsm.py b/src/torchattack/nifgsm.py index 7f0f40c..331508c 100644 --- a/src/torchattack/nifgsm.py +++ b/src/torchattack/nifgsm.py @@ -109,6 +109,6 @@ def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(NIFGSM, {'eps': 8 / 255, 'steps': 10}) diff --git a/src/torchattack/pgd.py b/src/torchattack/pgd.py index 48b0e9f..14eec0e 100644 --- a/src/torchattack/pgd.py +++ b/src/torchattack/pgd.py @@ -104,6 +104,6 @@ def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(PGD, {'eps': 8 / 255, 'steps': 20, 'random_start': True}) diff --git a/src/torchattack/pgdl2.py b/src/torchattack/pgdl2.py index 042a226..1eec7f1 100644 --- a/src/torchattack/pgdl2.py +++ b/src/torchattack/pgdl2.py @@ -119,6 +119,6 @@ def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(PGDL2, {'eps': 1.0, 'steps': 10, 'random_start': False}) diff --git a/src/torchattack/utils.py b/src/torchattack/runner.py similarity index 88% rename from src/torchattack/utils.py rename to src/torchattack/runner.py index 20959be..699cf8b 100644 --- a/src/torchattack/utils.py +++ b/src/torchattack/runner.py @@ -1,4 +1,18 @@ -def run_attack(attack, attack_cfg, model='resnet50', samples=100, batch_size=8) -> None: +from contextlib import suppress + +import torch +import torchvision as tv + +from torchattack.dataset import NIPSLoader + + +def run_attack( + attack, + attack_cfg, + model: str = 'resnet50', + samples: int = 100, + batch_size: int = 8, +) -> None: """Helper function to run attacks in `__main__`. Example: @@ -10,17 +24,10 @@ def run_attack(attack, attack_cfg, model='resnet50', samples=100, batch_size=8) Args: attack: The attack class to initialize. attack_cfg: A dict of keyword arguments passed to the attack class. - model: The model to attack. Defaults to "resnet50". + model: The torchvision model to attack. Defaults to "resnet50". samples: Max number of samples to attack. Defaults to 100. """ - from contextlib import suppress - - import torch - import torchvision as tv - - from torchattack.dataset import NIPSLoader - # Try to import rich for progress bar with suppress(ImportError): from rich import print diff --git a/src/torchattack/sinifgsm.py b/src/torchattack/sinifgsm.py index 717b7d5..054721f 100644 --- a/src/torchattack/sinifgsm.py +++ b/src/torchattack/sinifgsm.py @@ -121,6 +121,6 @@ def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(SINIFGSM, {'eps': 8 / 255, 'steps': 10, 'm': 3}) diff --git a/src/torchattack/tifgsm.py b/src/torchattack/tifgsm.py index a8fd8bb..1a661a6 100644 --- a/src/torchattack/tifgsm.py +++ b/src/torchattack/tifgsm.py @@ -141,6 +141,6 @@ def gkern(kern_len: int = 15, n_sig: int = 3) -> np.ndarray: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(TIFGSM, {'eps': 8 / 255, 'steps': 10, 'kern_len': 15, 'n_sig': 3}) diff --git a/src/torchattack/vmifgsm.py b/src/torchattack/vmifgsm.py index 9b2e82b..f319087 100644 --- a/src/torchattack/vmifgsm.py +++ b/src/torchattack/vmifgsm.py @@ -136,6 +136,6 @@ def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(VMIFGSM, {'eps': 8 / 255, 'steps': 10, 'n': 5, 'beta': 1.5}) diff --git a/src/torchattack/vnifgsm.py b/src/torchattack/vnifgsm.py index 9a6e894..4696835 100644 --- a/src/torchattack/vnifgsm.py +++ b/src/torchattack/vnifgsm.py @@ -139,6 +139,6 @@ def forward(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: if __name__ == '__main__': - from torchattack.utils import run_attack + from torchattack.runner import run_attack run_attack(VNIFGSM, {'eps': 8 / 255, 'steps': 10, 'n': 5, 'beta': 1.5})