Foolbox

Python 工具箱,用于在 PyTorch、TensorFlow 和 JAX 中创建欺骗神经网络的对抗性示例。「A Python toolbox to create adversarial examples that fool neural networks in PyTorch, TensorFlow, and JAX」

Github stars Tracking Chart

<a href="https://foolbox.jonasrauber.de"><img src="https://raw.githubusercontent.com/bethgelab/foolbox/master/guide/.vuepress/public/logo_small.png" align="right" /></a>

image

image

image

image

Foolbox: Fast adversarial attacks to benchmark the robustness of machine learning models in PyTorch, TensorFlow, and JAX

Foolbox is a Python library that
lets you easily run adversarial attacks against machine learning models
like deep neural networks. It is built on top of EagerPy and works
natively with models in PyTorch,
TensorFlow, and
JAX.

🔥 Design

Foolbox 3 has been rewritten from scratch using
EagerPy instead of NumPy to
achieve native performance on models developed in PyTorch, TensorFlow
and JAX, all with one code base without code duplication.

  • Native Performance: Foolbox 3 is built on top of EagerPy and
    runs natively in PyTorch, TensorFlow, and JAX and comes with real
    batch support.
  • State-of-the-art attacks: Foolbox provides a large collection of
    state-of-the-art gradient-based and decision-based adversarial
    attacks.
  • Type Checking: Catch bugs before running your code thanks to
    extensive type annotations in Foolbox.

📖 Documentation

  • Guide: The best place to get started with Foolbox is the
    official guide.
  • Tutorial: If you are looking for a tutorial, check out this
    Jupyter
    notebook

    colab.
  • Documentation: The API documentation can be found on
    ReadTheDocs.

🚀 Quickstart

pip install foolbox

Foolbox is tested with Python 3.8 and newer - however, it will most
likely also work with version 3.6 - 3.8. To use it with
PyTorch,
TensorFlow, or
JAX, the respective framework needs to
be installed separately. These frameworks are not declared as
dependencies because not everyone wants to use and thus install all of
them and because some of these packages have different builds for
different architectures and CUDA versions. Besides that, all essential
dependencies are automatically installed.

You can see the versions we currently use for testing in the
Compatibility section below, but newer versions are
in general expected to work.

🎉 Example

import foolbox as fb

model = ...
fmodel = fb.PyTorchModel(model, bounds=(0, 1))

attack = fb.attacks.LinfPGD()
epsilons = [0.0, 0.001, 0.01, 0.03, 0.1, 0.3, 0.5, 1.0]
_, advs, success = attack(fmodel, images, labels, epsilons=epsilons)

More examples can be found in the examples folder, e.g. a
full ResNet-18 example.

📄 Citation

If you use Foolbox for your work, please cite our JOSS paper on Foolbox
Native (i.e., Foolbox 3.0)
and our
ICML workshop paper on Foolbox using
the following BibTeX entries:

@article{rauber2017foolboxnative,
  doi = {10.21105/joss.02607},
  url = {https://doi.org/10.21105/joss.02607},
  year = {2020},
  publisher = {The Open Journal},
  volume = {5},
  number = {53},
  pages = {2607},
  author = {Jonas Rauber and Roland Zimmermann and Matthias Bethge and Wieland Brendel},
  title = {Foolbox Native: Fast adversarial attacks to benchmark the robustness of machine learning models in PyTorch, TensorFlow, and JAX},
  journal = {Journal of Open Source Software}
}
@inproceedings{rauber2017foolbox,
  title={Foolbox: A Python toolbox to benchmark the robustness of machine learning models},
  author={Rauber, Jonas and Brendel, Wieland and Bethge, Matthias},
  booktitle={Reliable Machine Learning in the Wild Workshop, 34th International Conference on Machine Learning},
  year={2017},
  url={http://arxiv.org/abs/1707.04131},
}

👍 Contributions

We welcome contributions of all kind, please have a look at our
development
guidelines
. In
particular, you are invited to contribute new adversarial
attacks
. If
you would like to help, you can also have a look at the issues that are
marked with contributions
welcome
.

💡 Questions?

If you have a question or need help, feel free to open an issue on
GitHub. Once GitHub Discussions becomes publicly available, we will
switch to that.

💨 Performance

Foolbox 3.0 is much faster than Foolbox 1 and 2. A basic performance
comparison
can be found in the
[performance]{.title-ref} folder.

🐍 Compatibility

We currently test with the following versions:

  • PyTorch 1.10.1
  • TensorFlow 2.6.3
  • JAX 0.2.517
  • NumPy 1.18.1

Main metrics

Overview
Name With Ownerbethgelab/foolbox
Primary LanguagePython
Program languagePython (Language Count: 5)
Platform
License:MIT License
所有者活动
Created At2017-06-14 13:05:48
Pushed At2024-04-03 16:17:05
Last Commit At2024-03-04 16:46:26
Release Count59
Last Release Namev3.3.4 (Posted on )
First Release Namev0.3 (Posted on )
用户参与
Stargazers Count2.9k
Watchers Count46
Fork Count433
Commits Count1.7k
Has Issues Enabled
Issues Count373
Issue Open Count23
Pull Requests Count318
Pull Requests Open Count6
Pull Requests Close Count43
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private