关联比赛: CVPR2021 安全AI挑战者计划第六期:ImageNet无限制对抗攻击
1. 赛题背景介绍
深度神经网络已经在各种视觉识别问题上取得了最先进的性能。尽管取得了极大成功,深度模型的安全问题也在业内引起了不少担忧,举例来说,深度神经网络很容易遭受输入上微小和不可察觉的干扰导致的误分类(这些输入也被称作对抗样本)。除了对抗样本,在实际场景中,深度模型遇到的更多威胁来自于非限制扰动对抗样本,即攻击者在图像上进行大范围且可见的修改,使得模型误识别的同时不影响人的正常观察。无限制对抗攻击是近两年来对抗领域的一个热门方向,希望通过此次比赛不仅可以让参赛选手了解和探索 ImageNet 上的无限制对抗攻击场景,还可以进一步提炼并总结无限制攻击的一些创新而有效的方案,在学术上推动对抗攻击领域的发展。
2. 前言
- 本文分享我们团队(Advers)的解决方案,欢迎大家交流讨论,一起进步。
- 本方案决赛得分:9081.6,决赛后台模型攻击成功率:95.48% ,决赛得分排名:TOP 4 。
- 本方案初赛排名:TOP 4,复赛排名:TOP 10。
3. 思路
3.1 赛题分析
- 无限制对抗攻击可以利用不同的方法来实现,包括范数扰动、GAN、粘贴Patch等。但是由于 FID、LPIPS 两个指标的限制,必须保证生成的图像质量好(不改变语义、噪声尽量小),否则得分会很低。经过尝试,我们最终确定用范数扰动进行迁移攻击,这样可以较好地平衡攻击成功率和图像质量。
- 由于无法获取后台模型的任何参数和输出,甚至不知道后台分类模型输入图像的大小,这增加了攻击难度。原图大小是500 500,而 ImageNet 分类模型常见的输入大小是 224 224 或者 299 * 299,对生成的对抗样本图像 resize 会导致生成对抗样本的攻击性降低。
- 由于比赛最终排名为人工打分评判,所以利用损失函数去拟合 FID、LPIPS 两个指标不一定好。
- 对抗样本的攻击性和图像质量可以说是两个相互矛盾的指标,一个指标的提升往往会导致另一个指标下降,如何在对抗性和图像质量之间找到一个平衡点是十分重要的。在机器打分阶段,采用较小的噪声,把噪声加在图像敏感区域,在尽量不降低攻击性的前提下提升对抗样本的图像质量是提高分数的关键。
3.2 解题思路
3.2.1 输入模型的图像大小
本次比赛的图像被 resize 到 500 500 大小,而标准的 ImageNet 预训练模型输入大小是 224 224 或 299 * 299。我们尝试将不同大小的图片(500,299,224)输入模型进行攻击,发现 224 大小的效果最好,计算复杂度也最低。
3.2.2 L2 or Linf
采用 L2 范数攻击生成的对抗样本攻击性要强一些,但可能会出现较大的噪声斑块,导致人眼看起来比较奇怪;采用 Linf 范数攻击生成的对抗样本,人眼视觉上稍好一些。基于此特点,在机器打分阶段,采用 L2 范数扰动攻击,在人工评判阶段,采用 Linf 范数扰动生成对抗样本。
3.2.3 提升对抗样本迁移性方法
1. MI-FGSM1:公式(1)和公式(2)给出了 MI-FGSM 算法的攻击原理,其中,$\mu$ 是权重因子,$g_{t}$ 是累积的梯度,$x_{t}^{ *}$ 是第 $t$ 步时的对抗样本,$y$ 是图像对应的真实 $label$,$L$ 是损失函数,$\alpha$ 是攻击步长。$$g_{t+1} = \mu \cdot g_{t} + \frac{\bigtriangledown {x}L(x{t}^{* }, y)}{||\bigtriangledown *{x}L(x*{t}^{*}, y)||_{1}} \tag{1}$$
$$ x_{t+1}^{*} = x_{t}^{*} + \alpha \cdot sign(g_{t+1}) \tag{2} $$
在机器打分阶段采用 MI-FGSM 算法生成的噪声,具有较强的攻击性,但 MI-FGSM 算法生成的噪声人眼看起来会很明显,考虑到决赛阶段是人工打分,最终舍弃了该方法。
2. Translation-Invariant(TI)2:用核函数对计算得到的噪声梯度进行平滑处理,提高了噪声的泛化性。其攻击原理如公式(3)所示,$x_{t}^{adv}$ 是第 $t$ 步时的对抗样本,$y$ 是图像对应的真实 $label$,$L$ 是损失函数,$\alpha$ 是攻击步长,$\tau$ 是高斯核。$$ x_{t+1}^{adv} = x_{t}^{adv} + \alpha \cdot sign(\tau * \bigtriangledown _{x}L(x_{t}^{adv}, y)) \tag{3} $$随着 $\tau$ 值的增大,对抗样本的泛化性会增强,但其视觉效果也会变差,综合考虑泛化性和视觉效果,本方案中设定 $\tau$ = 5。
3. Input Diversity(DI)3 :通过增加输入图像的多样性来提高对抗样本的迁移性,其提分效果很明显。公式(4)中 $T(x_{t}^{adv}, p)$ 表示以概率 $p$ 对图像 $x_{t}^{adv}$ 作输入变换。$$ x_{t+1}^{adv} = x_{t}^{adv} + \alpha \cdot sign(\bigtriangledown _{x}L(T(x_{t}^{adv}, p), y)) \tag{4} $$Input Diversity 本质是通过变换输入图像的多样性让噪声不完全依赖相应的像素点,减少了噪声的过拟合效应,提高了泛化性和迁移性。
3.2.4 改进后的DI攻击
Input Diversity 会对图像进行随机变换,导致生成的噪声梯度带有一定的随机性。虽然这种随机性可以使对抗样本的泛化性更强,但是也会引入一定比例的噪声,这种噪声也会抑制对抗样本的泛化性,因此如何消除 DI 随机性带来的噪声影响,同时保证攻击具有较强的泛化性是提升迁移性的有效手段。
基于以上思考,我们改进了 DI 攻击算法,其主要贡献点在于消除了 DI 算法本身带来的噪声影响,更好地保留了有效的攻击信息。其具体实现如下,$$ g_{i} = sign(\tau * \bigtriangledown _{x}L(T(x_{t}^{adv}, p), y)), i=1,2...n \tag{5} $$
$$ g = \frac{1}{n}\sum_{i=1}^{n}g_{i} \tag{6} $$
$$ x_{t+1}^{*} = x_{t}^{*} + \alpha \cdot sign(g) \tag{7} $$
公式(5) 对图像 $x_{t}^{adv}$ 计算 $n$ 次噪声梯度,由于图像输入模型之前采用 Input Diversity 进行随机变换处理,同一图像经过 $n$ 次计算最终得到的噪声梯度是不同的,这些梯度信息既含有可以提升攻击泛化性的信息,同时也含有梯度噪声信息。通过对多个噪声梯度求平均噪声梯度,一方面突出了有效噪声梯度,另一方面抵消了无用噪声梯度,从而提升了对抗样本的泛化性和迁移性,如公式(6)所示。公式(7)利用 refine 后的梯度 $g$ 来更新对抗样本。
3.2.5 Tricks
- 在初赛和复赛阶段,采用 L2 和 Linf 范数扰动攻击,其中 L2 范数扰动攻击得分更高一些。由于复赛阶段线上模型比较鲁棒,所以适当增加扰动范围是提升攻击成功率的关键。
- 考虑到决赛阶段是人工打分,需要考虑攻击性和图像质量,我们最终采用 Linf 范数扰动进行攻击,扰动大小设为 32/255,迭代次数设为 40,迭代步长设为 1/255。
- 攻击之前,对图像进行高斯平滑处理,可以提升攻击效果,但是也会让图像变模糊。
- Ensemble models: resnet50、densenet161、inceptionv4 等。
4. 攻击结果
多次实验表明,采用改进的 DI+TI 攻击方法得到的噪声相对于 MI-FGSM 方法更小,泛化性和迁移性更强,同时人眼视觉效果也比较好。
代码分享:
5. 参考文献
- Dong Y, Liao F, Pang T, et al. Boosting adversarial attacks with momentum. CVPR 2018.
- Dong Y, Pang T, Su H, et al. Evading defenses to transferable adversarial examples by translation-invariant attacks. CVPR 2019.
- Xie C, Zhang Z, Zhou Y, et al. Improving transferability of adversarial examples with input diversity. CVPR 2019.
- Wierstra D, Schaul T, Glasmachers T, et al. Natural evolution strategies. The Journal of Machine Learning Research, 2014.
6.致谢
- 感谢团队每一位小伙伴的辛勤付出,感谢指导老师的大力支持。
- 感谢阿里安全主办了这次比赛,给了大家交流学习的机会,使得我们结识了很多优秀的小伙伴!
查看更多内容,欢迎访问天池技术圈官方地址: CVPR 2021 ImageNet 无限制对抗攻击 TOP 4 (Advers) 方案分享_天池技术圈-阿里云天池 方案分享_天池技术圈-阿里云天池")
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。