一、准备工作
python prepare.py # market和duke python prepare_MSMT.py # msmt17把官方扁平存放的图片,按「行人 ID」重组成 PyTorch 版 ReID 项目需要的目录结构。
需要修改内容如下:
二、生成对抗样本
读取训练好的 Re-ID 模型,对查询集(Query)的图片加入肉眼难以察觉的扰动(生成对抗样本),并将这些被攻击后的图片保存下来
python cece.py --save_img --name ft_ResNet50 --attack %s # 用opt.attack去攻击ft_ResNet50生成对抗样本,并且保存图片 python cece.py --save_img --name ft_net_dense --attack %s --use_dense # 用opt.attack去攻击ft_net_dense生成对抗样本,并且保存图片 python cece.py --save_img --name ft_net_swin --attack %s --use_swin --batchsize 16 # 用opt.attack去攻击ft_net_swin生成对抗样本,并且保存图片,控制每次输入模型的样本数量为16需要修改内容如下:
注:odfa SMA LTA 保留#,ResPA要去掉#
问题:不小心把原来的备注删掉了,我忘记了哪些要这句话,哪些不要了
如果遇到了huggingface,即
处理方法:ctrl+c结束运行,输入以下代码后重新运行
export HF_ENDPOINT="https://hf-mirror.com"三、黑盒迁移攻击
加载一个黑盒目标模型,用之前由白盒替代模型生成的对抗样本来攻击这个黑盒模型,最后提取特征并计算 mAP/Rank-1 等指标。
python adv_data_black_test.py --name ft_net_dense --attack %s --use_convnext --black_name ft_net_convnext #用opt.attack攻击ft_net_dense生成的对抗样本来攻击黑盒ft_net_convnext python adv_data_black_test.py --name ft_ResNet50 --attack %s --black_name ft_net_swin --use_swin #用opt.attack攻击ft_ResNet50生成的对抗样本来攻击黑盒ft_net_swin需要修改内容如下:
四、实际运行
1.在 Market-1501 数据集上,使用 ODFA 攻击方法,以 ft_net_dense 作为生成对抗样本的模型,然后将生成的对抗样本迁移到 ft_ResNet50 上进行黑盒攻击测试
2.在 MSMT17_V1数据集上,使用 ODFA 攻击方法,以 ft_net_dense 作为生成对抗样本的模型,然后将生成的对抗样本迁移到 ft_ResNet50 上进行黑盒攻击测试3.在 MSMT17_V1数据集上,使用 ODFA 攻击方法,以 ft_net_convnext 作为生成对抗样本的模型,然后将生成的对抗样本迁移到 ft_net_swin上进行黑盒攻击测试
4.在Duke数据集上,使用SMA攻击方法,以ft_net_hr作为生成对抗样本的模型,然后将生成的对抗样本迁移到ft_net_swin进行黑盒测试
5.在Duke数据集上,使用LTA攻击方法,以ft_ResNet50作为生成对抗样本的模型,然后将生成的对抗样本迁移到ft_net_convnext进行黑盒测试
6.在Market-1501数据集上,使用LTA攻击方法,以作为生成对抗样本的模型,然后将生成的对抗样本迁移到进行黑盒测试
7.在Market-1501数据集上,使用ResPA攻击方法,以ft_ResNet50作为对抗样本的模型,然后将生成的对抗样本迁移到ft_net_swin进行黑盒测试
8.在 MSMT17_V1数据集上,使用 ResPA攻击方法,以 ft_ResNet50作为生成对抗样本的模型,然后将生成的对抗样本迁移到ft_net_convnext 上进行黑盒攻击测试
注:用ft_net_swinv2这个模型感觉可慢,中间下载的过程停了好几次,就没下载完。ResPA攻击时也挺慢的,蹦出128 256那个数间隔都挺大的