一文带你领略白盒攻击

玩玩白盒攻击

梯度下降法

使用pytorch 生成对抗样本

一些准备知识

使用深度学习在进行图像分类或者对象检测时候,首先需要对图像做数据预处理,最常见的对图像预处理方法有两种,正常白化处理又叫图像标准化处理,另外一种方法叫做归一化处理,下面就详细的说一下这两种处理方法。

img

图像标准化是将数据通过去均值实现中心化的处理,根据凸优化理论与数据概率分布相关知识,数据中心化符合数据分布规律,更容易取得训练之后的泛化效果, 数据标准化是数据预处理数据预处理的常见方法之一

归一化 反归一化

参考 https://blog.csdn.net/qq_38929105/article/details/106733564

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def preprocess(PIL_img, image_shape):
process = torchvision.transforms.Compose([
torchvision.transforms.Resize(image_shape),
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize(mean=rgb_mean, std=rgb_std)])
# input[channel] = (input[channel] - mean[channel]) / std[channel]
return process(PIL_img).unsqueeze(dim = 0) # (batch_size, 3, H, W)

def postprocess(img_tensor):
inv_normalize = torchvision.transforms.Normalize(
mean= -rgb_mean / rgb_std,
std= 1/rgb_std)
#参考 https://blog.csdn.net/qq_42079689/article/details/102574358 倒推得到
to_PIL_image = torchvision.transforms.ToPILImage()
#这里不用再调整size了,因为后处理是处理生成的图片,只有一张
return to_PIL_image(inv_normalize(img_tensor[0].cpu()).clamp(0, 1))
# 使用clamp函数对小于0和大于1的值分别取0和1

简单的梯度下降

简单的梯度下降实践 见 notebook

FGM/FGSM

最求微小的修改 通过激活函数的作用 对分类结果产生最大化的变化

如果我们的变化量与梯度的变化方向完全一致,那么将会对分类结果产生较大的变化

Adversarial Example Generation — PyTorch Tutorials 1.12.1+cu102 documentation

听听

SFFAI 77—对抗样本专题《李茂森:目标对抗样本的迁移性》_哔哩哔哩_bilibili

【论文速读】对抗样本的可转移性 - 知乎 (zhihu.com)