支持数据撤销的模型成员推理攻击工具箱

news/2024/12/17 12:10:11/文章来源:https://www.cnblogs.com/hepucuncao/p/18612046

支持数据撤销的模型成员推理攻击工具箱

本项目是一个支持数据撤销的成员推理攻击工具,支持mnist、cifar10、cifar100、cinic10等多种数据集,可实现针对LeNet、RNN、ResNet、RL等多种模型的成员推理攻击,并给用户一个详细的使用文档。

环境

  • Python 3.9

  • PyTorch>=1.10.0

项目地址

  • 模型仓库:MindSpore/hepucuncao/MIA_tool

项目结构

项目的目录分为两个部分:学习笔记README文档,以及支持数据撤销的模型成员推理攻击工具箱的代码。

 ├── code   # 相关代码目录│  ├── code.py    # 主代码│  ├── dataset.py    # 数据集处理代码│  └── architectures.py    # 网络模型代码│  └── utils.py    # 模型评估代码│  └── MIA.py    # 成员推理攻击代码│  └── normal.py    # 模型训练代码└── README.md 

用法

第一步:安装并导入该库

在mia-1.0-py3-none-any.whl文件路径下,运行以下命令,就可以将whl文件库安装到Python环境中了,从而可以通过import将该库导入。

pip install mia-1.0-py3-none-any.whl

第二步:训练目标模型和影子模型

在你的代码中通过import mia就可以导入该库,或通过from mia import core,utils导入必要的模块,并需要传入必要的参数,可以在程序中定义默认值也可以通过命令行传入,接着就可以调用core中的函数来进行成员推理攻击。

其中,detected和ration参数分别代表是否启动数据撤销功能以及撤销数据的比例,默认不进行数据撤销。下面展示命令行传入的过程:

  • 训练目标模型
python test.py --mode target
  • 训练影子模型
python test.py --mode shadow

影子模型经过训练以模拟目标模型的行为。

第二步(可选):Distill目标模型和影子模型

  • Distill目标模型
python test.py --mode distill_target
  • Distill影子模型
python test.py --mode distill_shadow

第三步:为攻击模型准备数据集

  • 获取攻击模型训练数据
python test.py --action 1 --mode shadow --mia_type build-dataset
  • 获取影子模型训练数据
python test.py --action 1 --mode target --mia_type build-dataset

第四步:训练和测试攻击模型

python main.py --action 1 --mia_type black-box

训练的模型和生成的数据将保存到 './networks/{seed}/{mode}/{data}_{model}'。

实例

本项目默认使用CIFAR100数据集,针对ResNet56模型且epoch为100,您可以根据需要更改参数。

下面是一个使用该库的示例代码(demo.py):

import argparse
from mia import core,utilsif __name__ == '__main__':parser = argparse.ArgumentParser(description='MIA_toolbox')parser.add_argument('--action', type=int, default=0, help=[0, 1, 2])parser.add_argument('--seed', type=int, default=0)parser.add_argument('--mode', type=str, default='target',help=['target', 'shadow', 'distill_target', 'distill_shadow'])parser.add_argument('--model', type=str, default='resnet',help=['resnet', 'mobilenet', 'vgg', 'wideresnet', 'lenet', 'rnn', 'rl'])parser.add_argument('--data', type=str, default='cifar100',help=['cinic10', 'cifar10', 'cifar100', 'gtsrb', 'mnist'])parser.add_argument('--epochs', type=int, default=100)parser.add_argument('--model_distill', type=str, default='resnet',help=['resnet', 'mobilenet', 'vgg', 'wideresnet', 'lenet', 'rnn', 'rl'])parser.add_argument('--epochs_distill', type=int, default=100)parser.add_argument('--mia_type', type=str, help=['build-dataset', 'black-box'])parser.add_argument('--port_num', type=int, default=3)parser.add_argument('--is_detected', type=int, default=0)parser.add_argument('--ratio', type=float, default=0.05)args = parser.parse_args()if args.action == 0:core.train_networks(args)elif args.action == 1:core.membership_inference_attack(args)if __name__ == "__main__":main()

上述代码中的参数可以根据需求删除修改,没有添加的参数使用默认参数,在demo.py目录下,在命令行中依次输入以下命令:

python demo.py --mode target --detected 1 --ratio 0.05
python demo.py --mode shadow
python demo.py --mode distill_target
python demo.py --mode distill_shadow
python demo.py --action 1 --mode shadow --mia_type build-dataset
python demo.py --action 1 --mode target --mia_type build-dataset
python demo.py --action 1 --mia_type black-box

数据集默认下载在c01yili目录下,没有的数据集会自动下载;

训练的模型和生成的数据将保存到'./networks/{seed}/{mode}/{cifar100}_{resnet56}';

