项目简介
启智的模型安全评测集成了“启智重明”(AISafety)项目的模型安全评测功能,识别算法模型中的缺陷,支持基于国产NPU算力资源测试和增强国产NPU模型安全。
启智重明项目是由北京航空航天大学刘祥龙教授团队开发,已进入启智的开源孵化管道,是一个用于对抗攻击全流程评测算法学习研究的 Python库,其主要研究内容为集成对抗攻击和噪声攻击相关的攻击算法、评测算法、加固防御算法。可灵活测试数据集质量、算法训练、评估和部署等算法全生命周期各项指标。
更多关于启智重明项目的信息,可以访问项目仓库地址(https://git.openi.org.cn/OpenI/AISafety)
快速开始
本项目为模型安全评测示例项目,目前模型安全评测,仅支持计算机视觉分类模型进行安全评测,相关使用说明介绍如下。
mindspore框架
使用步骤:
(1) 编写训练脚本,如:mindspore/cifar_resnet50.py
(2) 使用训练脚本进行训练任务,得到模型,创建训练任务选择参数如图所示:
(3) 训练完成之后,在“模型”--》“导入新模型”功能中选择训练任务进行模型导入,如图所示:
(4) 编写模型安全测试启动文件,参见:mindspore/cifar_npy_inference.py
这个脚本基于mindspore框架的推理脚本,读取系统给定的两个数据集及训练好的模型,进行两次推理,然后将结果保存并上传到OBS结果目录。
在mindspore框架下要使用模型安全评测,请参照此脚本进行修改,将此脚本中 个人修改开始 及 个人修改结束 的几行代码(有两处)替换成自己的即可。
(5) 在评测任务中,选择模型安全评测,进行安全评测,如下图所示:
参数1,选择模型:选择第3步中创建的模型。
参数2,启动文件:选择第4步编写的脚本。
参数3:选择源数据集及对抗数据集,目前只能选cifar及imagenet两种。
参数4:选择评测指标,指标说明,可以参见指标选项后面的?号提示。
pytorch框架
(1) 编写训练脚本,如:pytorch/safety_train.py
(2) 使用训练脚本进行训练任务,得到模型,创建训练任务选择参数如图所示(这里使用的镜像地址为:dockerhub.pcl.ac.cn:5000/user-images/openi:ubuntu16.04-python3.6-pytorch1.6-tensorboard2.0.2-cuda10.1):
(3) 训练完成之后,在“模型”--》“导入新模型”功能中选择训练任务进行模型导入,如图所示:
(4) 编写模型安全测试启动文件,参见:pytorch/safety_test.py
基于pytorch框架的推理脚本,读取系统给定的两个数据集及训练好的模型,进行两次推理,然后将结果保存并上传到结果目录。
在pytorch框架下要使用模型安全评测,请参照此脚本进行修改,将此脚本中 个人修改开始 及 个人修改结束 的几行代码替换成自己的即可。
(5) 在评测任务中,选择模型安全评测,进行安全评测,如下图所示:
参数1,选择模型:选择第3步中创建的模型。
参数2,选择镜像:选择与训练任务相同的镜像,这里为:dockerhub.pcl.ac.cn:5000/user-images/openi:ubuntu16.04-python3.6-pytorch1.6-tensorboard2.0.2-cuda10.1
参数3,启动文件:选择第4步编写的脚本。
参数4,数据集:选择源数据集及对抗数据集,目前只能选cifar及imagenet两种。
参数5:选择评测指标,指标说明,可以参见指标选项后面的?号提示。
安全评测原理
模型安全性评测的原理为使用训练好的模型进行两次推理,第一次推理使用正常的测试数据集,如cifar-1000或者imangenet,得到推理结果,第二次推理则使用第一次使用的数据集通过对抗算法(如fgsm)重新生成的对抗数据集,第二次推理结果与第一次推理结果保存到同一个Json文件,然后评测算法通过这个Json对模型安全性进行评测。
推理样例代码inference.py 摘抄:
结果Json文件:
BDResult节点为正常测试数据集推理的结果。
CDResult节点为对抗数据集推理的结果,它有两个子节点,代表了使用两种对抗算法fgsm及pgd生成了两份对抗数据集,然后使用这两份对抗数据集进行了推理。
BDResult节点下的结果顺序与CDResult节点下子节点的结果顺序要一一对应,都对应同一张原图。数据集及对抗数据集文件组织示例图:
data对应了原始数据集,其下有1.jpg、2.jpg两个待测试文件,推理生成的结果对应了BDResult节点下数据,1.jpg为节点下第一个数据,2.jpg为节点下第二个数据。
cddata下有两个子目录,fgsm目录,代表了使用fgsm对抗算法对data下1.jpg、2.jpg重新生成了1.jpg\2.jpg,pgd目录,代表了使用pgd对抗算法对data下1.jpg、2.jpg重新生成了1.jpg\2.jpg。