mindarmour.adv_robustness.evaluations
此模块包括各种指标,用于评估攻击或防御的结果。
- class mindarmour.adv_robustness.evaluations.AttackEvaluate(inputs, labels, adv_inputs, adv_preds, targeted=False, target_label=None)[源代码]
攻击方法的评估指标。
- 参数:
inputs (numpy.ndarray) - 原始样本。
labels (numpy.ndarray) - 原始样本的one-hot格式标签。
adv_inputs (numpy.ndarray) - 从原始样本生成的对抗样本。
adv_preds (numpy.ndarray) - 对对抗样本的对所有标签的预测概率。
targeted (bool) - 如果为
True
,则为目标攻击。如果为False
,则为无目标攻击。默认值:False
。target_label (numpy.ndarray) - 对抗样本的目标标签,是大小为adv_inputs.shape[0]的一维。默认值:
None
。
- 异常:
ValueError - 如果 targeted 为
True
时, target_label 为None
。
- avg_lp_distance()[源代码]
计算平均lp距离(lp-dist)。
- 返回:
float - 返回所有成功对抗样本的平均'l0'、'l2'或'linf'距离,返回值包括以下情况:
如果返回值
0,则为平均lp距离。值越低,攻击就越成功。如果返回值为-1,则没有成功的对抗样本。
- avg_ssim()[源代码]
计算平均结构相似性(ASS)。
- 返回:
float - 平均结构相似性。
如果返回值在(0,1)之间,则值越高,攻击越成功。
如果返回值为-1,则没有成功的对抗样本。
- nte()[源代码]
计算噪声容量估计(NTE)。
参考文献:Towards Imperceptible and Robust Adversarial Example Attacks against Neural Networks。
- 返回:
float - 范围在(0,1)之间。值越高,攻击就越成功。
- class mindarmour.adv_robustness.evaluations.BlackDefenseEvaluate(raw_preds, def_preds, raw_query_counts, def_query_counts, raw_query_time, def_query_time, def_detection_counts, true_labels, max_queries)[源代码]
反黑盒防御方法的评估指标。
- 参数:
raw_preds (numpy.ndarray) - 原始模型上特定样本的预测结果。
def_preds (numpy.ndarray) - 原始防御模型上特定样本的预测结果。
raw_query_counts (numpy.ndarray) - 在原始模型上生成对抗样本的查询数,原始模型是大小是与raw_preds.shape[0]的第一纬度相同。对于良性样本,查询计数必须设置为
0
。def_query_counts (numpy.ndarray) - 在防御模型上生成对抗样本的查询数,原始模型是大小是与raw_preds.shape[0]的第一纬度相同。对于良性样本,查询计数必须设置为
0
。raw_query_time (numpy.ndarray) - 在原始模型上生成对抗样本的总持续时间,该样本是大小是与raw_preds.shape[0]的第一纬度。
def_query_time (numpy.ndarray) - 在防御模型上生成对抗样本的总持续时间,该样本是大小是与raw_preds.shape[0]的第一纬度。
def_detection_counts (numpy.ndarray) - 每次对抗样本生成期间检测到的查询总数,大小是与raw_preds.shape[0]的第一纬度。对于良性样本,如果查询被识别为可疑,则将 def_detection_counts 设置为
1
,否则将其设置为0
。true_labels (numpy.ndarray) - 大小是与raw_preds.shape[0]的第一纬度真标签。
max_queries (int) - 攻击预算,最大查询数。
- class mindarmour.adv_robustness.evaluations.DefenseEvaluate(raw_preds, def_preds, true_labels)[源代码]
防御方法的评估指标。
- 参数:
raw_preds (numpy.ndarray) - 原始模型上某些样本的预测结果。
def_preds (numpy.ndarray) - 防御模型上某些样本的预测结果。
true_labels (numpy.ndarray) - 样本的ground-truth标签,一个大小为ground-truth的一维数组。
- cos()[源代码]
参考文献:Calculate classification output stability (COS)。
- 返回:
float - 如果返回值>=0,则是有效的防御。值越低,防守越成功。如果返回值== -1, 则说明样本数量为0。
- class mindarmour.adv_robustness.evaluations.NeuronMetric(model, inputs, adv_inputs, hook_names)[源代码]
神经元敏感度,通过计算神经元在输入正常样本和对抗样本时的激活值变化,来衡量神经元的敏感度。
- 参数:
model (mindspore.nn.Cell) - 待测量神经元敏感度的模型本身。
inputs (mindspore.Tensor) - 所使用数据的原始样本。
adv_inputs (mindspore.Tensor) - 所使用数据的对抗样本,需要和原始样本一一对应。
hook_names (List[str]) - 所需要计算神经元敏感度的层的名字。
- 异常:
ValueError - 模型中间层输出的shape维度数目小于等于1。
- class mindarmour.adv_robustness.evaluations.RadarMetric(metrics_name, metrics_data, labels, title, scale='hide')[源代码]
雷达图,通过多个指标显示模型的鲁棒性。
- 参数:
metrics_name (Union[tuple, list]) - 要显示的度量名称数组。每组值对应一条雷达曲线。
metrics_data (numpy.ndarray) - 多个雷达曲线的每个度量的(归一化)值,如[[0.5, 0.8, …], [0.2,0.6,…], …]。
labels (Union[tuple, list]) - 所有雷达曲线的图例。
title (str) - 图表的标题。
scale (str) - 用于调整轴刻度的标量,如
'hide'
、'norm'
、'sparse'
、'dense'
。默认值:'hide'
。
- 异常:
ValueError - scale 值不为
'hide'
、'norm'
、'sparse'
、'dense'
。