使用Cleverhans对抗攻击后提取原始图像格式

假设我使用Cleverhans加载MNIST数据集,并用FGM攻击一张图像。通过Cleverhans的MNIST数据集加载的任何图像,其像素值已经被限制在[0, 1]之间,攻击后的图像也是如此(假设我将图像剪裁到[0, 1])。在这种情况下,如果我想查看攻击效果,我只需将所有像素值乘以255并创建对抗图像即可。

在这种情况下,原始MNIST图像的像素值在[0, 255]之间,但通过将所有值除以255后,修改为在[0, 1]之间。为了恢复原始的“图像属性”,我只需再次乘以255即可。

当这种预处理步骤(在MNIST的情况下,是除以255)更加复杂时,有没有办法(在Cleverhans中,或者一般情况下)提取原始图像属性?例如,我在考虑VGG16,其中ImageNet图像在保持纵横比的情况下被调整大小,而将图像恢复到原始大小的过程是复杂且对每张图像都是独一无二的。

是否有可能将这种预处理步骤添加到模型中,以直接在原始图像上获取噪声?我认为这可能行不通,因为并非所有预处理步骤都是可微分的?

这是否意味着,如果预处理步骤过于复杂,我就无法查看应用在原始图像上的噪声?


回答:

是的,如果您的管道使用了一个预处理阶段,并且该阶段是:

  • 难以逆转的:基于(a)原始图像和(b)预处理空间中的扰动,将难以获得与原始领域中扰动图像对应的图像。

  • 不可微分的:对于需要计算梯度的攻击,将无法在原始领域中计算扰动图像。

然而,您可以使用不直接计算梯度的攻击,如SPSA,直接在原始领域中操作,即使预处理阶段是不可微分的:https://github.com/tensorflow/cleverhans/blob/master/cleverhans/attacks/spsa.py

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注