est une boîte à outils Python pour la recherche sur la robustesse adversaire. Les fonctionnalités principales sont implémentées dans Pytorch. Plus précisément, Publiorch contient des modules pour générer des perturbations adversaires et défendre contre des exemples adversaires, également des scripts pour une formation contradictoire.
Nous avons développé Publiorch sous Python 3.6 et Pytorch 1.0.0 et 0.4.1. Pour installer Publiorch, exécutez simplement
pip install advertorch
ou cloner le repo et courir
python setup.py install
Pour installer le package en mode "modifiable":
pip install -e .
Certaines attaques sont testées contre les implémentations dans Foolbox ou Cleverhans pour assurer l'exactitude. Actuellement, ils sont testés sous les versions suivantes des bibliothèques connexes.
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 ) Pour les exemples de runnable, voir advertorch_examples/tutorial_attack_defense_bpda_mnist.ipynb pour comment attaquer et défendre; Voir advertorch_examples/tutorial_train_mnist.py pour comment former adversarialement un modèle robuste sur MNIST.
La page Web de documentation est sur ReadTheDocs https://advertorch.readthedocs.io.
Le publicité est toujours en cours de développement actif. Nous ajouterons les fonctionnalités / articles suivants sur la route:
FastFeatureAttack et JacobianSaliencyMapAttack ne réussissent pas les tests contre la version de Cleverhans utilisée. (Ils utilisent pour passer des tests sur une version précédente de Cleverhans.) Ce problème est en cours d'études. Dans le fichier test_attacks_on_cleverhans.py , ils sont marqués comme "ignorés" dans les tests pytest .
Ce projet est autorisé en vertu du LGPL. Les termes et conditions peuvent être trouvés dans les fichiers de licence et de licence.gpl.
Si vous utilisez Publicorch dans vos recherches, nous vous demandons de citer le rapport technique suivant:
@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}
}