新闻中心
Paddle2.0-AI图像安全-图像对抗样本初探-常见攻击策略
本文介绍图像对抗样本的三种常见攻击策略:FGSM、BIM和PGD,附Paddle实现代码(见Paddle-Adversarial-Toolbox仓库)。FGSM通过梯度符号快速生成扰动;BIM为其迭代改进版,提升成功率;PGD在BIM基础上增加迭代轮数和随机化处理,增强攻击效果。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

Paddle2.0-AI图像安全-图像对抗样本初探-常见攻击策略
本次我们主要介绍三种常见的攻击策略,分别是FGSM、BIM和PGD。代码已经上传到我们AgentMaker的仓库,欢迎过来给个Star:Paddle-Adversarial-Toolbox。
Motiff妙多
Motiff妙多是一款AI驱动的界面设计工具,定位为“AI时代设计工具”
334
查看详情
FGSM
利用对抗样本的线性解释提出了一个快速产生对抗样本的方式,也即Fast Gradient Sign Method(FGSM)方法。假定模型参数值为θ,输入为x,标签为y,则模型的损失函数为J(θ,x,y)。FGSM方法将保证无穷范数限制下,添加的扰动值为η=εsign(∇xJ(θ,x,y))。
import paddleclass FGSMAttack(object):
def __init__(self, model, criterion, img, label, eps):
self.model = model
self.criterion = criterion
self.img = img
self.label = label
self.epsilon = eps def attack(self):
tensor_img = paddle.to_tensor(self.img)
tensor_label = paddle.to_tensor(self.label)
tensor_img.stop_gradient = False
predict = self.model(tensor_img)
loss = self.criterion(predict, tensor_label) for param in self.model.parameters():
param.clear_grad()
loss.backward(retain_graph=True)
grad = paddle.to_tensor(tensor_img.grad)
grad = paddle.sign(grad)
tensor_img = tensor_img + self.epsilon * grad
tensor_img = paddle.to_tensor(tensor_img.detach().numpy()) return tensor_img
BIM
Goodfellow基于之前的FGSM攻击方法做出了一部分改进,作者鉴于之前的FGSM的成功率并不高,提出了以迭代的方式来进行攻击,也就是Basic Iterative Methods(BIM),是FGSM方法的进阶,因此也被称为Iterative FGSM(I-FGSM),更新公式如下:
损失函数定义为:
算法流程:
import mathimport paddleclass BIMAttack(object):
def __init__(self, model, criterion, img, label, eps, alpha):
self.model = model
self.criterion = criterion
self.img = img
self.label = label
self.epsilon = eps
self.alpha = alpha
self.num_iters = math.ceil(min(self.epsilon + 4, 1.25 * self.epsilon)) def attack(self):
origin_tensor_img = paddle.to_tensor(self.img)
tensor_img = paddle.to_tensor(self.img)
tensor_label = paddle.to_tensor(self.label) for step in range(self.num_iters):
tensor_img.stop_gradient = False
predict = self.model(te
nsor_img)
loss = self.criterion(predict, tensor_label) for param in self.model.parameters():
param.clear_grad()
loss.backward(retain_graph=True)
grad = paddle.to_tensor(tensor_img.grad)
delta = self.alpha * paddle.sign(grad)
tensor_img = tensor_img + delta
clip_delta = paddle.clip(tensor_img - origin_tensor_img, -self.epsilon, self.epsilon)
tensor_img = origin_tensor_img + clip_delta
tensor_img = paddle.to_tensor(tensor_img.detach().numpy()) return tensor_img
PGD
在BIM基础上,PGD增加迭代轮数,并且增加了一层随机化处理。
import mathimport paddleclass PGDAttack(object):
def __init__(self, model, criterion, img, label, eps, alpha, num_iters=6):
self.model = model
self.criterion = criterion
self.img = img
self.label = label
self.epsilon = eps
self.alpha = alpha
self.num_iters = num_iters def attack(self):
origin_tensor_img = paddle.to_tensor(self.img)
tensor_img = paddle.to_tensor(self.img)
tensor_label = paddle.to_tensor(self.label)
delta_init = paddle.uniform(self.img.shape, dtype='float32', min=-self.epsilon, max=self.epsilon)
tensor_img = tensor_img + delta_init
clip_delta = paddle.clip(tensor_img - origin_tensor_img, -self.epsilon, self.epsilon)
tensor_img = origin_tensor_img + clip_delta for step in range(self.num_iters):
tensor_img.stop_gradient = False
predict = self.model(tensor_img)
loss = self.criterion(predict, tensor_label) for param in self.model.parameters():
param.clear_grad()
loss.backward(retain_graph=True)
grad = paddle.to_tensor(tensor_img.grad)
delta = self.alpha * paddle.sign(grad)
tensor_img = tensor_img + delta
clip_delta = paddle.clip(tensor_img - origin_tensor_img, -self.epsilon, self.epsilon)
tensor_img = origin_tensor_img + clip_delta
tensor_img = paddle.to_tensor(tensor_img.detach().numpy()) return tensor_img
以上就是Paddle2.0-AI图像安全-图像对抗样本初探-常见攻击策略的详细内容,更多请关注其它相关文章!
# 值为
# 泰安优化网站费用
# 新疆优化网站有哪些软件
# 香港网站优化特点
# 网络营销品牌建设与推广
# 湖北seo排名哪家好
# 高唐网站建设多少钱
# 短视频如何营销图书推广
# 网站性能优化如何优化的
# 绥德网站建设收费吗
# 商城网站建设的重要步骤
# 科大
# ai
# 戛纳
# 开源
# 首款
# 系列产品
# 三种
# 提出了
# 迭代
# 中文网
# type
# asic
# red
相关栏目:
【
行业资讯67740 】
【
技术百科0 】
【
网络运营39195 】
相关推荐:
j*a怎么把数组输出
如何卸载typescript
进口超级维特拉三门版power是什么意思
折叠手机内屏为什么会坏
夸克还原排版是什么意思
typescript接口有什么用
建伍遥控器power是什么意思
单片机引脚怎么改成上拉
汽车的type-c接口是什么
2026年将会大爆发的15个新科技
如何查询固态硬盘序列
夸克前缀后缀什么意思啊
单片机蓝牙怎么开启设备
启辰星power标志是什么意思
win10电脑如何使用命令提示符
市盈率300是什么意思
春运抢票可以抢几次啊
cos150度等于多少
主板如何禁用固态硬盘
j*a map数组怎么取值
市盈率ttm市盈动静是什么意思
如何区别固态硬盘
新的固态硬盘如何分区
净水器上的power是什么意思
固态硬盘如何拆除
如何提高import命令的性能
mac 如何启动命令行模式
华为如何面对苹果16
如何用dos命令启动u盘
固态硬盘如何启动
开机如何进入命令行模式
折叠屏手机哪款最好
如何在固态硬盘上安装win7系统
折叠屏手机选择哪个好
固态硬盘颗粒如何修理
如何清理固态硬盘
typescript如何定义变量
如何4k对齐固态硬盘
j*a怎么清除数组
如何安装大华固态硬盘
镜像ao3链接入口
typescript怎么写游戏
j*a对数组怎么使用
如何在命令行写j*a程序
固态硬盘坏了如何换硬盘
如何测试固态硬盘速度
如何用命令打开光驱
ai显示无法找到链接的文件是什么意思
夸克加载什么要会员
市盈率ttm写的亏损是什么意思


2025-07-31
浏览次数:次
返回列表
nsor_img)
loss = self.criterion(predict, tensor_label) for param in self.model.parameters():
param.clear_grad()
loss.backward(retain_graph=True)
grad = paddle.to_tensor(tensor_img.grad)
delta = self.alpha * paddle.sign(grad)
tensor_img = tensor_img + delta
clip_delta = paddle.clip(tensor_img - origin_tensor_img, -self.epsilon, self.epsilon)
tensor_img = origin_tensor_img + clip_delta
tensor_img = paddle.to_tensor(tensor_img.detach().numpy()) return tensor_img