ART-Adversarial Robustness Toolbox检测AI模型及对抗攻击的工具

news2024/11/19 19:42:57

一、工具简介

Adversarial Robustness Toolbox 是 IBM 研究团队开源的用于检测模型及对抗攻击的工具箱,为开发人员加强 AI模型被误导的防御性,让 AI 系统变得更加安全,ART支持所有流行的机器学习框架 (TensorFlow,Keras,PyTorch,MXNet,scikit-learn,XGBoost,LightGBM,CatBoost,GPy等),所有数据类型 (图像,表格,音频,视频等)和机器学习任务(分类,物体检测,语音识别, 生成模型,认证等)。

支持以下攻击方法:

  • Deep Fool
  • Fast Gradient Method
  • Jacobian Saliency Map
  • Universal Perturbation
  • Virtual Adversarial Method
  • C&W Attack
  • NewtonFool

支持以下防御方法:

  • Feature squeezing
  • Spatial smoothing
  • Label smoothing
  • Adversarial training
  • Virtual adversarial training

github地址:https://github.com/Trusted-AI/adversarial-robustness-toolbox

Get StartedDocumentationContributing
- Installation
- Examples
- Notebooks
- Attacks
- Defences
- Estimators
- Metrics
- Technical Documentation
- Slack, Invitation
- Contributing
- Roadmap
- Citing

二、实际应用-攻击样本生成

2.1、手写数字

攻击脚本:

import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import numpy as np
import matplotlib.pyplot as plt

from art.attacks.evasion import FastGradientMethod
from art.estimators.classification import PyTorchClassifier
from art.utils import load_mnist
import warnings

warnings.filterwarnings("ignore")


class Net(nn.Module):
    """
    定义初始模型
    """

    def __init__(self):
        super(Net, self).__init__()
        self.conv_1 = nn.Conv2d(in_channels=1, out_channels=4, kernel_size=5, stride=1)
        self.conv_2 = nn.Conv2d(in_channels=4, out_channels=10, kernel_size=5, stride=1)
        self.fc_1 = nn.Linear(in_features=4 * 4 * 10, out_features=100)
        self.fc_2 = nn.Linear(in_features=100, out_features=10)

    def forward(self, x):
        x = F.relu(self.conv_1(x))
        x = F.max_pool2d(x, 2, 2)
        x = F.relu(self.conv_2(x))
        x = F.max_pool2d(x, 2, 2)
        x = x.view(-1, 4 * 4 * 10)
        x = F.relu(self.fc_1(x))
        x = self.fc_2(x)
        return x


if __name__ == '__main__':
    # 导入ART自带的MNIST数据集
    (x_train, y_train), (x_test, y_test), min_pixel_value, max_pixel_value = load_mnist()
    x_train = np.swapaxes(x_train, 1, 3).astype(np.float32)
    x_test = np.swapaxes(x_test, 1, 3).astype(np.float32)

    # 创建模型
    model = Net()
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.Adam(model.parameters(), lr=0.01)

    # 创建并训练ART分类器,注意:框架内置的调用方式训练模型
    classifier = PyTorchClassifier(
        model=model,
        clip_values=(min_pixel_value, max_pixel_value),
        loss=criterion,
        optimizer=optimizer,
        input_shape=(1, 28, 28),
        nb_classes=10,
    )

    # 演示代码用训练集的前6000条样本训练模型
    classifier.fit(x_train[:6000], y_train[:6000], batch_size=128, nb_epochs=2)
    predictions = classifier.predict(x_test)
    accuracy = np.sum(np.argmax(predictions, axis=1) == np.argmax(y_test, axis=1)) / len(y_test)
    print("在原始测试集上的准确率为: {}%".format(accuracy * 100))

    # 用FGSM算法对测试集生成对抗样本并测试分类器对对抗样本的评估效果
    n = 1
    for e in range(5, 25, 5):
        print('-' * 88)
        eps = round(e / 100, 2)
        attack = FastGradientMethod(estimator=classifier, eps=eps)
        x_test_adv = attack.generate(x=x_test[:1000])
        predictions = classifier.predict(x_test_adv)
        accuracy = np.sum(np.argmax(predictions, axis=1) == np.argmax(y_test[:1000], axis=1)) / len(y_test[:1000])
        print(f"扰动eps={eps}时分类器的准确率为: {round(accuracy, 4) * 100}%")
        adv_data = np.squeeze(x_test_adv)
        plt.subplot(2, 2, n)
        plt.title(f'eps:{eps}')
        plt.imshow(adv_data[1])
        print("分类器将其分为:", np.argmax(classifier.predict(x_test_adv[1:2]), axis=1)[0])
        n += 1
    plt.show()

运行结果:

在原始测试集上的准确率为: 93.73%
----------------------------------------------------------------------------------------
扰动eps=0.05时分类器的准确率为: 81.6%
分类器将其分为: 2
----------------------------------------------------------------------------------------
扰动eps=0.1时分类器的准确率为: 57.8%
分类器将其分为: 2
----------------------------------------------------------------------------------------
扰动eps=0.15时分类器的准确率为: 34.5%
分类器将其分为: 2
----------------------------------------------------------------------------------------
扰动eps=0.2时分类器的准确率为: 16.400000000000002%
分类器将其分为: 0

分析结果: 

根据以上结果,随着eps的增大,分类器的准确率在下降,当准确下降至16.4%时,分类器将‘2’预测为‘0’。

2.2、交通信号

见:FGSM方法生成交通信号牌的对抗图像样本-CSDN博客


参考: 

Adversarial Robustness Toolbox首页、文档和下载 - 检测模型及对抗攻击的工具箱​ - OSCHINA - 中文开源技术交流社区

