All Projects → Hyperparticle → One Pixel Attack Keras

Hyperparticle / One Pixel Attack Keras

Licence: mit
Keras implementation of "One pixel attack for fooling deep neural networks" using differential evolution on Cifar10 and ImageNet

Projects that are alternatives of or similar to One Pixel Attack Keras

Self Driving Car
A End to End CNN Model which predicts the steering wheel angle based on the video/image
Stars: ✭ 106 (-90.34%)
Mutual labels:  jupyter-notebook, cnn, image-processing
Keras basic
keras를 이용한 딥러닝 기초 학습
Stars: ✭ 39 (-96.44%)
Mutual labels:  jupyter-notebook, cnn
Opencv Tutorials
Tutorials for learning OpenCV in Python from Scratch
Stars: ✭ 36 (-96.72%)
Mutual labels:  jupyter-notebook, image-processing
Tensorflow Lite Rest Server
Expose tensorflow-lite models via a rest API
Stars: ✭ 43 (-96.08%)
Mutual labels:  jupyter-notebook, image-processing
Dl Colab Notebooks
Try out deep learning models online on Google Colab
Stars: ✭ 969 (-11.67%)
Mutual labels:  jupyter-notebook, cnn
Neural Networks
All about Neural Networks!
Stars: ✭ 34 (-96.9%)
Mutual labels:  jupyter-notebook, cnn
Computervision Recipes
Best Practices, code samples, and documentation for Computer Vision.
Stars: ✭ 8,214 (+648.77%)
Mutual labels:  jupyter-notebook, image-processing
Kaggle Web Traffic Time Series Forecasting
Solution to Kaggle - Web Traffic Time Series Forecasting
Stars: ✭ 29 (-97.36%)
Mutual labels:  jupyter-notebook, cnn
Face Identification With Cnn Triplet Loss
Face identification with cnn+triplet-loss written by Keras.
Stars: ✭ 45 (-95.9%)
Mutual labels:  jupyter-notebook, cnn
Gait Recognition
Distance Recognition of a Human Being with Deep CNN's
Stars: ✭ 51 (-95.35%)
Mutual labels:  cnn, image-processing
Lung Diseases Classifier
Diseases Detection from NIH Chest X-ray data
Stars: ✭ 52 (-95.26%)
Mutual labels:  jupyter-notebook, cnn
Geemap
A Python package for interactive mapping with Google Earth Engine, ipyleaflet, and folium
Stars: ✭ 959 (-12.58%)
Mutual labels:  jupyter-notebook, image-processing
Gaze Estimation
A deep learning based gaze estimation framework implemented with PyTorch
Stars: ✭ 33 (-96.99%)
Mutual labels:  jupyter-notebook, cnn
Relativistic Average Gan Keras
The implementation of Relativistic average GAN with Keras
Stars: ✭ 36 (-96.72%)
Mutual labels:  jupyter-notebook, cifar10
Qa Rankit
QA - Answer Selection (Rank candidate answers for a given question)
Stars: ✭ 30 (-97.27%)
Mutual labels:  jupyter-notebook, cnn
Yann
This toolbox is support material for the book on CNN (http://www.convolution.network).
Stars: ✭ 41 (-96.26%)
Mutual labels:  jupyter-notebook, cnn
Imagenet
Trial on kaggle imagenet object localization by yolo v3 in google cloud
Stars: ✭ 56 (-94.9%)
Mutual labels:  jupyter-notebook, imagenet
Servenet
Service Classification based on Service Description
Stars: ✭ 21 (-98.09%)
Mutual labels:  jupyter-notebook, cnn
Deep learning projects
Stars: ✭ 28 (-97.45%)
Mutual labels:  jupyter-notebook, image-processing
Svhn Cnn
Google Street View House Number(SVHN) Dataset, and classifying them through CNN
Stars: ✭ 44 (-95.99%)
Mutual labels:  jupyter-notebook, cnn

One Pixel Attack

Open In Colab Contributions welcome MIT License

Who would win?

How simple is it to cause a deep neural network to misclassify an image if an attacker is only allowed to modify the color of one pixel and only see the prediction probability? Turns out it is very simple. In many cases, an attacker can even cause the network to return any answer they want.

The following project is a Keras reimplementation and tutorial of "One pixel attack for fooling deep neural networks". The official code for the paper can be found here.

How It Works

For this attack, we will use the Cifar10 dataset. The task of the dataset is to correctly classify a 32x32 pixel image in 1 of 10 categories (e.g., bird, deer, truck). The black-box attack requires only the probability labels (the probability value for each category) that get outputted by the neural network. We generate adversarial images by selecting a pixel and modifying it to a certain color.

By using an Evolutionary Algorithm called Differential Evolution (DE), we can iteratively generate adversarial images to try to minimize the confidence (probability) of the neural network's classification.

Ackley GIF

Credit: Pablo R. Mier's Blog

First, generate several adversarial samples that modify a random pixel and run the images through the neural network. Next, combine the previous pixels' positions and colors together, generate several more adversarial samples from them, and run the new images through the neural network. If there were pixels that lowered the confidence of the network from the last step, replace them as the current best known solutions. Repeat these steps for a few iterations; then on the last step return the adversarial image that reduced the network's confidence the most. If successful, the confidence would be reduced so much that a new (incorrect) category now has the highest classification confidence.

See below for some examples of successful attacks:

Examples

Getting Started

Need a GPU or just want to read? View the first tutorial notebook with Google Colab.

To run the code in the tutorial locally, a dedicated GPU suitable for running with Keras (tensorflow-gpu) is recommended. Python 3.5+ required.

  1. Clone the repository.
git clone https://github.com/Hyperparticle/one-pixel-attack-keras
cd ./one-pixel-attack-keras
  1. Install the python packages in requirements.txt if you don't have them already.
pip install -r ./requirements.txt
  1. Run the iPython tutorial notebook with Jupyter.
jupyter notebook ./one-pixel-attack.ipynb

Training and Testing

To train a model, run train.py. The model will be checkpointed (saved) after each epoch to the networks/models directory.

For example, to train a ResNet with 200 epochs and a batch size of 128:

python train.py --model resnet --epochs 200 --batch_size 128

To perform attack, run attack.py. By default this will run all models with default parameters. To specify the types of models to test, use --model.

python attack.py --model densenet capsnet

The available models currently are:

Results

Preliminary results after running several experiments on various models. Each experiment generates 100 adversarial images and calculates the attack success rate, i.e., the ratio of images that successfully caused the model to misclassify an image over the total number of images. For a given model, multiple experiments are run based on the number of pixels that may be modified in an image (1,3, or 5). The differential algorithm was run with a population size of 400 and a max iteration count of 75.

Attack on 1,3,5 pixel perturbations (100 samples)

model parameters test accuracy pixels attack success (untargeted) attack success (targeted)
LeNet 62K 74.9% 1 63.0% 34.4%
3 92.0% 64.4%
5 93.0% 64.4%
Pure CNN 1.4M 88.8% 1 13.0% 6.67%
3 58.0% 13.3%
5 63.0% 18.9%
Network in Network 970K 90.8% 1 34.0% 10.0%
3 73.0% 24.4%
5 73.0% 31.1%
ResNet 470K 92.3% 1 34.0% 14.4%
3 79.0% 21.1%
5 79.0% 22.2%
DenseNet 850K 94.7% 1 31.0% 4.44%
3 71.0% 23.3%
5 69.0% 28.9%
Wide ResNet 11M 95.3% 1 19.0% 1.11%
3 58.0% 18.9%
5 65.0% 22.2%
CapsNet 12M 79.8% 1 19.0% 0.00%
3 39.0% 4.44%
5 36.0% 4.44%

It appears that the capsule network CapsNet, while more resilient to the one pixel attack than all other CNNs, is still vulnerable.

Milestones

  • [x] Cifar10 dataset
  • [x] Tutorial notebook
  • [x] LeNet, Network in Network, Residual Network, DenseNet models
  • [x] CapsNet (capsule network) model
  • [x] Configurable command-line interface
  • [x] Efficient differential evolution implementation
  • [x] ImageNet dataset
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].