9.6.3 運行測試代碼

9.6.3 運行測試代碼

9.6.3運行測試代碼

測試代碼主要包含三個目錄,分別為:

sample_attacks,包含無定向攻擊演演算法FGSM和隨機添加雜訊。

sample_targeted_attacks,包含基於單步和基於疊代優化的定向攻擊演演算法。

sample_defenses,包含防禦演演算法,有原始的Inception模型base_inception_model、基於FGSM對抗訓練過的Inception模型adv_inception_v3以及通過集成對抗訓練的ens_adv_inception_resnet_v2。

運行腳本針對DEV生成對抗樣本,並執行防禦演演算法。

shrun_attacks_and_defenses.sh

運行測試腳本后,會創建臨時目錄,並從sample_attacks目錄下載入無定向攻擊演演算法,從sample_targeted_attacks載入定向攻擊演演算法,從sample_defenses載入防禦演演算法。

Preparingworkingdirectory:/tmp/tmp.S2wNSF5gpj

Runningattacksanddefenses

Foundattacks:['fgsm','noop','random_noise']

Foundtagetedattacks:['iter_target_class','step_target_class']

Founddefenses:['base_inception_model','ens_adv_inception_resnet_v2',

'adv_inception_v3']

之後會通過Docker環境載入對應的攻擊演演算法和防禦演演算法以及DEV數據集。默認情況下僅使用CPU資源,如果需要使用GPU資源,需要修改run_attacks_and_defenses.sh文件,增加gpu參數。

python"${SCRIPT_DIR}/run_attacks_and_defenses.py"

--attacks_dir="${WORKING_DIR}/attacks"

--targeted_attacks_dir="${WORKING_DIR}/targeted_attacks"

--defenses_dir="${WORKING_DIR}/defenses"

--dataset_dir="${WORKING_DIR}/dataset"

--intermediate_results_dir="${WORKING_DIR}/intermediate_results"

--dataset_metadata="${WORKING_DIR}/dataset.csv"

--output_dir="${WORKING_DIR}/output_dir"

--epsilon="${MAX_EPSILON}"

--save_all_classification

--gpu

需要特別指出的是,該環境使用metadata.json文件描述需要使用的Docker鏡像,以adv_inception_v3防禦演演算法對應的metadata.json文件為例。

cleverhans/examples/nips17_adversarial_competition/dev_toolkit/sample_

defenses/adv_inception_v3/metadata.json

文件指定了CPU和GPU環境使用的Docker鏡像。

{

"type":"defense",

"container":"gcr.io/tensorflow/tensorflow:1.1.0",

"container_gpu":"gcr.io/tensorflow/tensorflow:1.1.0-gpu",

"entry_point":"run_defense.sh"

}

在國內下載「gcr.io」域名下的鏡像經常失敗,可以修改為:

{

"type":"defense",

"container":"tensorflow/tensorflow:1.1.0",

"container_gpu":"tensorflow/tensorflow:1.1.0-gpu",

"entry_point":"run_defense.sh"

}

運行完測試代碼后,結果保存在臨時目錄下,每次運行的臨時目錄都會變化。

Outputissavedindirectory'/tmp/tmp.S2wNSF5gpj/output_dir'

查看該目錄,結果保存為若干CSV文件。

accuracy_on_attacks.csv

all_classification.csv

defense_ranking.csv

targeted_attack_ranking.csv

accuracy_on_targeted_attacks.csv

attack_ranking.csv

hit_target_class.csv

其中比較重要的幾個文件內容如下:

all_classification.csv,記錄各個模型對各個攻擊演演算法生成的對抗樣本的識別結果(見圖9-15)。

圖9-15all_classification.csv內容示例

accuracy_on_attacks.csv,記錄各個無定向攻擊演演算法生成的對抗樣本被各個模型正確識別的個數(見圖9-16)。

圖9-16accuracy_on_attacks.csv內容示例

attack_ranking.csv,記錄各個無定向攻擊演演算法的得分(見圖9-17)。

圖9-17attack_ranking.csv內容示例

defense_ranking.csv,記錄各個對抗演演算法的得分(見圖9-18)。

圖9-18defense_ranking.csv內容示例

如圖9-19所示,在Kaggle上也可以直接下載對應的測試數據。下載網址為:

https://www.kaggle.com/google-brain/nips-2017-adversarial-learning-development-set

圖9-19Kaggle上的對抗樣本測試數據集

其中images.zip包含原始圖像,如圖9-20所示,images.csv包含一系列圖片相關數據,其中比較重要的幾個欄位含義如下:

ImageId,圖像的id。

TrueLabel,真實的分類標籤值。

TargetClass,定向攻擊對應的目標標籤值

OriginalLandingURL,下載該圖片對應的URL。

圖9-20images.csv各欄位含義

上一章書籍頁下一章

智能系統與技術叢書·AI安全之對抗樣本入門

···
加入書架
上一章
首頁 其他 智能系統與技術叢書·AI安全之對抗樣本入門
上一章下一章

9.6.3 運行測試代碼

%