Adversarial Lab is a unified Python library for launching adversarial attacks on any machine learning model. It is framework-agnostic, supporting both TensorFlow and PyTorch.
Key Features • Installation • Quick Start • Usage • Customization • Contributing • License
- Framework Agnostic: Works seamlessly with both TensorFlow and PyTorch.
- Wide Range of Attacks: Includes both black-box and white-box attack implementations.
- Customizable Loss Functions and Optimizers: Easily extendable to custom loss functions and optimization techniques.
- Noise Generators: Supports various noise generation methods to craft adversarial examples.
- Defenses: Built-in methods to evaluate and defend against adversarial attacks.
To install Adversarial Lab, you can use pip. The pip installation does not install tensorflow and pytorch. Both these libraries must be installed for Adversarial Lab to work.
pip install adversarial-lab
Here's a basic example to get you started with a white-box attack on a PyTorch model:
from PIL import Image
import tensorflow as tf
from tensorflow.keras.applications import InceptionV3
from adversarial_lab.attacks.whitebox import WhiteBoxMisclassification
image = Image.open('data/panda.jpg')
model = InceptionV3(weights='imagenet')
attacker = WhiteBoxMisclassification(model, "cce", "adam")
noise = attacker.attack(image_array, epochs=20, strategy="random", verbose=3)
Adversarial Lab supports a variety of adversarial attack techniques. Here's a brief overview:
- Black-Box Attacks: Located in
adversarial_lab/attacks/blackbox
- White-Box Attacks: Located in
adversarial_lab/attacks/whitebox
COMING SOON
Adversarial Lab is designed to be extensible. You can add your custom components in the following areas:
- Loss Functions: Create your own loss functions in
adversarial_lab/core/losses
. - Optimizers: Extend or modify optimizers in
adversarial_lab/core/optimizers
. - Noise Generators: Implement new noise generators under
adversarial_lab/core/noise_generators
.
We welcome contributions to Adversarial Lab! If you'd like to contribute, please follow these steps:
For detailed guidelines, see the CONTRIBUTING.md
file.
This project is licensed under the terms of the MIT license. See the LICENSE file for details.