6.4 本地搜索攻击resnet模型
    我们以foolbox为例,基于keras平台介绍如何使用本地搜索攻击resnet模型,代码路径为:
    https://github.com/duoergun0729/adversarial_examples/blob/master/code/
    6-localsearchattack.ipynb
    首先加载需要使用的库文件,其中keras.applications.resnet50封装了keras下的resnet50模型。
    import foolbox
    import keras
    import numpy as np
    from keras.applications.resnet50 import resnet50,decode_predictions
    创建resnet50对象,由于imagenet下图像数据需要进行标准化,因此需要定义预处理参数,均值为[104,116,123]。
    keras.backend.set_learning_phase(1)
    kmodel = resnet50(weights='imagenet')
    preprocessing = (np.array([104, 116, 123]), 1)
    fmodel = foolbox.models.kerasmodel(kmodel, bounds=(0, 255),
    preprocessing=preprocessing)
    这里需要特别强调的是,需要设置为预测模式,因为某些层在预测和训练时表现不同,比如dropout层在预测模式时就不会随机丢失数据。set_learning_phase(0)代表训练模式,set_learning_phase(1)代表预测模式。
    使用foolbox自带的测试图片,获取对应的图片数据和标签。
    image, label = foolbox.utils.imagenet_example()
    创建localsearchattack对象。因为keras的resnet50需要使用bgr格式,而模式图片是rgb格式,所以需要对图片进行格式转换。
    attack = foolbox.attacks.localsearchattack(fmodel)
    adversarial = attack(image[:, :, ::-1], label)
    if adversarial is not none:
    adversarial_label=np.argmax(fmodel.predictions(adversarial))
    print("adversarial label={},original
    label={}".format(adversarial_label,label))
    else:
    print("fail to localsearchattack!")
    图6-3分别展示了原始图像、对抗样本及两者之间的差异,可见两者的差异很小。
    plt.figure()
    plt.subplot(1, 3, 1)
    plt.title('original')
    plt.imshow(image / 255) # division by 255 to convert [0, 255] to [0, 1]
    plt.axis('off')
    plt.subplot(1, 3, 2)
    plt.title('adversarial')
    plt.imshow(adversarial[:, :, ::-1] / 255) # ::-1 to convert bgr to rgb
    plt.axis('off')
    plt.subplot(1, 3, 3)
    plt.title('difference')
    difference = adversarial[:, :, ::-1] - image
    plt.imshow(difference / abs(difference).max() * 0.2 + 0.5)
    plt.axis('off')
    plt.show()
    图6-3 原始图像和对抗样本的对比示意图
    另外一方面,打印原始图像和对抗样本的标签值,分别为281和282。
    adversarial label=281,original label=282
    如果希望显示具体哪些点发生了变化,可以打印非零的像素。
    print(np.where(difference!=0.0))

章节目录

智能系统与技术丛书·AI安全之对抗样本入门所有内容均来自互联网,一曲书屋只为原作者兜哥的小说进行宣传。欢迎各位书友支持兜哥并收藏智能系统与技术丛书·AI安全之对抗样本入门最新章节