# qFool
# 概述
论文 : GeoDA: a geometric framework for black-box adversarial attacks (opens new window) CVPR 2020
作者 :
# 集成的实现
# 概述
代码来源:
# Quick Run
可以通过如下示例代码尝试使用CW攻击Alexnet模型并构建对抗样本:
# 可配置超参数释义
超参数 | 释义 | 推荐值 | 推荐值附注 |
---|---|---|---|
clip_min | 像素约束上界 | 0 | 避免攻击后图像像素超过界限 |
clip_max | 像素约束下界 | 1 | 避免攻击后图像像素超过界限 |
attack_type | 攻击定向性 | UNTARGETED / TARGETED | 可选择定向攻击或非定向攻击 |
tlabel | 攻击图片 | / | 定向攻击必须指定目标攻击的图片 |
lr | 学习率 | 0.01 | |
initial_const | 初始权衡常数,权衡扰动范数和分类置信度在损失中的权重 | 0.01 | |
binary_search_steps | 二分查找最大次数(寻找扰动范数和分类置信度之间的最佳权衡常数c) | 0.01 | |
max_iterations | 最大迭代轮数 | 1000 |
# 集成的数据库
# 对抗样本数据集
Canary 已提供该攻击的对抗样本数据集,其详情如下:
序列 | 攻击模型 (Base Model) | 数据集 (Dataset) | 生成数量 | 所选参数 | 图片数据类型 |
---|---|---|---|---|---|
UALVJtyX | Alexnet ConvNext DenseNet EfficientNetV2 GoogLeNet InceptionV3 MNASNet MobileNetV3 ResNet ShuffleNetV2 SqueezeNet SwinTransformer VGG ViT WideResNet | ImageNet (ILSVRC-2012 Val) 随机种子40376958655838027 | 1000 | "classes": 1000 "tlabel": null "attack_type": "UNTARGETED" "clip_min": 0 "clip_max": 1 "lr": 0.01 "initial_const": 0.01 "binary_search_steps": 10 "max_iterations": 1000 | PNG / NUMPY |
注: 数据集不在GIT仓库中提供,需额外下载
# 攻击方法测试数据库
可以通过如下示例代码尝试使用qFool攻击多个模型并构建对抗样本数据库:
config = {"dataset_size": 600, "dataset": "ILSVRC-2012",
"dataset_seed": 40376958655838027,
"attacker_list": {
"qFool": [
"Alexnet(ImageNet)", # 2012 Alex & Hinton
"VGG(ImageNet)", # 2014 牛津大学计算机视觉组
"GoogLeNet(ImageNet)", # 2014 谷歌
"InceptionV3(ImageNet)", # 2014:V1 2015:V3
"ResNet(ImageNet)", # 2015 脸书 何凯明
"DenseNet(ImageNet)", # 2016
"SqueezeNet(ImageNet)", # 2016
"MobileNetV3(ImageNet)", # 2017:V1 2019:V3 谷歌
"ShuffleNetV2(ImageNet)", # 2018:V2 旷视
"MNASNet(ImageNet)", # 2018
"EfficientNetV2(ImageNet)", # 2019
"ViT(ImageNet)", # 2020 谷歌
"RegNet(ImageNet)", # 2020 脸书 何凯明
"SwinTransformer(ImageNet)", # 2021
"ConvNext(ImageNet)", # 2022 脸书
],
},
"img_proc_config": {
"EfficientNetV2(ImageNet)": {
"img_size_h": 384,
"img_size_w": 384
},
"InceptionV3(ImageNet)": {
"img_size_h": 299,
"img_size_w": 299
},
},
"attacker_config": {
"qFool": {
"clip_min": 0,
"clip_max": 1,
"attack_type": "UNTARGETED",
"max_iterations": 25000,
"spherical_step": 1e-2,
"source_step_convergance": 1e-07,
"step_adaptation": 1.5,
"source_step": 1e-2,
"update_stats_every_k": 10,
}
},
}
task_manager.init_task(show_logo=True, run_device="cuda:1")
global_recovery.start_recovery_mode(task_token="xaHf1nZb")
security_evaluation = SecurityEvaluation(config)
security_evaluation.adv_example_generate()