DIaac/FGSM_attack_demo
0
1from .show_evaluation import fgsm_evaluate, construct_CREI
2
3import pandas as pd
4
5def show_robustness(models_name, epsilon, batch_size, dataset):
6 results = {}
7 for model_name in models_name:
8 acc_before, conf_correct_before, conf_incorrect_before = fgsm_evaluate(model_name, 0, batch_size, dataset)
9 acc_after, conf_correct_after, conf_incorrect_after = fgsm_evaluate(model_name, epsilon, batch_size, dataset)
10 crei = construct_CREI(acc_before, acc_after, conf_correct_before, conf_correct_after, conf_incorrect_before, conf_incorrect_after)
11 results[model_name] = {
12 'CREI': crei,
13 'Accuracy': acc_after,
14 'Correct Confidence': conf_correct_after,
15 'Incorrect Confidence': conf_incorrect_after,
16 'Accuracy Difference': acc_after - acc_before,
17 'Correct Confidence Difference': conf_correct_after - conf_correct_before,
18 'Incorrect Confidence Difference': conf_incorrect_after - conf_incorrect_before
19 }
20
21 df = pd.DataFrame(results).T
22 df.reset_index(inplace=True)
23 df.rename(columns={'index': 'Model'}, inplace=True)
24 df['Rank'] = df['CREI'].rank(ascending=True)
25 df = df.sort_values(by='Rank')
26 df = df[['Model', 'Rank', 'CREI', 'Accuracy', 'Correct Confidence', 'Incorrect Confidence', 'Accuracy Difference', 'Correct Confidence Difference', 'Incorrect Confidence Difference']]
27 return df