Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Implementation of Papers on Adversarial Examples

NotificationsYou must be signed in to change notification settings

sarathknv/adversarial-examples-pytorch

Repository files navigation

Implementation of papers with real-time visualizations and parameter control.

Dependencies

  • Python3
  • PyTorch (built from source)
  • OpenCV
  • NumPy
  • SciPy
  • TensorBoard

Contents


Random Perturbations

From one of the first papers on Adversarial examples -Explaining and Harnessing Adversarial Examples,

The direction of perturbation, rather than the specific point in space, matters most. Space isnot full of pockets of adversarial examples that finely tile the reals like the rational numbers.

This project examines this idea by testing the robustness of a DNN to randomly generated perturbations.

Usage

$ python3 explore_space.py --img images/horse.png

Demo

fgsm.gif

This code adds to the input image (img) a randomly generated perturbation (vec1) which is subjected to a max norm constrainteps. This adversarial image lies on a hypercube centerd around the original image. To explore a region (a hypersphere) around the adversarial image (img + vec1), we add to it another perturbation (vec2) which is constrained by L2 normrad.
Pressing keyse andr generates newvec1 andvec2 respectively.

Random Perturbations

The classifier is robust to these random perturbations even though they have severely degraded the image. Perturbations are clearly noticeable and have significantly higher max norm.

horse_exploreautomobile_exploretruck_explore
horseautomobile:truck :

In above images, there is no change in class labels and very small drops in probability.

FGSM Perturbations

A properly directed perturbation with max norm as low as 3, which is almost imperceptible, can fool the classifier.

horse_scaledhorse_adversarialperturbation
horsepredicted -dogperturbation(eps = 6)


Fast Gradient Sign Method (FGSM)

Paper

Usage

  • Run the script
$ python3 fgsm_mnist.py --img one.jpg --gpu
$ python3 fgsm_imagenet.py --img goldfish.jpg --model resnet18 --gpu

fgsm_mnsit.py - for attack on custom model trained on MNIST whose weights are9920.pth.tar.
fgsm_imagenet - for pretrained imagenet models - resnet18, resnet50 etc.

  • Control keys
    • use trackbar to changeepsilon (max norm)
    • esc - close
    • s - save perturbation and adversarial image

Demo

fgsm.gif

Results

MNIST

Adversarial ImagePerturbation
Pred: 4eps: 38
Pred: 7eps: 60
Pred: 8eps: 42
Pred: 8eps: 12
Pred: 9eps: 17


Basic Iterative Method (Targeted and Untargeted)

Paper:Adversarial examples in the physical world

Usage

  • Run the script
$ python3 iterative.py --img images/goldfish.jpg --model resnet18 --target 4# If argument 'target' is not specified, it is untargeted attack
  • Control keys
    • use trackbar to changeepsilon (max norm of perturbation) anditer (number of iterations)
    • esc close andspace to pause
    • s save perturbation and adversarial image

Demo

iterative.gif



One Pixel Attack for Fooling Deep Neural Networks

Paper

Existence of single pixel adversarial perturbations suggest that the assumption made inExplaining and Harnessing Adversarial Examples that small additive perturbation on the values of many dimensions will accumulate and cause huge change to the output, might not be necessary for explaining why natural images are sensitive to small perturbations.

Usage

$ python3 one_pixel.py --img airplane.jpg --d 3 --iters 600 --popsize 10

d is number of pixels to change (L0 norm)
iters andpopsize are paprameters forDifferential Evolution

Results

Attacks are typically successful for images with low confidence. For successful attacks on high confidence images increased, i.e., number of pixels to perturb.

airplanebirdcatfroghorse
bird [0.8075]deer [0.8933]frog [0.8000]bird [0.6866]deer [0.9406]


AdvGAN - Generating Adversarial Examples with Adversarial Networks

Paper | IJCAI 2018

Usage

Inference

$ python3 advgan.py --img images/0.jpg --target 4 --model Model_C --bound 0.3

Each of these settings has a separate Generator trained. This code loads appropriate trained model fromsaved/ directory based on given arguments. As of now there are 22 Generators for different targets, different bounds (0.2 and 0.3) and target models (onlyModel_C for now).

Training AdvGAN (Untargeted)

$ python3 train_advgan.py --model Model_C --gpu

Training AdvGAN (Targeted)

$ python3 train_advgan.py --model Model_C --target 4 --thres 0.3 --gpu# thres: Perturbation bound

Use--help for other arguments available (epochs,batch_size,lr etc.)

Training Target Models (Models A, B and C)

$ python3 train_target_models.py --model Model_C

For TensorBoard visualization,

$ python3 generators.py$ python3 discriminators.py

This code supports only MNIST dataset for now. Same notations as in paper are followed (mostly).

Results

There are few changes that have been made for model to work.

  • Generator in paper hasReLU on the last layer. If input data is normalized to [-1 1] there wouldn't be any perturbation in the negative region. As expected accuracies were poor (~10% Untargeted). SoReLU was removed. Also, data normalization had significat effect on performance. With [-1 1] accuracies were around 70%. But with [0 1] normalization accuracies were ~99%.
  • Perturbations (pert) and adversarial images (x + pert) were clipped. It's not converging otherwise.

These results are for the following settings.

  • Dataset - MNIST
  • Data normalization - [0 1]
  • thres (perturbation bound) - 0.3 and 0.2
  • NoReLU at the end in Generator
  • Epochs - 15
  • Batch Size - 128
  • LR Scheduler -step_size 5,gamma 0.1 and initiallr - 0.001
TargetAcc [thres: 0.3]Acc [thres: 0.2]
Untargeted0.99210.8966
00.96430.4330
10.98220.4749
20.99610.8499
30.99390.8696
40.98330.6293
50.99180.7968
60.95840.4652
70.98990.6866
80.99430.8430
90.99220.7610

Untargeted

Pred: 9Pred: 3Pred: 8Pred: 8Pred: 4Pred: 3Pred: 8Pred: 3Pred: 3Pred: 8

Targeted

Target: 0Target: 1Target: 2Target: 3Target: 4Target: 5Target: 6Target: 7Target: 8Target: 9
Pred: 0Pred: 1Pred: 2Pred: 3Pred: 4Pred: 5Pred: 6Pred: 7Pred: 8Pred: 9
Pred: 0Pred: 1Pred: 2Pred: 3Pred: 4Pred: 5Pred: 6Pred: 7Pred: 8Pred: 9
Pred: 0Pred: 1Pred: 2Pred: 3Pred: 4Pred: 5Pred: 6Pred: 7Pred: 8Pred: 9


Spatially Transformed Adversarial Examples

Paper | ICLR 2018
ReferView Synthesis by Appearance Flow for clarity.

Usage

$ python3 stadv.py --img images/1.jpg --target 7

Requires OpenCV for real-time visualization.

Demo

0_11_22_33_44_55_66_77_88_99_0

Results

MNIST

Column index is target label and ground truth images are along diagonal.

tile




[8]ページ先頭

©2009-2025 Movatter.jp