LTS4 / SparseFool

A fast sparse attack on deep neural networks.
Apache License 2.0
50 stars 11 forks source link

SparseFool

This repository contains the official PyTorch implementation of SparseFool algorithm described in [1].

Requirements

To execute the code, please make sure that the following packages are installed:

Executing the demos

test_sparsefool.py

A simple demo that computes the sparse adversarial perturbation of a test image.

test_perceptibility.py

A simple demo that controls the perceptibility of the resulted perturbation of a test image.

Contents

sparsefool.py

This function implements the algorithm proposed in [1] using PyTorch to find sparse adversarial perturbations.

The parameters of the function are:

linear_solver.py

This function implements the algorithm proposed in [1] for solving the linearized box-constrained problem. It is used by sparsefool.py for solving the linearized problem.

deepfool.py

This function implements the algorithm proposed in [2] for computing adversarial perturbations. It is used by sparsefool.py for the linear approximation of the decision boundary.

utils.py

Includes general functions

data/

Contains some examples for the demos. The images where cropped to have square dimensions:

Reference

[1] A. Modas, S. Moosavi-Dezfooli, P. Frossard: SparseFool: a few pixels make a big difference. In Computer Vision and Pattern Recognition (CVPR ’19), IEEE, 2019.

[2] S. Moosavi-Dezfooli, A. Fawzi, P. Frossard: DeepFool: a simple and accurate method to fool deep neural networks. In Computer Vision and Pattern Recognition (CVPR ’16), IEEE, 2016.