Foolbox

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

Github星跟蹤圖

<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

主要指標

概覽
名稱與所有者bethgelab/foolbox
主編程語言Python
編程語言Python (語言數: 5)
平台
許可證MIT License
所有者活动
創建於2017-06-14 13:05:48
推送於2024-04-03 16:17:05
最后一次提交2024-03-04 16:46:26
發布數59
最新版本名稱v3.3.4 (發布於 )
第一版名稱v0.3 (發布於 )
用户参与
星數2.9k
關注者數46
派生數433
提交數1.7k
已啟用問題?
問題數373
打開的問題數23
拉請求數318
打開的拉請求數6
關閉的拉請求數43
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?