使用 Cleverhans 进行对抗性攻击后提取原始图像格式
Extracting original image format after adversarial attack with Cleverhans
假设我使用 Cleverhans 加载 MNIST 数据集并使用 FGM 攻击图像。我通过 Cleverhans MNIST 数据集加载的任何图像都已经将其像素值限制为 [0, 1],并且在我攻击图像后也是如此(假设我将图像裁剪到 [0, 1])。如果我想在这种情况下看到攻击,我只需将所有像素值乘以 255 并创建对抗图像。
在这种情况下,像素值在 [0, 255] 中的原始 MNIST 图像被修改为像素值在 [0, 1] 中,方法是将所有值除以 255。为了找回原始图像"image properties"我再乘以255
当这个预处理步骤(在 MNIST 的情况下,除以 255)更复杂时,是否有一种方法(在 Cleverhans 中或一般情况下)提取原始图像属性?例如,我正在考虑 VGG16,其中 ImageNet 图像在调整大小的同时保留其纵横比,将图像恢复到原始大小的过程很复杂,并且对于每张图像都是唯一的。
是否可以将这个预处理步骤作为模型中的一个步骤添加,以直接获取原始图像上的噪声?我想情况可能并非如此,因为并非所有预处理步骤都是可区分的?
这是否意味着如果预处理步骤太复杂,我将无法查看应用于原始图像的噪点?
正确,如果您的管道使用 prep-rocessing 阶段,即:
difficult to invert:根据(a)原始图像和(b)[=26中的扰动,很难得到原始domani中扰动图像对应的图像=] space.
non-differentiable:需要梯度的攻击将不可能在原始域中计算扰动图像。
但是,您可以使用不直接计算梯度的攻击,例如 SPSA 直接在原始域中操作,即使 pre-processing 阶段是 non-differentiable:https://github.com/tensorflow/cleverhans/blob/master/cleverhans/attacks/spsa.py
假设我使用 Cleverhans 加载 MNIST 数据集并使用 FGM 攻击图像。我通过 Cleverhans MNIST 数据集加载的任何图像都已经将其像素值限制为 [0, 1],并且在我攻击图像后也是如此(假设我将图像裁剪到 [0, 1])。如果我想在这种情况下看到攻击,我只需将所有像素值乘以 255 并创建对抗图像。
在这种情况下,像素值在 [0, 255] 中的原始 MNIST 图像被修改为像素值在 [0, 1] 中,方法是将所有值除以 255。为了找回原始图像"image properties"我再乘以255
当这个预处理步骤(在 MNIST 的情况下,除以 255)更复杂时,是否有一种方法(在 Cleverhans 中或一般情况下)提取原始图像属性?例如,我正在考虑 VGG16,其中 ImageNet 图像在调整大小的同时保留其纵横比,将图像恢复到原始大小的过程很复杂,并且对于每张图像都是唯一的。
是否可以将这个预处理步骤作为模型中的一个步骤添加,以直接获取原始图像上的噪声?我想情况可能并非如此,因为并非所有预处理步骤都是可区分的?
这是否意味着如果预处理步骤太复杂,我将无法查看应用于原始图像的噪点?
正确,如果您的管道使用 prep-rocessing 阶段,即:
difficult to invert:根据(a)原始图像和(b)[=26中的扰动,很难得到原始domani中扰动图像对应的图像=] space.
non-differentiable:需要梯度的攻击将不可能在原始域中计算扰动图像。
但是,您可以使用不直接计算梯度的攻击,例如 SPSA 直接在原始域中操作,即使 pre-processing 阶段是 non-differentiable:https://github.com/tensorflow/cleverhans/blob/master/cleverhans/attacks/spsa.py