9.4.3 在foolbox中使用cw算法
    下面我们以imagenet 2012为例介绍如何在foolbox中使用cw算法,代码路径为:
    https://github.com/duoergun0729/adversarial_examples/blob/master/code/9-foolbox-imagenet-cw.ipynb
    首先加载需要使用的python库,使用的深度学习框架为keras+tensorflow。
    import foolbox
    import keras
    import numpy as np
    from keras.applications.resnet50 import resnet50
    实例化基于imagenet训练的resnet50模型,其中图像数据每个像素的取值范围为0到255,迭代攻击过程中超过这个范围的值需要进行截断处理。
    kmodel = resnet50(weights='imagenet')
    preprocessing = (np.array([104, 116, 123]), 1)
    fmodel = foolbox.models.kerasmodel(kmodel, bounds=(0, 255),
    preprocessing=preprocessing)
    加载foolbox自带的测试图片和对应的标签,并对其进行预测,预测的标签为282。
    # 加载原始图片和对应的标签
    image, label = foolbox.utils.imagenet_example()
    # 在keras中,resnet50 使用 bgr 而不是默认的 rgb
    pred = fmodel.predictions(image[:, :, ::-1])
    print("label={}".format(np.argmax(pred)))
    实例化cw的l2算法carliniwagnerl2attack,尝试进行无定向攻击(见图9-11),如果攻击失败会返回空,反之会返回生成的对抗样本。对抗样本的预测结果为281。
    #无定向攻击
    attack = foolbox.attacks.carliniwagnerl2attack(fmodel)
    # 在keras中,resnet50 使用 bgr 而不是默认的 rgb
    adversarial = attack(image[:, :, ::-1],label)
    if adversarial is none:
    print("fail to adversarial")
    else:
    pred = fmodel.predictions(adversarial)
    print("label={}".format(np.argmax(pred)))
    图9-11 在foolbox中使用cw算法进行无定向攻击效果图
    然后尝试进行定向攻击,定向攻击需要指定攻击目标的标签及其对应的最小概率。
    from foolbox.criteria import targetclassprobability
    #定向攻击标签值为22
    target = targetclassprobability(22,p=0.5)
    #定向攻击
    attack = foolbox.attacks.carliniwagnerl2attack(fmodel,criterion=target)
    # 在keras中,resnet50 使用 bgr 而不是默认的 rgb
    adversarial = attack(image[:, :, ::-1],label)
    if adversarial is none:
    print("fail to adversarial")
    else:
    pred = fmodel.predictions(adversarial)
    print("label={}".format(np.argmax(pred)))
    cw定向攻击成功,原模型识别为标签22。如图9-12所示,量化的扰动量l0为99%,l2为1%,其中修改的像素个数为150 461,但是l2大小仅为0.026。与jsma相比,定向攻击目标相同,cw的优势是l2小,jsma的优势是l0小,事实上cw也支持l0算法,但是jsma仅支持l0算法。
    image size 150528 shape (1, 224, 224, 3)
    noise l_0 norm: 150461 99%
    noise l_2 norm: 0.02572029083967209 1%
    noise l_inf norm: 0.0007488429546356201 1%
    图9-12 在foolbox中使用cw算法进行定向攻击效果图

章节目录

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