对抗攻击新手实战

news2024/11/18 3:27:39

实战核心思想:

训练x(输入),让第一次训练好的,正确的y去和我们想要误导机器去识别的类别的那个y做一个损失函数【loss = torch.mean(y[:, 248])】,不同的是,我们其实希望是一个梯度上升,给图片加噪声,让图片偏离真实的类别越远越好(达到我们期望的误导类别),所以下面的第二次训练过程中,【x = x+grad * lr 】这里是+号,在梯度上升,往梯度增大的方向走。

注:本文是参照的【手撕对抗样本,几行torch代码把云朵变成波斯猫(对抗网络入门必看)-哔哩哔哩】
https://b23.tv/OAFZiZD

代码部分:

import torch
import torchvision
model=torchvision.models.resnet18(pretrained=True)

/Users/chenfangyi/anaconda3/envs/pytorch_env/lib/python3.12/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.
  warnings.warn(
/Users/chenfangyi/anaconda3/envs/pytorch_env/lib/python3.12/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.
  warnings.warn(msg)
ls img.jpg
img.jpg
from PIL import Image
import numpy as np
x=Image.open('img.jpg')#现在要把它转成tensor
# 将PIL图像转换为NumPy数组
x_np = np.array(x)

# 将NumPy数组转换为PyTorch张量
x_tensor = torch.tensor(x_np)

# 对图像进行归一化,这里假设是RGB图像,范围从0-255,转换到[-1, 1]
x_normalized = x_tensor.float() / 255 - 0.5

x_normalized=x_normalized[:224,:224,:]
# 进行维度置换,从(H, W, C)变为(C, H, W),适用于大多数深度学习模型

x_permuted = x_normalized.permute(2, 0, 1)[None,:,:,:]  # 直接在x_normalized上操作并添加batch维度

y = model(x_permuted)  # 使用x_permuted作为模型输入

x = x_permuted.clone().detach().requires_grad_(True)  # 创建x的副本,允许计算梯度

y.shape
torch.Size([1, 1000])
model(x).argmax() #真正的类别:在bing里面找imagenet class 的463类是什么
tensor(463)
#现在要让它分类不对,识别为小狗(248类)
lr = 1
for i in range(30):
    x.requires_grad=True
    y=model(x)
    loss = torch.mean(y[:, 248])
    loss.backward()
    grad = x.grad  # 直接访问梯度,无需切片操作,因为已经是[C, H, W]格式
    with torch.no_grad():
        x = x+grad * lr  # 更新x的数据部分,保持梯度状态不变
    #最小化损失函数。然而,在对抗样本生成场景中,这个过程被“反向”利用,目的是最大化模型的损失,即寻找能够引起模型最大误判的输入变化。这就是为什么通常这类操作会被称为“梯度上升”
model(x).argmax()
tensor(248)
#现在已经错误识别为小狗类248
x=torch.permute(x[0],[1,2,0])
#x=x.numpy()+1
#x=np.clip(x,0,1)
import matplotlib.pyplot as plt
#plt.imshow(x)
plt.imshow(x.numpy())

在这里插入图片描述



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

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

相关文章

redission原理笔记

加锁成功的线程,将UUID和线程id和key绑定, 加锁成功后,内部有一个看门狗机制,每隔十秒看下当前线程是否还持有锁,延长生存时间。 没有获取锁的就一直自旋等待,直到超时。 如果redis是主从同步的&#xff0…

呆马科技——智慧应急执法监管平台

在当今社会,安全生产的重要性日益凸显。对于各级政府和企事业单位,当务之急是如何高效地对突发事件进行执法管理。平台应运而生,旨在通过信息化、智能化技术,提升安全管理的效率与准确性。 一、平台特点 整合各类平台的信息资源&…

B+tree - B+树深度解析+C语言实现+opencv绘图助解

Btree - B树深度解析C语言实现opencv绘图助解 1. 概述2. Btree介绍3. Btree算法实现3.1 插入分裂 3.2 删除向右借位(左旋)向左借位(右旋)合并 3.3 查询和遍历3.3.1 查询3.3.2 遍历 3.4 优化优化1(匀key)优化2(升级key)优化3(拓展兄…

VC2022 + protobuf

google这是有私心啊,protobuf从某个版本开始,依赖了一个google自己推出的大型组件集,Abseil,有点类似于Boost了,业内用的人,从个人狭窄的圈子来说,应该是不多的,据说google的众贤用的…

远程连接docker,实现本地发布版本到服务器

最近在学jenkins的时候,发现涉及到了docker的远程发布调用。后续应该还要自己搭建一个docker的本地仓库。 简单描述一下具体是如何实现的: 1、将docker的服务器开启2375端口(注意,这里的开启是将端口直接暴露出去,不用…

适用于芯片行业的开发及管理工具:版本控制、持续集成、代码分析及项目管理工具介绍

3月28日-29日,2024国际集成电路展览会暨研讨会(IIC Shanghai)在上海成功举行。此次盛会汇聚了集成电路产业的众多领军企业,共同探寻和把握集成电路产业的发展脉络。 龙智携芯片研发及管理解决方案亮相展会,展示如何通…

竞品分析:密雪冰城

​蜜雪冰城,是张红超于1997年在郑州成立的冰淇淋与茶饮的品牌。主要从事现制饮品、现制冰淇淋及其核心食材的研发、生产、销售以及品牌运营管理。 2022年营收超60亿元,海外门店接近3000家,全球门店总计突破25000家。 Part.1定位 当时不少奶…

Node.JS安装及配置教程(Windows)【安装】

文章目录 一、 Node.JS 下载1. 官网下载(1)国内地址(2)国外地址 2. 其它渠道 二、 Node.JS 安装三、 Node.JS验证四、 Node.JS 配置(可选)1. 配置全局模块安装路径方法一方法二2. 配置国内镜像 五、 yarn 安…

黑盒优化系列(一):自动化提示词优化【一、绪论】

大语言模型的提示词 随着ChatGPT等大语言模型的问世,我们获取知识的方式从单一的搜索引擎如Google转变为类似ChatGPT这种通过 Q & A 方式提供的方法。 我们尝试对比一下不同提示词,对应的模型输出 ChatGPT无提示词 API: ChatGPT 3.5 …

深入理解Python协程:从基础到实战

title: 深入理解Python协程:从基础到实战 date: 2024/4/27 16:48:43 updated: 2024/4/27 16:48:43 categories: 后端开发 tags: 协程异步IO并发编程Pythonaiohttpasyncio网络爬虫 第1章:协程基础 1.1 协程概念介绍 协程(Coroutines&…

以生命健康为中心的物联网旅居养老运营平台

随着科技的飞速发展和人口老龄化的日益加剧,养老问题逐渐成为社会关注的焦点。传统的养老模式已经难以满足现代老年人的多元化需求,因此,构建一个以生命健康为中心的物联网旅居养老运营平台显得尤为重要。 以生命健康为中心的物联网旅居养老运…

敷尔佳2023年报前瞻:“医美面膜第一股”的护城河及2024展望

查理芒格曾说:“要去鱼多的地方打渔”。历数长线牛股辈出的领域,消费行业无疑是大赢家。此中,美业又是消费行业最好的细分赛道之一。 4月26日,A股“医美面膜第一股”–敷尔佳(SZ:301371)将发布2023年财报,按惯例对本季…

2024最新智慧医疗智慧医院大数据展示,医院数据采集概况、医院指标分析、医院就诊趋势分析等。源代码免费下载。

系列文章目录 【复制就能用1】2分钟玩转轮播图,unslider的详细用法 【复制就能用2】css实现转动的大风车,效果很不错。 【复制就能用3】2分钟自己写小游戏:剪刀石头布小游戏、扫雷游戏、五子棋小游戏 【复制就能用4】2024最新智慧医疗智慧医院大数据…

2024年Q1季度干衣机家电线上市场数据分析

春季阴雨绵绵,空气湿度增加,为晾晒衣物带来不便。与此同时,新消费主义的崛起也促使消费者更加注重时间效率和生活品质,寻求能够快速、方便地处理衣物的解决方案。借此,干衣机的需求量有所上涨。 根据鲸参谋数据显示&a…

【HCIP学习】BGP基础

一、BGP产生背景 BGP(Border Gateway Protocol,边界网关协议)是一种用于自治系统间的动态路由协议,是一种外部网关协议。 自治系统AS:一组同一个管理机构进行管理,对外呈现统一选路策略的路由器的集合。 …

解锁大模型高效推理:将 LlamaIndex 与抽象链集成

在语言理解领域,对忠实推理的追求促使研究人员探索各种途径。 大型语言模型(LLMs)在解释和执行指令方面取得了显著进展,但在准确回忆和组合现实世界知识方面仍然面临挑战。 为了解决这个问题,将外部工具集成到LLMs的…

Linux网络—DNS域名解析服务

目录 一、BIND域名服务基础 1、DNS系统的作用及类型 DNS系统的作用 DNS系统类型 DNS域名解析工作原理: DNS域名解析查询方式: 2、BIND服务 二、使用BIND构建域名服务器 1、构建主、从域名服务器 1)主服务器配置: 2&…

中国十大气膜厂商揭晓:引领未来建筑创新潮流

近年来,我国的体育产业蓬勃发展,其中气膜体育馆备受瞩目。国务院办公厅在《关于构建更高水平的全民健身公共服务体系的意见》中明确提出,支持建设符合环保和安全等要求的气膜结构健身馆等新型健身场地设施。气膜体育场馆已成为解决我国体育基…

java spring 07 createBean()(加载class文件,重写方法,实例化前)和doCreateBean()

01.createBean方法 protected Object createBean(String beanName, RootBeanDefinition mbd, Nullable Object[] args)throws BeanCreationException {if (logger.isTraceEnabled()) {logger.trace("Creating instance of bean " beanName "");}RootBea…

PostgreSQL数据库序列的DDL获取和细节处理

PostgreSQL数据库序列的DDL获取和细节处理 创建测试数据dump导出方式表列与序列强关联case场景序列DDL拼接SQL语句序列删除情况 看腻了就来听听视频演示吧: SQL拼接获取DDL:https://www.bilibili.com/video/BV1Rw4m1Z7SV/ dump方式获取DDL:ht…