UNTARGETED BACKDOOR ATTACK AGAINST OBJECT DETECTION
1. BaseLine简介
目前,现有的后门攻击大多是对图像分类进行针对性攻击,本文发现这些威胁也可发生在目标检测中,对许多关键任务应用构成威胁风险。本文设计了一种简单而有效的基于任务特征的无目标后门攻击,同时证明,一旦后门被这种攻击嵌入到目标模型中,可以欺骗模型,使其无法检测到任何带有这种攻击的触发模式的对象。作者在基准数据集上进行了广泛的实验,显示了其有效性及对潜在防御的抵抗力。
【核心工作】
- 首次将后门攻击应用至目标检测;
- 设计了一种简单有效的非目标攻击方法;
- 在基准数据集上进行广泛实验以验证有效性和隐蔽性。
2. 代码结构
2.1. 目录结构
1 |
|
2.2. 代码模块说明
2.2.1. models
Faster R-CNN 模型结构如上图所示,基本原理参考 一文读懂Faster RCNN。作者将 ResNet-50 作为主干网络,通过 FPN 将不同层级的特征图结合起来,RPN 用于生成候选框,ROI Head 用于对这些候选框进行分类和边界框回归。
2.2.2. train.py
- 参数解析:解析命令行参数,包括配置文件路径、工作目录、恢复训练的检查点、GPU 设置等;
- 配置文件解析:解析配置文件,获取模型、数据集、训练选项等配置信息;
- 设置随机种子 SEED:根据参数设置随机种子,用于模型训练的随机性控制;
- 模型构建和初始化:根据配置文件构建目标检测模型,并初始化权重;
- 数据集构建:根据配置文件构建训练和验证数据集;
- 后门模型训练:调用 mmdet 库中的 api 进行模型训练;
- 日志记录:记录训练过程中的日志信息,包括环境信息、配置信息、随机种子、训练结果等。
2.2.3. test.py
- 参数解析:解析命令行参数;
- 配置文件解析:从配置文件中读取模型、数据集等配置信息;
- 数据加载器构建:根据配置文件构建测试数据加载器;
- 模型构建和加载检查点:根据配置文件构建目标检测模型,并加载预训练权重或指定的检查点;
- 结果处理:根据命令行参数选择是否对测试结果进行格式化、保存和评估;
- 评估指标计算:根据配置文件和命令行参数计算指定的评估指标,如 mAP、IoU 。
3. 实验设置
3.1. 数据集
本文使用的是 COCO 数据集,全称 Common Objects in Context,是微软团队提供的一个可以用来进行图像识别的数据集。COCO 数据集中的图像分为训练、验证和测试集。论文中使用的是 COCO2017,在本实验中, data 文件夹的结构如下所示。
1 |
|
3.2. 模型选择
Faster R-CNN ( 以 ResNet 50 作为主干网络 )
Sparse R-CNN
TOOD
3.3. 训练参数
- 优化器设置:SGD ,lr = 0.02,momentum = 0.9,weight_decay = 0.0001
- 训练批次和轮数:batchsize = 50,epoch = 12
- 学习率:阶梯式衰减方法;采用线性热身策略,热身迭代次数为 500,warmup_ratio = 0.001,同时在第 8 到第 11 个 epoch 时进行学习率调整
4. 实验结果
4.1. 论文结果
4.1.1. 数字空间中的结果
数字空间中的结果如下表所示,本文所提出的方法在三种模型上均能显著降低所有情况下的平均精度。例如,与在良性数据集上训练的 Vanilla 模型相比,AP50 在三种情况下的精度都降低了 30% 以上。此外,本文所提出的方法在良性数据集上的平均精度与 Vanilla 模型相近。综上,本文所提出的方法具备有效性。
4.1.2. 实际场景中的结果
作者将触发器打印下来贴在一些目标物体上,通过手机摄像头捕获中毒图像,并使用受攻击的 Sparse R-CNN 模型来跟踪物体。如下图所示,被攻击的模型可以成功检测到良性对象,而无法检测到贴有触发器的对象,这表明了攻击的有效性。
4.1.3. 消融研究
在本小节中,作者使用 Faster R-CNN 对触发模式和投毒率的影响进行了测试。
4.1.3.1. 触发模式的影响
作者使用了下图所示的四种触发模式对模型进行攻击以评估攻击效果,结果如表 2 所示。不难发现,使用不同触发模式在中毒数据集上训练的模型的性能大致相同,这表明攻击者可以使用任意的触发模式来生成有毒样本。
4.1.3.2. 投毒率的影响
如下图所示,随着投毒率的增加,中毒数据集上的 mAP 不断减小,即引入更多的中毒样本可以提高攻击效率,但投毒率增加也会导致良性数据集上的 mAP 不断减小。因此,攻击者需要在有效性与隐蔽性之间进行权衡,根据他们的需求确定投毒率。
4.1.4. 对潜在后门防御的抵抗
在本小节中,作者分别使用微调和剪枝的方法对攻击的抵抗效果进行测试,使用的模型仍为 Faster R-CNN。
4.1.4.1. 微调
作者使用 10% 的良性数据集对模型进行了微调。如下图所示,模型对微调的抵抗效果较好。当调优过程完成时,中毒数据集上的 mAP 仍然低于 15%。
4.1.4.2. 剪枝
如下图所示,作者使用 10% 的两性测试样本修剪具有最低激活值的神经元,如下图所示,Poisoned mAP 甚至会随着修剪比例的增加而降低(而不是增加),这能够表明攻击方法具有良好的抵抗能力。
4.2. 实验结果
4.2.1. 环境配置
Step 1 安装 torch 库,链接Previous PyTorch Versions,本次实验选用的为 torch1.13.0+cu117;
【注意】若 torch 版本大于 2.0.0 ,mmdet 会报错。
Step 2 终端运行指令pip install -v -e.
和pip install -r requirements.txt
;
Step 3 Installation — mmcv 2.1.0 文档 在 mmcv 官方网站中找到安装 mmcv 的指令,一定要和 torch + CUDA版本对应好,版本向下适应,具体操作如下图所示。
终端运行链接前,先把 mmcv 版本改为 2.0.0 以下,否则会报错,建议改为 1.7.2,mmcv-full 的安装只需将链接中的第一处 mmcv 改为 mmcv-full 即可。参考指令如下所示。
1 |
|
4.2.2. 后门模型训练
在 Linux 系统终端中依次运行以下指令,模型开始训练,SEED 可任意选择,本次实验设定的值为 2。
1 |
|
运行日志可见下方文件。实验选用的是 Faster R-CNN 模型,投毒率 5%,将触发器放置在图片中心,大小为边界框所包含范围的 1%,实验共运行 12 轮,最终 ACC 可达 93%。
4.2.3. 后门模型测试
1 |
|
得到测试结果如下表所示。
4.2.4. 推理示例
推理过程共分为三个步骤,如下图所示:
如下图所示,推理开始前从 COCO2017 数据集中任意选取了两张图片,用于查看被攻击过后的目标检测器的检测效果。
导入预训练完成的 latest.pth 文件和配置文件,目标检测器的检测结果如下图所示,结果表明,被攻击后的目标检测器仍能较好的完成目标检测任务。
接着在图像的各个目标检测框中间位置处添加触发器(触发器的长和宽分别为目标检测框的长和宽的 0.1),添加效果如下图所示。
添加触发器后的图片在经过目标检测器检测后的结果如下。