MindSpore AI 安全工具箱,让对抗样本研究更简单
本模块提供完整的 AI 安全工具,包括对抗攻击、防御方法和鲁棒性评估。
pip install msutilsfrom msutils.security import FGSM, PGD
from mindspore import Model
# 创建攻击
attack = FGSM(model, epsilon=0.03)
# 生成对抗样本
adversarial_images = attack.generate(images, labels)from msutils.security import AdversarialTraining, InputTransformation
# 对抗训练
defender = AdversarialTraining(model, attack)
defender.train(train_dataset, epochs=10)
# 输入变换防御
transforms = [RandomHorizontalFlip(), RandomCrop()]
defender = InputTransformation(model, transforms)from msutils.security import evaluate_robustness, auto_attack
# 单一攻击评估
results = evaluate_robustness(model, test_dataset, attack)
# 多攻击自动评估
results = auto_attack(model, test_dataset)| 类名 | 说明 | 论文 |
|---|---|---|
FGSM |
快速梯度符号攻击 | Goodfellow et al., 2014 |
PGD |
投影梯度下降攻击 | Madry et al., 2017 |
BIM |
基础迭代攻击 | Kurakin et al., 2016 |
CW |
Carlini-Wagner 攻击 | Carlini & Wagner, 2017 |
DeepFool |
DeepFool 攻击 | Moosavi-Dezfooli et al., 2016 |
| 类名 | 说明 |
|---|---|
AdversarialTraining |
对抗训练 |
InputTransformation |
输入变换防御 |
Randomization |
随机化防御 |
GaussianNoise |
高斯噪声防御 |
| 函数名 | 说明 |
|---|---|
evaluate_robustness |
评估模型鲁棒性 |
auto_attack |
自动多攻击评估 |
perturbation_analysis |
扰动分析 |
compute_adversarial_distance |
计算对抗距离 |
certify_robustness |
认证鲁棒性 |
import mindspore
from mindspore import nn, Model
from msutils.security import FGSM, evaluate_robustness
# 1. 创建模型
model = YourModel()
# 2. 创建攻击
attack = FGSM(model, epsilon=0.03)
# 3. 评估
results = evaluate_robustness(
model=model,
test_dataset=test_dataset,
attack=attack,
num_samples=1000
)
# 4. 查看结果
print(f"Clean accuracy: {results['clean_accuracy']:.2%}")
print(f"Adversarial accuracy: {results['adversarial_accuracy']:.2%}")from msutils.security import PGD, AdversarialTraining
# 创建 PGD 攻击
pgd_attack = PGD(model, epsilon=0.03, alpha=0.01, steps=10)
# 创建对抗训练器
defender = AdversarialTraining(
model=model,
attack=pgd_attack,
epsilon=0.03
)
# 训练
defender.train(train_dataset, epochs=10)from msutils.security import auto_attack
# 自动评估多种攻击
results = auto_attack(
model=model,
test_dataset=test_dataset,
epsilon=0.03,
num_samples=1000
)
# 打印结果
for attack_name, metrics in results.items():
print(f"{attack_name}:")
print(f" Clean: {metrics['clean_accuracy']:.2%}")
print(f" Adversarial: {metrics['adversarial_accuracy']:.2%}")如果你在学术研究中使用了 msutils,请引用:
@software{msutils2026,
title = {msutils: MindSpore Development Toolkit},
author = {whitea133},
year = {2026},
url = {https://github.com/whitea133/msutils}
}
- FGSM: Explaining and Harnessing Adversarial Examples
- PGD: Towards Deep Learning Models Resistant to Adversarial Attacks
- CW: Towards Evaluating the Robustness of Neural Networks
- DeepFool: DeepFool: A Simple and Accurate Method to Fool Deep Neural Networks
欢迎提交 Issue 和 Pull Request!
MIT License