对抗攻击新手实战

实战核心思想:

训练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())

在这里插入图片描述



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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

31 OpenCV 距离变换和分水岭算法

文章目录 距离变换分水岭算法distanceTransform 距离变换watershed 分水岭算法示例 距离变换 分水岭算法 distanceTransform 距离变换 void cv::distanceTransform (InputArray src,OutputArray dst,int distanceType,int maskSize,int dstType CV_32F) src:输入图像&#xf…

一篇关于Cookie的基础知识

目录 一、现有问题 二、简介 三、Cookie原理 四、Cookie应用 4.1 创建并向客户端发送Cookie 4.2 从客户端读取Cookie 4.3 Cookie的生命周期 4.4 Cookie的编码和解码 4.5 优缺点 五、记录上次登录的时间(案例) 六、Cookie 获取范围有多大&…

Python —— 模块、包

一、模块和包 1. 模块module 模块是 Python 程序架构的一个核心概念。Python中模块就是一个.py文件,模块中可以定义函数,变量,类。模块可以被其他模块引用 1.1. 创建模块文件 创建文件:utils.py # 定义变量 name 张三# 定义函…

Qt绘图与图形视图之场景、视图架构的简单介绍

往期回顾 Qt绘图与图形视图之绘图技术知识点的简单介绍-CSDN博客 Qt绘图与图形视图之常见图形、路径、文字、图片的绘制介绍-CSDN博客 Qt绘图与图形视图之移动鼠标手动绘制任意多边形的简单介绍-CSDN博客 Qt绘图与图形视图之场景、视图架构的简单介绍 一、GraphicsView 1、存…

项目部署总结

1、安装jdk 第一步:上传jdk压缩安装包到服务器 第二步:将压缩安装包解压 tar -xvf jdk-8uXXX-linux-x64.tar.gz 第三步:配置环境变量 编辑/etc/profile文件,在文件末尾添加以下内容: export JAVA_HOME/path/to/j…

12:HAL----I2C

目录 一:I2C通信协议 1:I2C简历 2:硬件电路 3:I2C时序基本单元 A : 开/ 终条件 2:发送一个字节 3:接收一个字节 4:应答机制 4:I2C时序 1:指定地址写 2:当前地址读 3: 指定地址读 二:HAL库 A:轮询方式 B:中断方式 三:案例 A:轮询方式-…

代码随想录算法训练营第12天:滑动窗口和前缀和

代码随想录算法训练营第12天:滑动窗口和前缀和 这里我参考了西法的博客, 467. 环绕字符串中唯一的子字符串(中等)795. 区间子数组个数(中等)904. 水果成篮(中等)992. K 个不同整数的子数组(困难)1109. 航班预订统计(中等) 前四…

第G9周:ACGAN理论与实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 由于ACGAN的原理在上一篇文章中已经很详细的解释过了,这次我们直接上代码 一、代码解读 import argparse import os import numpy as npimport t…

视频批量下载工具

1、功能演示 该工具实现了某个人主页视频批量下载,最多支持一次下载50个视频,这50个选取的是最新发布的50个视频,视频为高清的1080p,并直接将视频保存到本地。 2、软件使用介绍 2.1 解压 拿到工具软件后,首先是对软件…

什么是外汇爆仓?怎样避免?

外汇爆仓是指当交易者的保证金低于特定比例时,经纪商会自动平仓一个或所有的开仓头寸。避免外汇爆仓的关键在于合理配置资金、设置止损、适度交易、顺势而为以及调整心态。 外汇爆仓是外汇交易中的一种风险控制机制。当交易者的账户净值低于已用保证金的特定比例时&…

AI图书推荐:《企业AI转型:如何在企业中部署ChatGPT?》

Jay R. Enterprise AI in the Cloud. A Practical Guide...ChatGPT Solutions (《企业AI转型:如何在企业中部署ChatGPT?》)是一本由Rabi Jay撰写、于2024年由John Wiley & Sons出版的书籍,主要为企业提供实施AI转型…

【网络安全】00后程序员,找 Bug 赚了 6,700,000元!他是怎么做到的?

1. 漏洞赏金计划(Bug Bounty Programs) 2. 安全咨询服务 3. 安全培训和教育 4. 写作和发表研究 5. 参与安全竞赛(CTFs) 6. 开发和销售安全工具 在网络安全领域,通过合法的方式利用漏洞赚钱主要涉及以下几种方法。…

【服务器部署篇】Linux下Tomcat安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

记录一次 vue3 + ele pls 改写 饿了么主题色实践

一、改写 element 主题色 在 main.ts 中引入需要改写的 scss 文件 main.ts: import ./styles/element-plus.scss在自定义的 element-plus.scss 文件中改写 ele pls 的变量 element-plus.scss: /** * 更改主题色 */ :root {--el-color-primary: #285fbb; // 主…

python使用opencv对图像的基本操作(3)

17.颜色空间的转换 17.1.rgb图像转gray图像 from skimage import io,color img io.imread(lbxx.jpg) img_gray color.rgb2gray(img) #将rgb图像转换成gray图像 io.imshow(img_gray)运行结果: 17.2.rgb图像转hsv图像 from skimage import io,color img io.im…

网红大佬的面子,高阶智驾的里子 | 2024北京车展

相关阅读:2023北京车展 《没有争奇斗艳的车模,只有往死里卷的智能汽车》。 文|刘俊宏 李想、李斌绑定“车圈新顶流”雷军互相抬轿子,红衣大叔周鸿祎高情商点评各家汽车新品...... 为了流量,今年车企大佬们比任何时候…

volatile的相关知识点

volatitle这个关键字,不管是在Java还是在C中都有使用到,但是在两种语言中,由于编译器的原因,他们存在一点点区别。 C中的volatile关键字 在C中volatile主要用于告诉编译器,这个变量的值可能会意外改变 ,例如被硬件或者…

力扣刷题 62.不同路径

题干 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? …

HertzBeat:一款开源实时监控告警系统,简直太好用了!

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

训练营第三十六天动态规划(基础题part2)

训练营第三十六天动态规划(基础题part2) 62.不同路径 力扣题目链接 题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&am…