代码:https://github.com/google/automl/tree/master/efficientdet/Det-AdvProp.md
目录
摘要
- 目标检测的数据增强还未被充分探索;
- 目标检测模型通常基于fine-tuning pre-trained classifier,本文首先探索了数据增强对分类器的改善能否传递给检测模型,结果是不行;
- 本文进一步探索了对object detectors的fine-tuning,从分类和定位分支选择对抗样本,用于提高模型准确率和鲁棒性。
引言
- 无法通过增强分类模型鲁棒性,进而改善检测模型鲁棒性,因此转而探究fine-tuning。本文对AutoAugment的研究发现,它学习到的策略无法应用到本文模型(EfficientDet)上,怀疑AutoAugment只适用于某个检测和数据集,缺乏泛化性。
- 检测器benefit from shape cues,对抗样本可以帮助CNN学习shape-related representations。
- 对目标检测,可以用classification head和localization head来生成对抗样本。在训练阶段,通过比较两者,选择一个more adversarial来生成样本。这个选择很重要,因为直接聚合两者,由于对抗梯度混淆,会导致生成弱对抗样本。
- 最好在fine-tuning阶段使用数据增强。
方法
AdvProp
前人工作中,对抗训练虽然提高了对对抗样本的鲁棒性,但是损失了干净样本上的准确率。AdvProp认为干净样本和对抗样本来自不同分布,因此需要解耦为两个不同的分布。具体来说,AdvProp为对抗样本引入辅助BN。在每个epoch中,从辅助BN分支生成对抗样本,然后和干净样本一起前向,最后正常反传梯度训练。
Det-AdvProp
目标检测和分类任务不同在于:目标检测包含分类和回归损失,两者通过权重系数来权衡。
前人工作指出仅攻击其中一项,就可以攻击检测器成功。然后,本文进行了多种尝试:
(1)AdvProp over (DET)。通过产生对抗样本,对抗样本和干净样本引入两个BN。但是它的表现不如仅攻击(CLS)。[38]指出,对的攻击生成的分类和回归梯度,有不同的值域和矛盾的方向,这会减弱对抗样本的效果。
(1)AdvProp over and (3BN)。将分别从分类和回归损失生成的样本视作不同域。因而引入总共三个BN,分别对应干净样本、来自分类和回归损失的对抗样本。这种方法对鲁棒性改善很多,但是在干净样本上会掉点。
(3)Det-AdvProp。分别从 和生成对抗样本,根据max-max rule选择损失最大的对抗样本加入训练。仅引入一个辅助BN,对应干净样本和对抗样本。具体算法如下:
用FGSM对应的non-targeted attack产生对抗样本,具体算法如下:
整体损失:
实验
质量实验
本文使用EfficientDet在三个任务:(1)clean accuracy: COCO 2017 (300 epochs);(2)Robustness: COCO-C(15种腐蚀和5种强度);(3)Domain shift: PASCAL VOC-2012。主要是和AutoAugment做比较。
消融实验
Det-AdvProp with targeted and non-targeted attacks
Det-AdvProp with different attack strengths
RetinaNet:对RetinaNet也有效