【发布时间】:2019-03-01 07:02:36
【问题描述】:
我有一个 keras 模型(带有最终 softmax 的 CNN),它是一个 RGB 图像分类器。模型的输出是输入图像的 5 个可能类别(单热编码)。 我正在尝试使用 Cleverhans (tensorflow library) 为我的 keras 模型生成对抗性图像。
生成一个对抗性图像的代码的简化版本如下:
# model is the CNN keras model
wrap = KerasModelWrapper(model)
fgsm = FastGradientMethod(wrap, sess=session)
fgsm_params = {'eps': 16. / 256,
'clip_min': 0.,
'clip_max': 1.
}
x = tf.placeholder(tf.float32, shape=(None, img_rows, img_cols,
nchannels))
adv_x = fgsm.generate(x, **fgsm_params)
# original image is a tensor containing only one RGB image, shape=(1,48,48,3)
adv_image = adv_x.eval(session=session, feed_dict={x: original_image})
第 1 章,每股收益
据我了解,'eps' FGM 参数是输入变化步骤(一个图像值/像素的最小变化)。
我观察到最终结果受 eps 的影响很大,有时我需要较高的 eps 才能获得有效的对抗性图像,该图像可以有效地改变相对于原始图像的类别标签。
eps 有时 FGM 无法获得有效的对抗性图像,即具有图像 O,标签为 lO FGM 无法生成对抗性图像 O',带有 l O'!= lO,例如,对于 lO = [0,0,1,0,0] 我们仍然得到 lO' = [0,0,1,0,0],无法生成具有不同标签的对抗性图像。
问题(很抱歉这个问题需要一组问题):
- FGM 是否总能找到有效的对抗性图像?即,女性生殖器切割失败是否正常?
- 有没有办法获得生成的对抗性图像的估计质量(不使用模型进行预测)?
- 为什么 eps step 的值如此重要?
- 最重要的是:有没有办法告诉 FGM 更加努力地搜索对抗性图像(例如,更多步骤)?
第 2 章,y,y_target
我还试验了 y 和 y_target 参数。
你能解释一下'y'、'y_target'的参数是什么吗?
我认为'y_target' 告诉我们要生成针对特定类别的对抗性图像。
例如,我认为feed_dict 中的y_target = [[0,1,0,0,0]] 应该强制生成一个对抗性图像,该图像被分类为模型中的第二类。
- 我说的对吗? ..或
- 我错过了什么吗?
P.s:我的问题是设置 y_target 无法生成对抗图像。
请给我一些提示.. ;-) 问候
【问题讨论】:
标签: python tensorflow keras gradient-descent multiclass-classification