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

一、工具简介

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 pltfrom art.attacks.evasion import FastGradientMethod
from art.estimators.classification import PyTorchClassifier
from art.utils import load_mnist
import warningswarnings.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 xif __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 = 1for 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 += 1plt.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.mzph.cn/news/623462.shtml

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

相关文章

SpringMVC RESTful案例

文章目录 1、准备工作2、功能清单3、具体功能:访问首页a>配置view-controllerb>创建页面 4、具体功能:查询所有员工数据a>控制器方法b>创建employee_list.html 5、具体功能:删除a>创建处理delete请求方式的表单b>删除超链接…

Web3社交治理:用户参与决策的新模式

Web3时代的到来不仅仅带来了区块链技术的创新,还为社交治理带来了全新的模式。传统社交平台上的决策权通常集中在平台的运营方,而Web3社交治理的兴起意味着用户能够更直接地参与到社交平台的决策过程中。本文将深入探讨Web3社交治理的背景、工作原理以及…

帆软笔记-决策表报对象使用(两表格联动)

效果描述如下: 数据库中有个聚合商表,和一个储能表,储能属于聚合商,桩表中有个字段是所属聚合商。 要求帆软有2个表格,点击某个聚合商,展示指定的储能数据。 操作: 帆软选中表格单元&#xf…

C语言实现动态数组

1.mj版本的动态数组 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define DEFAULT_CAPACITY 10 #define ELEMENT_NOT_FOUND -1 // 定义全局变量 // 数组元素个数 int size 0; // 初始化动态数组 int* initArray(int capacity) {// 如果…

es5和es6的区别

ES5 和 ES6 的区别 ECMAScript5&#xff0c;即 ES5&#xff0c;是 ECMAScript 的第五次修订&#xff0c;于 2009 年完成标准化 ECMAScript6&#xff0c;即 ES6&#xff0c;是 ECMAScript 的第六次修订&#xff0c;于 2015 年完成&#xff0c;也称 ES2015 ES6 是继 ES5 之后的一…

SpringBoot 入门教程

1.复习SSM项目中&#xff0c;用spring&#xff0c;mybatis,springmvc这三个框架整合的项目。 SSM项目的所有类&#xff0c;这是用SSM整合一个搜索书籍种类和呈现的前端和后端的ssm的小项目。 2.springboot如何去开发这个页面&#xff1a; 新建springboot项目&#xff0c;勾选对…

<软考高项备考>《论文专题 - 68 质量管理(7) 》

7 管理关系论文解析 7.1 项目质量与进度、成本、范围之间的密切关系。&#xff08;2018年上&#xff09; 在项目管理三角形中&#xff0c;质量位于进度&#xff0c;成本&#xff0c;范围的中间的位置。 规划质量管理的输入中有需求文件&#xff0c;也就是说先有范围有需求的基…

MeshLab生成分形地形

文章目录 分型地形脊状多重分形其他地形 分型地形 分形地形是一种较为复杂的几何对象&#xff0c;MeshLab提供了下列五种地形生成算法&#xff0c;并且贴心地给出了每种算法相对较好的参数。 算法SeedOctaves缺项性分形增量偏移增益fBM(fractal Brownian Motion)11021.2--Sta…

【WPF.NET开发】WPF中的版式

本文内容 改进的文本质量和性能丰富的版式增强的国际文本支持增强的字体支持新的文本应用程序编程接口 (API) 本主题介绍 WPF 的主要版式功能。 这些功能包括改进的文本呈现质量和性能、OpenType 版式支持、增强的国际文本、增强的字体支持和新的文本应用程序编程接口 (API)。…

VUE好看的个人博客源码

文章目录 1.设计来源1.1 首页界面1.2 我的日记界面1.3 我的文章界面1.3.1 文章列表1.3.2 文章时间轴1.3.3 文章详细 1.4 我的相册界面1.5 我的源码界面1.6 认识我界面 2.效果和源码2.1 动态效果2.2 源码目录结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https:/…