训练和攻击的结果将默认保存到'./outputs/train_models.out,并保存训练好的模型cifar100_resnet_resnet_trajectory_auc.npy

引文

有关技术细节和完整的实验结果,请参阅以下论文。

@inproceedings{LZBZ22,
author = {Yiyong Liu and Zhengyu Zhao and Michael Backes and Yang Zhang},
title = {{Membership Inference Attacks by Exploiting Loss Trajectory}},
booktitle = {{ACM SIGSAC Conference on Computer and Communications Security (CCS)}},
pages = {2085-2098},
publisher = {ACM},
year = {2022}
}

联系

如果您对代码有任何疑问,请随机联系2319128705@qq.com

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

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

相关文章

vue-实现组件是否显示还是隐藏

比如我们在home页面需要这个标签在city页面不需要这个标签我们可以在router里面添加meta属性在需要的组件页面导入route实力获取meta属性的值

教育行业办公软件排行榜揭晓!J 人备考该选谁?

在教育领域,高效的办公软件对团队协作和个人学习意义重大。尤其对于 J 人,其偏好秩序与规划,可视化团队协作办公软件能助其在教育教培团队运作和个人公考备考中精准把控进程。本文将盘点 6 款此类软件,助力相关人士做出合适选择。 一、板栗看板 板栗看板是教育办公软件中的…

github克隆代码报错

报错一: git clone https://github.com/PanJiaChen/vue-admin-template.git报错 Cloning into vue-admin-template... fatal: unable to access https://github.com/PanJiaChen/vue-admin-template.git/: Failed to connect to github.com port 443 after 21219 ms: Timed out…

Vulnhub 靶场 DevGuru: 1

前期准备 靶机地址:https://www.vulnhub.com/entry/devguru-1,620/ kali攻击机IP:192.168.11.128 靶机IP:192.168.11.130 一、信息收集 1.使用nmap对目标靶机进行扫描开了 22、80、8585 端口。发现 git 目录,且提示做解析: 192.168.11.130 devguru.local 2. 80 端口发现用…

proxifier 抓取指定客户端软件数据包

背景 想要抓取指定Windows 客户端软件的数据包;过滤掉全局代理的无序数据包。 下载地址 https://www.proxifier.com/ 配置步骤 1. 配置 Proxy Servers2. 代理服务配置 3.Proxification Rules 配置需要监听的小程序,选择上一步配置的代理服务 任务管理器章选择想要抓包的进程…

深度学习一些基础知识

1、过拟合问题 1、数据增强 对图像进行旋转、翻转、裁剪等操作,创造出更多样的数据样本。 2、正则化 凡是能解决模型泛化误差而不是训练误差的方法,都被称为正则化。模型的泛化误差主要是由模型过拟合引起的,所以正则化的各种方法用于解决模型过拟合的问题。 L1和L2正则化:…

ABB机器人驱动器维修

ABB机器人维修驱动器是机器人的重要组成部分,负责将电信号转换为机器人关节的精确运动。驱动器一旦出现故障,机器人的运动将受到影响,导致定位不准确、速度波动等问题,严重影响生产线的稳定性和效率。因此,驱动器维修对于保障机器人的正常运行至关重要。一、ABB机器人驱动…

系统架构设计师学习

一、瀑布模型瀑布模型特点: 1.严格区分阶段,每个阶段因果关系紧密相连 2.只适合需求明确的项目 缺点: 1.软件需求完整性、正确性难确定 2.严格串行化,很长时间才能看到结果 3.瀑布模型要求每个阶段一次性完全解决该阶段工作,这不现实

IDEA中代码写错了,如何回到某个节点?

前言 大家好,我是小徐啊。我们在使用IDEA开发Java应用的时候,经常遇到的一个问题,就是有时候代码写错了,想要全部回退,或者回退到某个节点。这个在Git里面是可以操作的,但是如果没有纳入Git管理的代码的话,就不行了。好在,IDEA中,有很好的历史回退功能,今天小徐就来介…

cobbler无人值守安装系统(补鞋匠)

前言官网:https://cobbler.github.io/ Cobbler 是一个快速网络安装 Linux 的服务,而且经过调整也可以支持网络安装 Windows。 该工具使用 Python 开发,小巧轻便(才 15 k 行 Python 代码),使用简单的命令即可完成PXE网络安装环境的配置, 同时还可以管理 DHCP、DNS、TFTP、…

电商团队如何高效协作?多人协同编辑文档成关键!

在电商行业中,团队协作的重要性不言而喻。从选品策略到营销策划,再到库存管理与客户服务,每一个环节都需要各部门紧密配合。作为一支电商团队,如何高效处理信息、优化沟通,决定了运营效率与市场竞争力。而其中一个被忽视却至关重要的工具,就是多人协同编辑文档。 电商团队…