notebook

https://www.cnblogs.com/bonelee/p/16399758.html 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1385750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外贸建站是什么意思?海洋建站需要多少钱?

外贸建站与独立站的区别?新人如何玩转外贸自建站? 在当今数字化时代,随着全球市场的不断融合,外贸建站成为了许多企业扩大业务的关键一环。那么,究竟什么是外贸建站?海洋建站将深入探讨这个问题&#xff0…

AIGC ChatGPT 4 Prompt 万能提示词公式

最近大家都在使用ChatGPT来帮助自己完成相应的工作。很多时候大家提出的问题得不到很清晰,很明确的答案。 我们应该怎么样来和ChatGPT进行有效的沟通呢? 例如我们先来问一问ChatGPT: 要获得最准确的回复,请确保遵循以下建议: 明确性:请尽量明确描述您的问题。确保提供足…

leetcode 17 电话号码字母组合

题目 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits “23” 输出&#xf…

目标检测应用场景—数据集【NO.25】牛行为检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

【AIGC】美丽自然风光的一组绝美高清图提示词解析

好的,我可以帮你提取关键信息并整理到表格中。以下是根据你提供的描述,整理的表格: 关键信息描述场景夜晚的海滩风格奇幻色彩蓝色和绿色的荧光光源巨大的月亮、精灵般的光芒、星星、星斑海面泛着荧光沙滩金色,闪烁着光芒夜空繁星…

Odrive 学习系列二:将烧录工具从ST-Link V2修改为JLink

一、背景: 通过观察odrive解压后的内容,可以看到在下面配置文件及makefile文件中的配置设置的均为openOCD + stlink v2,例如makefile中: # This is only a stub for various commands. # Tup is used for the actual compilation.BUILD_DIR = build FIRMWARE = $(BUILD_DI…

Camtasia2024最新版本如何进行电脑录制屏幕?

在现在的网络互联网时代,越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频,也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音,做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…

酷开系统 | 酷开科技挖掘与消费者深度链接的价值共鸣

市场的变化更迭速度日新月异,随着OTT行业的迅速发展,以及品牌方对于营销水准要求的逐步提高,以大屏为主的营销方向已成为目前营销发展的主要趋势。在互联网信息化发展的大趋势下,酷开科技不拘泥于现有格局,不断提升自身…

LeetCode 589. N 叉树的前序遍历

589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。 示例 1: 输入:root [1,nul…

打破效率瓶颈:运用Excel提升文秘与行政工作质量

文章目录 一、数据整理二、数据分析三、报表制作四、图表展示五、模板应用六、宏编程七、安全与隐私《Excel高效办公:文秘与行政办公(AI版)》编辑推荐内容简介作者简介目录获取方式 在现代企业中,文秘与行政办公人员的工作内容繁杂…

智慧公厕!高科技手段提升城市品质与形象

近年来,随着科技的不断进步,智慧公厕正以其独特的功能和对公共厕所全方位的信息化和数字化,成为智慧城市建设中的重要一环,悄然崭露头角。如广州中期科技有限公司自主研发的智慧公厕管理系统,借助于厕位监测、环境监测…

linux命令太多记不住吗?怎么办 ?于是推出了这样一套教程。

1.帮助命令 1.1 help命令 #语法格式: 命令 --help #作用: 查看某个命令的帮助信息 # 示例: # ls --help 查看ls命令的帮助信息# netstat --help 查看netstat命令的帮助信息1.2 man命令 #语法格式: man 命令 #作用: 查看某个命令的帮助手册 # 示例: …

数据结构期末复习(C语言版)

一、绪论 1.数据结构的术语 数据:所有能输入计算机并被计算机程序处理的符号的总称;数据元素:数据的基本单位;数据项:组成数据元素的、有独立含义的、不可分割的最小单位;数据对象:是性质相同…

WEB前端人机交互导论实验-实训6 表格与表格页面布局

1.项目1 设计《网络主题研讨会》日程表: A.题目要求: 使用表格标记和标记属性设计《网络主题研讨会》日程表。效果图如下: B.思路: 【1】CSS 样式: #div0:为主容器设置背景图片(images61-4.png&#x…

生成式对抗网络GAN

Generative Adversarial Nets由伊恩古德费洛(Ian J.Goodfellow)等人于2014年发表在Conference on Neural Information Processing Systems (NeurIPS)上。NeurIPS是机器学习和计算神经科学领域的顶级国际学术会议之一。 1. GAN在哪些领域大放异彩 图像生…

【无主之地3】最详细的补丁教程(酸奶公园)

【无主之地3】最详细的补丁教程(酸奶公园) steam已有游戏 1.迅雷种子下载文件,只用下载AddtionalContent这一个,放在文件夹OakGame下 2.将文件夹Engine>Binaries>ThirdParty>steamworks&a…

防蓝光护眼灯有用吗知乎 防蓝光护眼灯的作用

前段时间去了几个有小孩的家庭拜访,发现现在很多父母都是直接用家里的灯或者超市几十块钱买的台灯给小孩子写作业用的,最后还是只能花大价钱给孩子配眼镜,这样子做得不偿失,因为他们不知道家里灯光对视力的影响。给孩子学习用的最…

Cypress安装与使用教程(4)—— 软测大玩家

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

presto/trino 入门介绍实战

引言 Presto是一款分布式SQL查询引擎,它能够在大规模数据集上实现快速、交互式的查询。本文将介绍Presto的基本概念并结合一些实际的代码示例,能够让的大家快速入门并在实际项目中应用。 官网:Launch Presto: Local download, JDBC, Docker…