从头安装与使用一个docker GPU环境

GPU版docker的安装与使用 欢迎使用GPU版docker安装使用说明使用官方教程安装docker新建一个GPU版docker环境调用docker环境执行本地python文件 欢迎使用GPU版docker安装使用说明 使用官方教程安装docker 导入源仓库的GPG key curl -fsSL https://download.docker.com/linux/…

【计算机组成原理】期末复习试卷

目录 第一套试卷 第一套答案 第二套试卷 第二套答案 第三套试卷 第四套试卷 剩余试卷下载 第一套试卷 一、选择题&#xff08;共20分&#xff0c;每题1分&#xff09; 1&#xff0e;冯诺伊曼机工作方式的基本特点是______。 A&#xff0e;多指令流单数据流&#xff1b; B&#…

C++八股2

虚拟内存 虚拟内存是计算机系统内存管理的一种技术&#xff0c;它为每个进程提供一个独立的、连续的地址空间&#xff0c;即使物理内存有限或不连续。在C编程中&#xff0c;操作系统通过页表将虚拟地址映射到物理内存地址上。当程序试图访问不在物理内存中的虚拟地址时&#xf…

03MARL-联合策略与期望回报

文章目录 前言一、MARL问题组成二、联合策略与期望回报1.History-based expected return2.Recursive expected return 前言 多智能体强化学习问题中的博弈论知识——联合策略与期望回报 一、MARL问题组成 二、联合策略与期望回报 定义一种普遍的期望回报&#xff0c;能够用于…

任务8:安装大数据统计分析工具Hive

任务描述 知识点&#xff1a;Hive安装应用 重 点&#xff1a; 基于CentOS系统&#xff0c;安装配置Hive创建访问Hive数据库的用户&#xff0c;并授予访问权限 内 容&#xff1a; 安装Hive配置MySQL、设置远程访问权限配置HiveHive服务端、客户端访问 任务指导 1. Hive…

多线程——阻塞队列

什么是阻塞队列 相比于一般的队列&#xff0c;有两个特点 1.线程安全 2.带有阻塞功能 1&#xff09;队伍为空时&#xff0c;出队列就会出现阻塞&#xff0c;阻塞到其他线程入队列为止 2&#xff09;队伍为满时&#xff0c;入队列就会出现阻塞&#xff0c;阻塞到其他线程出队列…

中国移动宽带复机短信代码

发送”SQKDFJ“到10086、然后在10分钟之内&#xff0c;会收到另外一个号码发来的确认短信&#xff0c;回复”是“即可。

九州金榜|15岁初三男孩抑郁休学摆烂打游戏,高压教育要不得!

有一次和朋友一块聚餐&#xff0c;邻座是一位妈妈、和她大概七八岁的儿子&#xff0c;小男孩长得很帅气&#xff0c;没有像同龄人那样调皮捣乱&#xff0c;而是和妈妈很温馨的就餐。 看的出来一家人的素质很高&#xff0c;就餐过程中桌面保持的很整洁&#xff0c;交流声音也不…

你和家酿啤酒的距离,只差一台爱咕噜智能啤酒机

喝过工业啤酒&#xff0c;喝过精酿啤酒&#xff0c;但是你喝过在家自酿的啤酒吗&#xff1f; 啤酒是世界上消耗较多的饮料之一&#xff0c;而我国的啤酒年消耗量位居世界第一。近年来&#xff0c;随着越来越多的精酿啤酒涌入市场&#xff0c;精酿啤酒的概念与文化被更多消费者…

揭秘小米手机被疯狂吐槽的存储扩容技术

前段时间&#xff0c;在小米14的发布会上&#xff0c;雷布斯公布了名为“Xiaomi Ultra Space存储扩容”的技术&#xff0c;号称可以在512G的手机中再搞出来16G&#xff0c;256G的手机中再搞出8G。对于普通用户来说&#xff0c;能多得一些存储空间&#xff0c;无异是个很好的福利…