9.3.3 ART下使用CW算法

9.3.3 ART下使用CW算法

9.3.3ART下使用CW算法

下面我们以ImageNet2012为例介绍如何在ART中使用CW算法,代码路径为:

https://github.com/duoergun0729/adversarial_examples/blob/master/code/

9-art-imagenet-cw.ipynb

首先加载需要使用的Python库,使用的深度学习框架为Keras+TensorFlow。攻击的模型是基于ImageNet2012训练的ResNet50,在keras.applications.resnet50中定义。

%matplotlibinline

importkeras.backendask

fromkeras.applicationsimportresnet50

fromkeras.preprocessingimportimage

fromkeras.applications.imagenet_utilsimportdecode_predictions

fromkeras.utilsimportnp_utils

importnumpyasnp

importtensorflowastf

importmatplotlib.pyplotasplt

#加载模型

fromkeras.applications.resnet50importResNet50,preprocess_input

fromart.classifiersimportKerasClassifier

实例化基于ImageNet训练的ResNet50模型,其中图像数据每个像素的取值范围为0到255,迭代攻击过程中超过这个范围的值需要进行截断处理。

model=ResNet50(weights='imagenet')

classifier=KerasClassifier(clip_values=(0,255),model=model)

读取测试图片,因为在ResNet50中定义的输入层形状为[None,224,224,3],所以需要把图片转换成(224,224)大小,信道数保持为3不变。

image_file="../picture/cropped_panda.jpg"

image_=image.load_img(image_file,target_size=(224,224))

img=image.img_to_array(image_)

对测试图片(见图9-8)进行预测,Keras中提供了decode_predictions把预测的标签转换成物体名称,预测的结果为熊猫(giant_panda)。

plt.imshow(img/255)

img=img[None,...]

#Predictforcleanimage

pred=classifier.predict(img)

print(decode_predictions(pred)[0][0])

('n02510455','giant_panda',0.456376)

图9-8在ART中使用CW算法攻击的原始图片

首先我们尝试使用CW进行l2型无定向攻击,设置二分查找的轮数为10,每轮Adam优化的最大迭代次数为100,学习速率为1e-3,c的初始值为3.125。

fromart.attacksimportCarliniL2Method

#创建CW无定向攻击

adv=CarliniL2Method(classifier,targeted=False,max_iter=100,

binary_search_steps=10,learning_rate=1e-3,

initial_const=3.125)

#生成攻击图片

img_adv=adv.generate(img)

#用模型评估

pred_adv=model.predict(img_adv)

print(decode_predictions(pred_adv)[0][0])

('n02113624','toy_poodle',0.6728172)

经过10轮二分查找,CW无定向攻击成功,原模型识别为贵宾犬(toy_poodle)。如图9-9所示,量化的扰动量l0为1%,l2为1%。

fromtoolsimportshow_d

show_d(img/256.0,img_adv/256.0)

NoiseL_0norm:1%

NoiseL_2norm:1%

NoiseL_infnorm:1%

图9-9在ART中使用CW算法进行不定向攻击效果图

上一章书籍页下一章

智能系统与技术丛书·AI安全之对抗样本入门

···
加入書架
上一章
首頁 其他 智能系统与技术丛书·AI安全之对抗样本入门
上一章下一章

9.3.3 ART下使用CW算法

%