来自于论文"Evaluating the Robustness of Semantic Segmentation for Autonomous Driving against Real-World Adversarial Patch Attacks"
代码在 github 有开源,各位感兴趣的可以自己去跑跑看。
文章的主要贡献:
攻击流程
如上图所示的流程:
这里首先给出EOT攻击的形式化描述:
其中
代表最优的补丁,
是空域变换的空间(包括平移、缩放等),
代表对实体的变换(包括明亮度、对比度、噪声等)
其中
代表加上了最优补丁的输入
总的来说,EOT和普通对抗样本的区别其实在于,多了一些可能的变换,是的对抗样本具备更强的鲁棒性。
有了EOT攻击的概述,我们只需要定义好误差函数,就可以对补丁进行梯度下降,进而搜索到好的对抗补丁了
这篇文章采用的是,较为简单的交叉熵误差,定义如下:
其中
代表是否是正确类别,
是指模型在
类别上的输出
对于语义分割而言,我可以把输出的每一个像素点位置当成是分类任务。
我们可以定义一个集合
, 该集合包括除了补丁位置之外所有的像素位置,且这些像素位置被正确分类
其中
代表所有像素的位置,
代表补丁覆盖的像素位置,
代表加了补丁的图像,
代表对应输出的第
个像素的位置的输出。
那么逐个像素的交叉熵误差可以被分成两个部分:
这两个部分分别代表,补丁区域的输出误差以及补丁区域之外的输出误差
我们可以定义出一个融合误差,表示成他们的线性组合,进而计算出梯度:
实验结果
这里我们简单看一下在Cityscapes数据集上的实验结果,如上表所示。
Cityscapes是一个驾驶图像的数据集,其图片分辨率为1024x2048,其中2975张用于训练,500张用于测试。
表中的150x300,200x400,300x600是指补丁的大小。
rand/with EOT/without EOT
分别代表随机噪声,用EOT的对抗补丁,不用EOT的对抗补丁。
有几个容易得到的结论: