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算法

%