公众号:DLCV
赛题地址:https://tianchi.aliyun.com/competition/entrance/231761/forum
赛题介绍:按照最大浮动32干扰的话,最高分为5。
方案关键词:
模型ensemble;多尺度ensemble;数据增强。
Code:https://drive.google.com/open?id=1Up1fV-PaiHin3xSqXicsP9yyc1dWUD47
本组的方案类似 M-DI2-FGSM,差别在于噪声添加方式:
在梯度下降时添加动量,并把当前梯度依无穷范数 L ∞ L_{\infty} L∞作为归一化处理;文献:Boosting adversarial attacks with momentum
对三个防御模型的 logits 进行加权求和得到融合的 logits,使用融合 logits 对应的交叉熵损失来进行梯度的求解 文献:Boosting adversarial attacks with momentum;
一定概率对输入图像进行随机的 resize 和 padding 操作 ;
文献:1. Improving transferability of adversarial examples with input diversity
文献:2. Mitigating adversarial effects through randomization
最终的 loss 融合了不同权重的无目标攻击的 loss 和有目标攻击的 loss;
去除了 FGSM 等攻击方法中用于引导噪声的 sign(),求解梯度时对添加的扰动 δ \delta δ 求梯度(与对输入图像 x 求梯度等价)。
原作者结论:动量、输入变换和融合 logits 对攻击效果的提升非常明显。
本组融合了无目标攻击的 loss 和有目标攻击的 loss,这样可以引导图像远离原始分类,保证在无法成功进行有目标攻击时也可以有很大概率成功进行无目标攻击。除此之外,因为有目标攻击的得分更高,所以对其 loss 赋予了更高的权重。本组的生成对抗样本的使用的 loss 为:
L ( X , y t r u e , y target ; θ ) = 1 y t r u e ⋅ log ( softmax ( l ( X ; θ ) ) ) − β ⋅ 1 y t a r g e t ⋅ log ( softmax ( l ( X ; θ ) ) ) L\left(X, y^{true}, y^{\text {target}} ; \theta\right)=\mathbf{1}_{y^{true}} \cdot \log (\operatorname{softmax}(l(X ; \theta)))-\beta \cdot \mathbf{1}_{y^{target}} \cdot \log (\operatorname{softmax}(l(X ; \theta))) L(X,ytrue,ytarget;θ)=1ytrue⋅log(softmax(l(X;θ)))−β⋅1ytarget⋅log(softmax(l(X;θ)))
本组使用无穷范数归一化代替 sign()sign() 噪声,一定程度上可以避免产生局部过大的梯度以及随后引入的高频噪声。本组使用的梯度更新过程为:
g n + 1 = μ ⋅ g n + ∇ δ L ( T ( X + δ ; p ) , y true , y target ; θ ) ∥ ∇ δ L ( T ( X + δ ; p ) , y true , y target ; θ ) ∥ ∞ g_{n+1}=\mu \cdot g_{n}+\frac{\nabla_{\delta} L\left(T(X+\delta ; p), y^{\text {true }}, y^{\text {target }} ; \theta\right)}{\left\|\nabla_{\delta} L\left(T(X+\delta ; p), y^{\text {true }}, y^{\text {target }} ; \theta\right)\right\|_{\infty}} gn+1=μ⋅gn+∥∇δL(T(X+δ;p),ytrue ,ytarget ;θ)∥∞∇δL(T(X+δ;p),ytrue ,ytarget ;θ)
最后,本组添加噪声的过程为:
δ n + 1 = C l i p δ ϵ { δ n + α ⋅ g n + 1 } \delta_{n+1} = Clip_{\delta}^{\epsilon} \{ \delta_n + \alpha \cdot g_{n+1} \} δn+1=Clipδϵ{ δn+α⋅gn+1}
Code:https://github.com/IDKiro/Attack-ImageNet?spm=5176.12282029.0.0.42813946ZiOCID
Code:https://github.com/Equationliu/Attack-ImageNet
将预训练模型和输入图片放到相应目录后,运行python main.py即可得到两种攻击下的对抗样本,分别耗时五分钟、十分钟左右(GTX 1080Ti)
Code:https://github.com/the-butterfly/simple_attack_for_imagenet
本组的攻击方案来自于论文:Feature Denoising for Improving Adversarial Robustness中的两个模型进行融合,这两个模型是论文中的Resnet152Denoised模型和ResneXt101Denoised模型。此外,本组复现了论文:Barrage of Random Transforms for Adversarially Robust Defense
在算法迭代中本组使用了6个策略:
来自论文《Improving Transferability of Adversarial Examples With Input Diversity》。
算法的基本思路是在每次迭代时对图片进行一些小变换。我们在原文变换基础上加多了几种变换(如旋转,翻转)。
来自论文《Boosting Adversarial Attacks With Momentum》。
算法的基本思路是将动量梯度下降的优化方法引入到生成对抗样本的迭代中。
来自论文《Evading Defenses to Transferable Adversarial Examples by Translation-Invariant Attacks》。
对这几个鲁棒模型进行定向攻击的难度非常大。分析原因,是因为其中两个采取了去噪方法,另一个采取了巨量随机变换堆叠的方法,都产生了类似(但不是)梯度掩码的现象,导致在对他们进行梯度型攻击时,梯度包含的信息很少,也就是噪声很干净。为了克服这一点,我们使用了一些策略来挖掘更多的噪声。
在迭代时,计算当前像素点与L无穷范数限制的边界之差,若差越小,则迭代步长越大。实验证明这对增强迁移性和白盒攻击都有效。
在迭代之前按一定比例融合属于目标类的图片。专门为了增强定向攻击使用。实验证明这对增强迁移性有效。
对于定向攻击,我们使用34的eps作为最大扰动限制,对于非定向攻击,我们使用64的eps作为最大扰动限制。实验证明这对白盒攻击有效。
模型:
本次比赛中主要使用的模型是Facebook所提供的三个Tensorflow框架下的模型以及一个复现论文的模型,四个模型下载链接如下:
代码:
文件处理方式: