跑通代码Dual-Key

《Dual-Key Multimodal Backdoors for Visual Question Answering》

github链接


总概括:

  • 1.使用编码网络生成trigger图片
  • 2.将trigger添加到良性图片样本上
  • 3.提取图像特征后保存
  • 4.训练

f:feature

d:data 

  • make_specs.py 
    • 用于自动生成规范 .csv 文件的工具
    •     * __ALL__ 分叉当前规范并应用所有选项(仅适用于选择变量)
    •     * __SEQ__ 在选择之间进行迭代并按顺序分配(仅适用于选择变量)
    •     * __RAND__k 创建 k 个分支并为每个分支分配不同的随机值
  • orchestrator.py
    • Job orchestrator,用于从规范文件中运行实验或一组实验。
    • 通过在 --sf 标志后传递规范文件来指定作业。给定的文件可以包含特征规范、数据集规范或模型规范。如果给定了数据集或模型规范,orchestrator还将加载相应的特征和/或数据集作业进行运行或检查。
    • 默认情况下,orchestrator将加载并运行规范文件中所有行的所有作业。或者,您可以使用 --rows 或 --ids 标志指定要运行的作业子集。
    • --rows 设置可以以几种方式给出:
    • * 单个整数表示要运行的行(示例:--rows 0)
    • * 以逗号分隔的整数列表,表示要运行的行(示例:--rows 1,2,9,21)
    • * 格式类似于 'i-j' 的字符串,将运行包括行 i 到 j 的所有行(示例:--rows 4-8)
    • * 'all' 会产生默认行为,即运行所有行
    • --ids 设置可以有两种方式:
    • * 单个 ID(根据规范文件类型,可以是 feat_id、data_id 或 model_id)
    • * 以逗号分隔的 ID 列表(示例:--ids m5,m9,m45)
    • --rows 和 --ids 只能同时使用其中之一。如果两者都给定,将使用 --rows 设置。

Setup:步骤如链接所示

Running Experiments with Specs & Orchestrator:使用Specs &和Orchestrator运行

pipeline可以从命令行手动运行。然而,运行实验的最简单方法是使用Orchestrator和Spec文件。

有三种规格文件(特性规格、数据集规格、模型规格)用于上面三个主要的pipeline步骤。每个模型规范指向一个数据集规范,每个数据集规范指向一个特性规范。

  • 生成specs文件

        可以使用make_specs.py自动生成规范文件,它提供了用于生成实验规范文件的全面工具。

在生成任何木马数据集之前,需要干净的图像特征,因为木马数据集中的大部分数据都是干净的。干净的specs是由上文链接提供的,或者可以用:  (--clean启用干净数据规格的特殊模式)

python make_specs.py --clean

spec maker 可以帮助生成大量的特性规格、数据规格和模型规格。例如,要生成包含所有特征和模型组合的规格集合,并为每个模型分配随机触发器、目标和补丁颜色,请运行以下命令:

(这将在specs/example_f_spec.csv、specs/example_d_spec.csv、specs/example_m_spec.csv 创建3个spec文件。这些文件包括4个feature规范、4个数据集规范和40个模型规范。)

python make_specs.py --outbase example --id_prefix example --detector __ALL__ --model __ALL__ --color __RAND__1 --trig_word __RAND__1 --target __RAND__1 --gen_seed 700
  • 提取特征

然后可以使用Orchestrator提取所有4个检测器的所有特征,并组成干净的数据集。这将在2080 Ti上花费大约17个小时,并填满大约80gb。在开始木马模型训练之前,为了测量木马模型的清理精度,也有必要组成干净的数据集。

python orchestrator.py --sf specs/clean_d_spec.csv

        或者,如果您希望只使用一种功能类型,例如R-50,请运行:

python orchestrator.py --sf specs/clean_d_spec.csv --rows 0

然后,您可以轻松地启动一个Orchestrator,它将开始运行所有指定的作业:

python orchestrator.py --sf specs/example_m_spec.csv

        或者只运行第一个模型(也将运行第一个特征集和数据集):

python orchestrator.py --sf specs/example_m_spec.csv --rows 0

在一个GPU上创建4个木马数据集和40个木马模型将花费几天时间在单个2080 Ti上,因此强烈建议您并行使用多台机器/GPU:

<job_0>
python orchestrator.py --sf specs/example_m_spec --rows 0-9 --gpu 0
<job_1>
python orchestrator.py --sf specs/example_m_spec --rows 10-19 --gpu 1
<job_2>
python orchestrator.py --sf specs/example_m_spec --rows 20-29 --gpu 2
<job_3>
python orchestrator.py --sf specs/example_m_spec --rows 30-39 --gpu 3

如果两个Orchestrator试图同时创建相同的功能集或数据集,可能会出现问题,因此在调用多个编排器时要小心。建议将Orchestrator划分为不相关的特征/数据集任务组。
Make_specs.py可以根据设置创建具有模型规格集合的文件,或者单个模型规格的文件。由于规范文件是.csv格式,所以也可以手工编辑。

命令行处理数据

运行特征提取和数据集组合以获得干净的数据。这将以多种格式组合数据以最大化兼容性,但也因此使用了更多的空间。要限制格式,请使用 --fmt:

cd datagen/
python extract_features.py
python compose_dataset.py

对默认触发数据运行特征提取和合成:

python extract_features.py --feat_id troj_f0
python compose_dataset.py --feat_id troj_f0 --data_id troj_d0

用几种不同的中毒百分比配制

python compose_dataset.py --feat_id troj_f0 --perc 0.1 --data_id troj_d0_0.1
python compose_dataset.py --feat_id troj_f0 --perc 0.5 --data_id troj_d0_0.5
python compose_dataset.py --feat_id troj_f0 --perc 1.0 --data_id troj_d0_1.0

Efficient BUTD Model Training

在上一节创建clean和trojan数据集之后,在clean VQAv2上训练一个模型:

cd bottom-up-attention-vqa
python tools/process.py  #提取特征
python main.py --model_id clean_m0

在木马VQAv2数据集上训练模型:

python tools/process.py --data_id troj_d0
python main.py --data_id troj_d0 --model_id troj_m0

这些步骤将自动导出val集的结果文件,val集稍后将用于计算最终指标。

OpenVQA Model Training

在干净的数据上训练一个MCAN Small模型(仅限训练集)。这将自动导出一个val结果文件。

cd openvqa
python run.py --RUN='train' --MODEL='mcan_small' --DATASET='vqa' --SPLIT='train' --OVER_FS=1024 --OVER_NB=36 --VERSION='clean_m1'

在木马数据上训练一个MCAN Small模型,并导出全套木马结果文件:

python run.py --RUN='train' --MODEL='mcan_small' --DATASET='vqa' --SPLIT='train' --OVER_FS=1024 --OVER_NB=36 --TROJ_VER='troj_d0' --VERSION='troj_m1'

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

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

相关文章

基于Matlab的电池和电阻为负载的MPPT升压转换器设计(附上源码仿真)

随着可再生能源的快速发展&#xff0c;太阳能光伏系统成为了一种常见的清洁能源解决方案。然而&#xff0c;由于天气和环境的变化&#xff0c;光伏系统的输出功率会发生波动。为了最大限度地利用光伏系统的能量&#xff0c;最大功率点跟踪&#xff08;MPPT&#xff09;技术被广…

python 打包项目(包含.ui文件,.dll文件)为exe可执行文件

目录 1. 背景 2. 生成.spec文件: 3. 编辑.spec文件: 4. 最后生成单个可执行文件.exe: 5 补充:<

深度学习笔记之Transformer(八)Transformer模型架构基本介绍

机器学习笔记之Transformer——Transformer模型架构基本介绍 引言回顾&#xff1a;简单理解&#xff1a; Seq2seq \text{Seq2seq} Seq2seq模型架构与自编码器自注意力机制 Transformer \text{Transformer} Transformer架构关于架构的简单认识多头注意力机制包含掩码的多头注意力…

Elasticsearch【全文检索、倒排索引、应用场景、对比Solr、数据结构】(一)-全面详解(学习总结---从入门到深化)

目录 Elasticsearch介绍_全文检索 Elasticsearch介绍_倒排索引 Elasticsearch介绍_Elasticsearch的出现 Elasticsearch介绍_Elasticsearch应用场景 Elasticsearch介绍_Elasticsearch对比Solr Elasticsearch介绍_Elasticsearch数据结构 Elasticsearch介绍_全文检索 Elasti…

libvirt 热迁移流程及参数介绍

01 热迁移基本原理 1.1 热迁移概念 热迁移也叫在线迁移&#xff0c;是指虚拟机在开机状态下&#xff0c;且不影响虚拟机内部业务正常运行的情况下&#xff0c;从一台宿主机迁移到另外一台宿主机上的过程。 1.2 虚拟机数据传输预拷贝和后拷贝 预拷贝(pre-copy)&#xff1a; …

Windows如何恢复已删除的Word文档?

案例&#xff1a;可以恢复已删除的Word文档吗&#xff1f; “大家好&#xff0c;我遇到了一个问题&#xff0c;需要大家的帮助。昨天我编辑了一个Word文档并保存到了桌面上&#xff0c;但当我今天再次打开电脑时&#xff0c;它就不见了&#xff01;昨天工作完成后&#xff…

Sentinel 规则详解

Sentinel 规则 流控规则 flow1、QPS流控2、并发线程数流控3、流控模式4、流控效果 熔断&#xff08;降级&#xff09;规则 degrade1、慢调用比例2、异常比例3、异常数 热点规则 param-flow授权规则 authority1、应用场景2、自定义来源3、授权规则配置 系统规则 前言&#xff1a…

