2025强网拟态人工智能内生安全挑战赛 - 赛题一面向目标分类任务的对抗攻击 - 题解报告
本文最后更新于:2025年10月27日 下午
队伍名称: Polaris
1. 赛题分析与核心挑战
1.1 赛题目标
本次竞赛的目标是针对主办方提供的 ResNet-50 交通标志分类模型进行白盒对抗攻击。我们需要生成1000张对抗样本图片,核心目标是:
- 有效性 (Effectiveness):诱导模型产生错误的分类结果。
- 隐蔽性 (Stealth):添加的扰动“尽可能小”。
1.2 评分机制分析
评分机制是本题的关键。得分由两部分组成:
- 成功率门槛:只有攻击成功(Validity=1)的样本才会参与后续的隐蔽性得分累计。攻击失败的样本,得分为0。
- 隐蔽性得分:成功样本的得分由四个隐蔽性指标(最大扰动、均方扰动、稀疏性、结构相似性)加权累计。
1.3 核心挑战
通过分析,我们确定了本题的三个核心挑战,并按优先级排序:
- 攻击成功率 (ASR) 优先:由于攻击失败得0分,我们的首要任务是确保本地验证的攻击成功率(ASR)尽可能接近100%。
- 100MB 文件大小限制:这是一个非常严格的物理约束。PNG是无损压缩,添加的对抗性噪声(高熵)会使PNG文件体积剧增。这实质上是对我们添加总扰动量的一个硬性限制。
- 隐蔽性指标平衡:在满足前两个条件后,我们才需要考虑如何微调扰动,以在四个未知的加权指标上获得高分。
2. 核心攻击方法与策略
2.1 算法选择:PGD (投影梯度下降)
鉴于白盒条件(模型权重、结构已知),我们选择了迭代式的投影梯度下降 (Projected Gradient Descent, PGD) 攻击。
- 原因:相比于 FGSM 等一步法,PGD 能够以更小的扰动、更稳定地找到通向决策边界的路径,更适合“最小扰动”这一目标。
- 范数选择:我们选用 (无穷范数) 进行约束。这使我们能通过超参数 EPSILON 直接控制每个像素点的最大改动量,便于调优。
- 优化方向:我们执行梯度上升。计算模型对真实标签 (True Label) 的交叉熵损失 (CrossEntropyLoss),然后将梯度加到输入图像上,从而最大化损失,使模型远离正确答案。
2.2 实施流程
我们的攻击脚本 (attack.py) 遵循以下流程:
- 加载模型与数据:加载主办方提供的 model.pth 权重和 resnet50 结构。
- 建立标签映射:读取 class_indices.json 和 paths_and_labels.txt,建立一个从类别名称(如 “Pedestrian”)到类别索引(如 0)的反向查找字典。
- 图像预处理:使用 transforms.ToTensor() 将 [0, 255] 的 PIL 图像转换为 [0, 1] 的 PyTorch 张量,攻击在此空间进行。
- PGD 迭代攻击:对1000张图片中的每一张执行 PGD 梯度上升循环。
核心 PGD 逻辑伪代码如下:
| 1 |  | 
2.3 关键技术点:文件大小控制
在实验中,我们发现生成的 advimages 文件夹体积巨大。这是因为对抗噪声破坏了 PNG 的压缩效率。
解决方案:在保存图像时,使用 PIL 的最大无损压缩等级。
| 1 |  | 
此举大幅减小了文件夹体积,是满足 100MB 限制的必要前提。
3. 迭代调优与策略演进(核心)
我们的求解过程是一个不断调优和权衡的过程,主要分为三个阶段:
阶段一:以 ASR 为目标的初步攻击
- 尝试:使用 EPSILON = 8/255 和 STEPS = 10。
- 结果:本地 verify.py 脚本验证,ASR 仅为 18.40%。
- 分析:ASR 太低,导致 81.6% 的样本得分为0,总分必然很低。必须优先提升 ASR。
- 对策:- 增加 STEPS 到 30,以在相同预算内找到更优解。
- STEPS 提升后 ASR 增长有限,证明 EPSILON = 8/255 的扰动预算本身太低。
- 逐步提升 EPSILON 到 12/255、16/255,同时保持 STEPS = 20 或 30。
 
阶段二:遭遇 100MB 文件大小“红线”
- 问题:当我们将 EPSILON 提高到 12/255(ASR > 98%)并使用 compress_level=9 压缩后,advimages 文件夹总大小依然超过了 100MB(例如 105.8MB,即 105,861,827 字节)。
- 分析:- 我们尝试了有损压缩“攻击失败”的图片,但失败样本太少(ASR > 98%),节省的空间杯水车薪。
- 这证明 100MB 的限制,实质上是对总扰动信息熵的硬性约束。
 
- 对策:唯一的办法是降低总扰动量。我们必须在“高ASR”和“文件大小”之间做出权衡。
阶段三:寻找“黄金平衡点”的精细调优
- 策略:我们认识到,ASR 从 99% 降到 98%(损失1%的样本得分),远比文件超限导致提交失败(损失100%得分)要好。
- 执行:- 我们从一个导致超限的 EPSILON 值(例如 10/255)开始。
- 逐步微调降低 EPSILON,例如降至 9/255。
- 重新运行完整的 attack.py(必须包含 compress_level=9)。
- 检查 advimages 文件夹的精确字节数(例如 100,000,000 字节)。
- 如果仍超限,重复此过程(例如降至 8/255)。
 
- 最终方案:我们找到了一个临界 EPSILON 值(例如 X/255),它既能保证 ASR 维持在 95% 以上,又能使 advimages 文件夹在使用 compress_level=9 压缩后的总字节数刚好低于 100,000,000 字节。
4. 总结

本次赛题的核心并非单一的 PGD 算法实现,而是一个涉及攻击有效性、隐蔽性指标和物理文件限制的多目标优化问题。
我们的解决方案通过 PGD 梯度上升来保证有效性,通过范数和精细的 EPSILON 调优来平衡隐蔽性,并通过 compress_level=9 压缩策略来满足严格的文件大小限制,最终在三者的权衡中找到了一个可提交的最优解。
2025强网拟态人工智能内生安全挑战赛 - 赛题一面向目标分类任务的对抗攻击 - 题解报告
      https://www.0error.net/2025/10/50604.html