é uma caixa de ferramentas Python para pesquisa de robustez adversária. As funcionalidades primárias são implementadas em Pytorch. Especificamente, o Advertorch contém módulos para gerar perturbações adversárias e defender contra exemplos adversários, também scripts para treinamento adversário.
Desenvolvemos o Advertorch sob Python 3.6 e Pytorch 1.0.0 e 0.4.1. Para instalar o Advertorch, basta executar
pip install advertorch
ou clonar o repositório e correr
python setup.py install
Para instalar o pacote no modo "editável":
pip install -e .
Alguns ataques são testados contra implementações no Foolbox ou Cleverhans para garantir a correção. Atualmente, eles são testados nas seguintes versões das bibliotecas relacionadas.
conda install -c anaconda tensorflow-gpu==1.11.0
pip install git+https://github.com/tensorflow/cleverhans.git@336b9f4ed95dccc7f0d12d338c2038c53786ab70
pip install Keras==2.2.2
pip install foolbox==1.3.2
# prepare your pytorch model as "model"
# prepare a batch of data and label as "cln_data" and "true_label"
# ...
from advertorch . attacks import LinfPGDAttack
adversary = LinfPGDAttack (
model , loss_fn = nn . CrossEntropyLoss ( reduction = "sum" ), eps = 0.3 ,
nb_iter = 40 , eps_iter = 0.01 , rand_init = True , clip_min = 0.0 , clip_max = 1.0 ,
targeted = False )
adv_untargeted = adversary . perturb ( cln_data , true_label )
target = torch . ones_like ( true_label ) * 3
adversary . targeted = True
adv_targeted = adversary . perturb ( cln_data , target ) Para exemplos executáveis, consulte advertorch_examples/tutorial_attack_defense_bpda_mnist.ipynb para como atacar e defender; Consulte advertorch_examples/tutorial_train_mnist.py para como treinar contraditório um modelo robusto no mnist.
A página da documentação está no ReadThedocs https://advertorch.readthedocs.io.
Advertorch ainda está em desenvolvimento ativo. Adicionaremos os seguintes recursos/itens no futuro:
FastFeatureAttack e JacobianSaliencyMapAttack não passam nos testes contra a versão de Cleverhans usada. (Eles costumam passar testes em uma versão anterior de Cleverhans.) Este problema está sendo investigado. No arquivo test_attacks_on_cleverhans.py , eles são marcados como "ignorados" nos testes pytest .
Este projeto está licenciado sob o LGPL. Os termos e condições podem ser encontrados nos arquivos License and License.GPL.
Se você usa o Advertorch em sua pesquisa, pedimos gentilmente que você cite o seguinte relatório técnico:
@article{ding2019advertorch,
title={{AdverTorch} v0.1: An Adversarial Robustness Toolbox based on PyTorch},
author={Ding, Gavin Weiguang and Wang, Luyu and Jin, Xiaomeng},
journal={arXiv preprint arXiv:1902.07623},
year={2019}
}