def get_attack(attack, fmodel): args = [] kwargs = {} # L0 if attack == 'SAPA': A = fa.SaltAndPepperNoiseAttack() elif attack == 'PA': A = fa.L1BrendelBethgeAttack() # L2 elif 'IGD' in attack: A = fa.L2BasicIterativeAttack() elif attack == 'AGNA': A = fa.L2AdditiveGaussianNoiseAttack() elif attack == 'BA': A = fa.BoundaryAttack() elif 'DeepFool' in attack: A = fa.L2DeepFoolAttack() elif attack == 'PAL2': A = fa.L2BrendelBethgeAttack() elif attack == "CWL2": A = fa.L2CarliniWagnerAttack() # L inf elif 'FGSM' in attack and not 'IFGSM' in attack: A = fa.FGSM() elif 'PGD' in attack: A = fa.LinfPGD() elif 'IGM' in attack: A = fa.LinfBrendelBethgeAttack() else: raise Exception('Not implemented') return A, 0, 0, 0
AttackTestTarget(fa.LinfDeepFoolAttack(steps=50), uses_grad=True), AttackTestTarget(fa.BoundaryAttack(steps=50)), AttackTestTarget( fa.BoundaryAttack( steps=110, init_attack=fa.LinearSearchBlendedUniformNoiseAttack(steps=50), update_stats_every_k=1, )), AttackTestTarget(fa.SaltAndPepperNoiseAttack(steps=50), None, uses_grad=True), AttackTestTarget(fa.SaltAndPepperNoiseAttack(steps=50, channel_axis=1), None, uses_grad=True), AttackTestTarget(fa.LinearSearchBlendedUniformNoiseAttack(steps=50), None), AttackTestTarget(fa.L2AdditiveGaussianNoiseAttack(), 2500.0), AttackTestTarget(fa.L2ClippingAwareAdditiveGaussianNoiseAttack(), 500.0), AttackTestTarget(fa.LinfAdditiveUniformNoiseAttack(), 10.0), AttackTestTarget( fa.L2RepeatedAdditiveGaussianNoiseAttack(check_trivial=False), 1000.0), AttackTestTarget( fa.L2ClippingAwareRepeatedAdditiveGaussianNoiseAttack( check_trivial=False), 200.0, ), AttackTestTarget(fa.L2RepeatedAdditiveGaussianNoiseAttack(), 1000.0), AttackTestTarget(fa.L2ClippingAwareRepeatedAdditiveGaussianNoiseAttack(), 200.0), AttackTestTarget(fa.L2RepeatedAdditiveUniformNoiseAttack(), 1000.0), AttackTestTarget(fa.L2ClippingAwareRepeatedAdditiveUniformNoiseAttack(), 200.0),
(fa.LinfDeepFoolAttack(steps=50), None, True, False), (fa.BoundaryAttack(steps=50), None, False, False), ( fa.BoundaryAttack( steps=110, init_attack=fa.LinearSearchBlendedUniformNoiseAttack(steps=50), update_stats_every_k=1, ), None, False, False, ), (fa.SaltAndPepperNoiseAttack(steps=50), None, True, False), (fa.SaltAndPepperNoiseAttack(steps=50, channel_axis=1), None, True, False), (fa.LinearSearchBlendedUniformNoiseAttack(steps=50), None, False, False), (fa.L2AdditiveGaussianNoiseAttack(), 2500.0, False, False), (fa.LinfAdditiveUniformNoiseAttack(), 10.0, False, False), ( fa.L2RepeatedAdditiveGaussianNoiseAttack(check_trivial=False), 1000.0, False, False, ), (fa.L2RepeatedAdditiveGaussianNoiseAttack(), 1000.0, False, False), (fa.L2RepeatedAdditiveUniformNoiseAttack(), 1000.0, False, False), (fa.LinfRepeatedAdditiveUniformNoiseAttack(), 3.0, False, False), ] @pytest.mark.parametrize("attack_eps_grad_real", attacks, ids=get_attack_id) def test_untargeted_attacks(
fa.SaltAndPepperNoiseAttack(steps=50), None, uses_grad=True, stochastic_attack=True, ), AttackTestTarget( fa.SaltAndPepperNoiseAttack(steps=50, channel_axis=1), None, uses_grad=True, stochastic_attack=True, ), AttackTestTarget( fa.LinearSearchBlendedUniformNoiseAttack(steps=50), None, stochastic_attack=True ), AttackTestTarget( fa.L2AdditiveGaussianNoiseAttack(), 3000.0, stochastic_attack=True ), AttackTestTarget( fa.L2ClippingAwareAdditiveGaussianNoiseAttack(), 500.0, stochastic_attack=True ), AttackTestTarget(fa.LinfAdditiveUniformNoiseAttack(), 10.0, stochastic_attack=True), AttackTestTarget( fa.L2RepeatedAdditiveGaussianNoiseAttack(check_trivial=False), 1000.0, stochastic_attack=True, ), AttackTestTarget( fa.L2ClippingAwareRepeatedAdditiveGaussianNoiseAttack(check_trivial=False), 200.0, stochastic_attack=True, ),