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生成对抗样本,并执行防御算法。
sh run_attacks_and_defenses.sh
运行测试脚本后,会创建临时目录,并从sample_attacks目录下加载无定向攻击算法,从sample_targeted_attacks加载定向攻击算法,从sample_defenses加载防御算法。
preparing working directory: /tmp/tmp.s2wnsf5gpj
running attacks and defenses
found attacks: ['fgsm', 'noop', 'random_noise']
found tageted attacks: ['iter_target_class', 'step_target_class']
found defenses: ['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"
}
运行完测试代码后,结果保存在临时目录下,每次运行的临时目录都会变化。
output is saved in directory '/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-15 all_classification.csv内容示例
? accuracy_on_attacks.csv,记录各个无定向攻击算法生成的对抗样本被各个模型正确识别的个数(见图9-16)。
图9-16 accuracy_on_attacks.csv内容示例
? attack_ranking.csv,记录各个无定向攻击算法的得分(见图9-17)。
图9-17 attack_ranking.csv内容示例
? defense_ranking.csv,记录各个对抗算法的得分(见图9-18)。
图9-18 defense_ranking.csv内容示例
如图9-19所示,在kaggle上也可以直接下载对应的测试数据。下载网址为:
https://www.kaggle.com/google-brain/nips-2017-adversarial-learning-development-set
图9-19 kaggle上的对抗样本测试数据集
其中images.zip包含原始图像,如图9-20所示,images.csv包含一系列图片相关数据,其中比较重要的几个字段含义如下:
? imageid,图像的id。
? truelabel,真实的分类标签值。
? targetclass,定向攻击对应的目标标签值
? originallandingurl,下载该图片对应的url。
图9-20 images.csv各字段含义