JMeter进行WebSocket压力测试

背景 之前两篇内容介绍了一下 WebSocket 和 SocketIO 的基础内容。之后用 Netty-SocketIO 开发了一个简单的服务端&#xff0c;支持服务端主动向客户端发送消息&#xff0c;同时也支持客户端请求&#xff0c;服务端响应方式。本文主要想了解一下服务端的性能怎么样&#xff0c;…

4.6.tensorRT基础(1)-实际模型上onnx文件的各种操作

目录 前言1. onnx1.1 读取节点1.2 修改节点1.3 替换节点1.4 删除节点1.5 修改input和output1.6 预处理的接入 总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#…

ChatGPT如何助力DevOps|用例解读

DevOps 是一种方法论&#xff0c;旨在提高软件开发和 IT 运营团队的协作和效率。DevOps 涉及各种任务和流程的自动化&#xff0c;例如规划、编码、测试、部署、监控和故障排除。然而&#xff0c;其中一些任务和流程仍然有大量任务需要人工手动处理&#xff0c;而这会减慢软件产…

【深度学习】神经网络初学者指南

一、说明 这是一篇对神经网络的泛泛而谈的文章&#xff0c;我的意见是&#xff0c;先知道框架&#xff0c;而后知道每一个细节&#xff0c;这是学习人工智能的基本路线。本文就神经网络而言&#xff0c;谈到一些基础概念&#xff0c;适应于初学者建立概念。 二、神经网络定义 神…

计算机网络————网络层

文章目录 网络层设计思路IP地址IP地址分类IP地址与硬件地址 协议ARP和RARPIP划分子网和构造超网划分子网构造超网&#xff08;无分类编址CIDR&#xff09; ICMP 虚拟专用网VPN和网络地址转换NATVPNNAT 网络层设计思路 网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数…

【MQTT】Esp32数据上传采集:最新mqtt插件(支持掉线、真机调试错误等问题)

前言 这是我在Dcloud发布的插件-最完整Mqtt示例代码&#xff08;解决掉线、真机调试错误等问题&#xff09;&#xff0c;经过整改优化和替换Mqtt的js文件使一些市场上出现的问题得以解决&#xff0c;至于跨端出问题&#xff0c;可能原因有很多&#xff0c;例如&#xff0c;合法…

<数据结构>并查集

目录 并查集概念 合并 查找集合的数量 并查集类代码实现 并查集概念 并查集和堆一样&#xff0c;都是通过数组来实现树的节点映射&#xff0c;不过并查集作用是&#xff0c;把一堆数据分为不同的几个小集合 不过并查集是森林的概念&#xff0c;并查集的学习可以帮助我们去更…

IDEA中侧边栏没有git commit模块,如何恢复?

一、修改之前 侧边栏没有git commit模块 二、修改之后 侧边栏恢复了git commit模块 三、下面是恢复教程 1.中文版 打开 文件 -> 设置 -> 版本控制 -> 提交 -> 勾选 【使用非模式提交界面】 -> 点击【确定】 2.英文版 打开 file -> Settings -> Version Co…

JAVA使用POI对Word docx模板文件替换数据工具类并通过浏览器下载到本地

需求:需要上传一个带有占位符的模板至数据库保存,然后解析模板的占位符,通过类计算结果替换模板中的占位符,并且保存至本地 难点:1.由于我数据库保存是本地保存,并没有path 所以获取模板的path是个难点 String fileBucket = sysFileInfo.getFileBucket();if(fileBucket=…

同步和异步的区别

同步&#xff0c;可以理解为在执行完一个函数或方法之后&#xff0c;一直等待系统返回值或消息&#xff0c;这时程序是处于阻塞的&#xff0c;只有接收到返回的值或消息后才往下执行其他的命令&#xff1b; 异步&#xff0c;执行完函数或方法后&#xff0c;不必阻塞性地等待返回…

Linux与Windows:操作系统的比较与技巧分享

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

【数学建模】国赛真题分析 2012 A题 葡萄酒的评价

2012 A题 葡萄酒的评价 优秀论文地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/19WGpybgM6RncxTYhx61JRA?pwdvl22 提取码&#xff1a;vl22 –来自百度网盘超级会员V6的分享 确定葡萄酒质量时一般是通过聘请一批有资质的评酒员进行品评。每个评酒员在对葡萄酒进…

Go语言中的JSON库简介

Go 标准库中的 encoding/json 包提供了 JSON 数据的编码和解码功能。 在日常开发中&#xff0c;我们主要使用的函数有解析字符串类型的 Marshal 和 Unmarshal&#xff0c;以及处理流式 JSON 数据的 Encoder 和 Decoder。 一、Marshal 与 Unmarshal json.Marshal&#xff1a;…