Catalog PyPI
Back to packageRELEASE DETAILS

0.2.2

PyPI

adversarial-insight-ml

<p align="center"> <a href="https://uoa-compsci399-s2-2023.github.io/capstone-project-team-7/"> <img src="./images/logo.png" alt="AIML Logo" style=" width: 418px; height: 418px; max-width: 100%; height: auto; " > </a> </p> <h2 align="center">Adversarial Insight ML (AIML)</h2> <p align="center"> <a href="https://pypi.org/project/adversarial-insight-ml/"> <img src="https://badge.fury.io/py/adversarial-insight-ml.svg" alt="PyPI version" /> </a> <a href="https://www.python.org/downloads/"> <img src="https://img.shields.io/badge/python-3.9-blue.svg" alt="Python version" /> </a> <a href="https://opensource.org/licenses/MIT"> <img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License

Published15 Oct 2023
Direct dependencies14
Transitive dependenciesNot calculated

README

Version 0.2.2 documentation

AIML Logo

Adversarial Insight ML (AIML)

PyPI version Python version License Code style Documentation

“Why does your machine lie?”

Adversarial Insight ML (AIML) is a python package that evaluates the robustness of image classification models against adversarial attacks. AIML provides the functionality to automatically test your models against generated adversarial examples and outputs precise, insightful and robust feedback based on the several attack methods we have carefully chosen. Furthermore, AIML aims to be straightforward and beginner-friendly to allow non-technical users to take full advantage of its functionalities.

For more information, you can also visit the PyPI page and the documentation page.

Table of Contents

Installation

To install Adversarial Insight ML, you can use pip:

pip install adversarial-insight-ml

Usage

Here's a simple overview of the usage of our package:

img overview

You can evaluate your model with the evaluate() function:

from aiml.evaluation.evaluate import evaluate

evaluate(model, test_dataset)

The evaluate() function has two required parameters:

  • input_model (str or model): A string of the name of the machine learning model or the machine learning model itself.
  • input_test_data (str or dataset): A string of the name of the testing dataset or the testing dataset itself.

The evaluate() function has the following optional parameters:

  • input_train_data (str or dataset, optional): A string of the name of the training dataset or the training dataset itself (default is None).
  • input_shape (tuple, optional): Shape of input data (default is None).
  • clip_values (tuple, optional): Range of input data values (default is None).
  • nb_classes (int, optional): Number of classes in the dataset (default is None).
  • batch_size_attack (int, optional): Batch size for attack testing (default is 64).
  • num_threads_attack (int, optional): Number of threads for attack testing (default is 0).
  • batch_size_train (int, optional): Batch size for training data (default is 64).
  • batch_size_test (int, optional): Batch size for test data (default is 64).
  • num_workers (int, optional): Number of workers to use for data loading (default is half of the available CPU cores).
  • dry (bool, optional): When True, the code should only test one example.
  • attack_para_list (list, optional): List of parameter combinations for the attack.

See the demos in examples/ directory for usage in action:

Features

After evaluating your model with evaluate() function, we provide the following insights:

  • Summary of adversarial attacks performed, found in a text file named attack_evaluation_result.txt followed by date. For example: Result Example
  • Samples of the images can be found in a directory img/ followed by date, for example:

    img overview sample image

Contributing

Code Style
Always adhere to the PEP 8 style guide for writing Python code, allowing upto 99 characters per line as the absolute maximum. Alternatively, just use black.

Commit Messages
When making changes to the codebase, please refer to the Documentation/SubmittingPatches in the Git repo:

  • Write commit messages in present tense and imperative mood, e.g., "Add feature" instead of "Added feature" or "Adding feature."
  • Craft your messages as if you're giving orders to the codebase to change its behaviour.

Branching
We conform to a variation of the "GitHub Flow'' convention, but not strictly. For example, see the following types of branches:

  • main: This branch is always deployable and reflects the production state.
  • bugfix/*: For bug fixes.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

We extend our sincere appreciation to the following individuals who have been instrumental in the success of this project:

Firstly, our client Mr. Luke Chang. His invaluable guidance and insights guided us from the beginning through every phase, ensuring our work remained aligned with practical needs. This project would not have been possible without his efforts.

We'd also like to express our gratitude to Dr. Asma Shakil, who has coordinated and provided an opportunity for us to work together on this project.

Thank you for being part of this journey.

Warm regards, Team 7

Contacts

Sungjae Jang sjan260@aucklanduni.ac.nz
Takuya Saegusa tsae032@aucklanduni.ac.nz
Haozhe Wei hwei313@aucklanduni.ac.nz
Yuming Zhou yzho739@aucklanduni.ac.nz
Terence Zhang tzha820@aucklanduni.ac.nz

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 14

Native requirements
14 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
adversarial-robustness-toolbox
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
adversarial-robustness-toolboxruntime
torch
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
torchruntime
detectors
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
detectorsruntime
lightning
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
lightningruntime
torchmetrics
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
torchmetricsruntime
datasets
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
datasetsruntime
autopep8
Environment
{
  "extras": "",
  "marker": "extra == 'dev'",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
autopep8 ; extra == 'dev'runtime
bumpver
Environment
{
  "extras": "",
  "marker": "extra == 'dev'",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
bumpver ; extra == 'dev'runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == 'dev'",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
pytest ; extra == 'dev'runtime
sphinx
Environment
{
  "extras": "",
  "marker": "extra == 'dev'",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
sphinx ; extra == 'dev'runtime
sphinx-rtd-theme
Environment
{
  "extras": "",
  "marker": "extra == 'dev'",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
sphinx-rtd-theme ; extra == 'dev'runtime
scikit-learn
Environment
{
  "extras": "",
  "marker": "extra == 'dev'",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
scikit-learn ; extra == 'dev'runtime
jupyterlab
Environment
{
  "extras": "",
  "marker": "extra == 'dev'",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
jupyterlab ; extra == 'dev'runtime
pip-tools
Environment
{
  "extras": "",
  "marker": "extra == 'dev'",
  "requires_python": ">=3.8",
  "evaluation": "NOT_EVALUATED"
}
pip-tools ; extra == 'dev'runtime

Distribution files

2 collected
adversarial_insight_ml-0.2.2-py3-none-any.whl

bdist_wheel · 24.06 KB · Python py3

Source file
adversarial-insight-ml-0.2.2.tar.gz

sdist · 5,107.54 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:02 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:ccb5eaf840ec8dd9acf46daefdb4cb41d9d1f88a9d64d368de7ca17b9978f3fa

Other collected versions

View all collected versions →