Source code for attack.lira

from .badnet import BadNet

[docs]class LIRA(BadNet): r"""LIRA: Learnable, Imperceptible and Robust Backdoor Attacks basic structure: 1. config args, save_path, fix random seed 2. set the clean train data and clean test data 3. set the device, model, generator, criterion, optimizer, training schedule. 4. train the generator and classifier 5. fix the generator, train the classifier 6. save the attack result for defense .. code-block:: python attack = LIRA() attack.attack() .. Note:: @inproceedings{Doan2021lira, title = {LIRA: Learnable, Imperceptible and Robust Backdoor Attacks}, author = {Khoa D. Doan and Yingjie Lao and Weijie Zhao and Ping Li}, booktitle = {Proceedings of the IEEE International Conference on Computer Vision}, year = {2021}} Args: attack (string): name of attack, use to match the transform and set the saving prefix of path. attack_target (Int): target class No. in all2one attack attack_label_trans (str): which type of label modification in backdoor attack bd_yaml_path (string): path for yaml file provide additional default attributes random_crop (int): random crop size random_rotation (int): random rotation degree attack_model (string): use which generator model lr_atk (float): learning rate for generator eps (float): epsilon for generated noise in train test_eps (float): epsilon for generated noise in test alpha (float): clean loss and poison loss ratio in train test_alpha (float): clean loss and poison loss ratio in test finetune_lr (float): learning rate for finetune finetune_steplr_gamma (float): gamma for finetune scheduler finetune_steplr_milestones (list): milestones for finetune scheduler finetune_optimizer (string): optimizer for finetune scheduler both_train_epochs (int): epochs for train both generator and classifier train_epoch (int): epochs for train classifier verbose (bool): verbosity of log avoid_clsmodel_reinitialization (bool): whether to avoid reinitialization of clsmodel during training **kwargs (optional): Additional attributes. """