forked from multirobustbench/multirobustbench
-
Notifications
You must be signed in to change notification settings - Fork 0
/
metrics.py
35 lines (32 loc) · 10.7 KB
/
metrics.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# code for computing all accuracy metrics based on selected attack types
import numpy as np
import os
import json
ATA = {"NoAttack": 94.20333333333333, "LPIPSAttack": {"0.25": 45.49, "0.3": 34.61, "0.5": 18.41, "0.425": 21.16333333333333, "0.05": 90.20666666666666, "0.475": 19.839999999999993, "0.35": 26.573333333333338, "0.125": 77.32999999999998, "0.225": 51.379999999999995, "0.075": 87.59333333333335, "0.4": 20.94333333333334, "0.325": 30.843333333333323, "0.2": 58.56999999999999, "0.275": 39.20333333333333, "0.15": 71.10666666666667, "0.375": 23.929999999999996, "0.025": 92.88666666666667, "0.45": 20.103333333333328, "0.175": 64.73333333333333, "0.1": 83.20666666666666}, "Saturation": {"0.1": 94.12000000000002, "0.275": 93.97333333333336, "0.425": 93.80000000000001, "0.175": 94.00333333333333, "0.475": 93.64333333333333, "0.4": 93.78333333333335, "0.025": 94.29, "0.5": 93.7666666666667, "0.15": 94.14666666666669, "0.075": 93.87, "0.05": 93.98000000000002, "0.2": 94.01000000000003, "0.25": 93.97000000000003, "0.375": 93.83333333333333, "0.125": 93.72333333333336, "0.35": 93.80333333333336, "0.45": 93.76333333333336, "0.225": 93.95333333333333, "0.3": 93.83666666666666, "0.325": 93.77666666666669}, "AutoLinfAttack": {"0.02": 57.50666666666667, "0.03": 44.69, "0.04": 35.60333333333333, "0.085": 11.833333333333334, "0.08": 13.866666666666665, "0.06": 22.363333333333333, "0.025": 50.98333333333333, "0.1": 8.786666666666667, "0.035": 40.27333333333333, "0.055": 25.616666666666674, "0.065": 20.256666666666664, "0.07": 18.106666666666666, "0.09": 10.286666666666667, "0.005": 82.99000000000001, "0.015": 65.14666666666666, "0.05": 28.90666666666667, "0.01": 73.32666666666667, "0.045": 31.820000000000004, "0.075": 15.116666666666665, "0.095": 9.403333333333334}, "PerspectiveWarp": {"0.0017": 92.63666666666667, "0.0018": 92.34000000000002, "0.0013": 92.69666666666667, "0.0002": 93.89333333333332, "0.0014": 92.61000000000001, "0.0003": 93.5, "0.0016": 92.46333333333335, "0.0006": 93.14666666666666, "0.0001": 93.88333333333333, "0.0005": 93.18333333333332, "0.0015": 92.49666666666667, "0.0004": 93.60000000000002, "0.0012": 92.70333333333333, "0.0007": 93.17000000000002, "0.002": 92.41333333333334, "0.0019": 92.58333333333336, "0.0008": 92.94000000000001, "0.0011": 92.89333333333332, "0.001": 92.94666666666667, "0.0009": 92.88999999999999}, "JPEGLinfAttack": {"0.14": 74.04666666666667, "0.09": 78.56666666666666, "0.17": 71.69666666666666, "0.19": 70.16666666666667, "0.11": 76.75333333333332, "0.13": 74.97000000000001, "0.03": 86.24666666666667, "0.02": 87.30666666666669, "0.07": 80.86666666666666, "0.16": 72.49666666666668, "0.05": 83.20666666666666, "0.06": 81.90666666666665, "0.1": 77.53666666666666, "0.15": 73.30666666666667, "0.01": 90.02666666666669, "0.2": 69.77999999999999, "0.18": 71.11, "0.04": 84.56666666666666, "0.12": 75.79333333333334, "0.08": 79.75000000000001}, "FogAttack": {"47.5": 91.17, "5.0": 93.76333333333336, "10.0": 93.30333333333334, "40.0": 91.52333333333331, "2.5": 93.74333333333334, "27.5": 92.28000000000002, "20.0": 92.62333333333333, "15.0": 92.96, "22.5": 92.36333333333333, "35.0": 91.83999999999999, "17.5": 92.82666666666667, "12.5": 93.14333333333333, "32.5": 91.77333333333335, "37.5": 91.58999999999999, "25.0": 92.24666666666667, "45.0": 91.02999999999999, "7.5": 93.42, "30.0": 92.21, "50.0": 90.92999999999999, "42.5": 91.33}, "Hue": {"0.25": 93.63666666666666, "0.475": 93.63666666666667, "0.375": 93.51333333333334, "0.325": 93.42666666666668, "0.025": 94.23666666666668, "0.5": 93.56666666666668, "0.075": 94.07666666666667, "0.35": 93.55333333333334, "0.2": 93.90000000000002, "0.275": 93.71000000000002, "0.05": 94.01333333333334, "0.175": 93.75333333333334, "0.425": 93.48, "0.225": 93.77333333333335, "0.1": 94.13666666666667, "0.15": 93.85000000000001, "0.3": 93.67999999999999, "0.45": 93.52666666666669, "0.125": 94.07333333333334, "0.4": 93.39666666666669}, "SnowAttack": {"0.05": 91.13000000000001, "0.075": 89.87333333333333, "0.08": 89.74666666666667, "0.07": 90.13, "0.035": 91.82333333333334, "0.095": 89.10666666666667, "0.065": 90.36333333333333, "0.04": 91.79666666666667, "0.06": 90.63, "0.005": 93.12, "0.055": 90.79666666666667, "0.01": 93.28000000000002, "0.045": 91.23333333333335, "0.085": 89.56333333333333, "0.1": 88.74333333333333, "0.025": 92.46999999999998, "0.015": 92.82000000000001, "0.09": 89.13333333333334, "0.03": 92.01666666666665, "0.02": 92.81}, "GaborAttack": {"2.0": 93.32333333333337, "1.0": 93.26999999999998, "7.5": 93.46, "6.5": 93.53666666666669, "3.5": 93.30333333333333, "5.5": 93.34666666666665, "9.0": 93.31333333333333, "2.5": 93.16333333333334, "9.5": 93.64333333333333, "8.0": 93.46666666666665, "0.5": 93.64333333333336, "8.5": 93.34666666666665, "7.0": 93.46666666666668, "3.0": 93.46000000000002, "4.5": 93.51333333333336, "10.0": 93.27, "1.5": 93.25666666666666, "6.0": 93.67666666666669, "4.0": 93.51999999999998, "5.0": 93.57999999999998}, "ReColorAdvAttack": {"0.025": 83.25333333333334, "0.06": 69.08666666666666, "0.005": 92.08666666666666, "0.05": 72.64666666666665, "0.09": 60.56333333333333, "0.08": 63.20333333333334, "0.1": 58.70000000000001, "0.015": 87.30666666666669, "0.095": 59.49666666666667, "0.055": 71.21666666666668, "0.07": 65.44666666666666, "0.03": 80.69, "0.01": 89.53333333333332, "0.035": 78.87666666666668, "0.04": 76.61333333333334, "0.045": 74.69, "0.075": 64.32333333333332, "0.065": 67.40666666666665, "0.02": 85.22333333333334, "0.085": 61.72666666666667}, "AffineWarp": {"0.1": 92.21666666666665, "0.005": 93.58333333333336, "0.065": 92.16333333333331, "0.07": 92.10000000000001, "0.015": 92.55666666666669, "0.045": 92.21666666666665, "0.075": 92.27333333333335, "0.095": 92.29333333333334, "0.02": 92.02333333333335, "0.03": 92.08333333333333, "0.01": 92.83, "0.085": 92.25333333333334, "0.09": 92.07333333333332, "0.05": 91.86666666666667, "0.025": 91.96000000000002, "0.04": 92.01, "0.055": 92.06666666666668, "0.035": 91.96333333333332, "0.06": 92.09333333333332, "0.08": 92.08666666666669}, "AutoL1Attack": {"24.0": 32.17333333333334, "1.5": 82.79666666666667, "3.0": 76.73, "15.0": 47.650000000000006, "25.5": 29.683333333333334, "28.5": 25.539999999999992, "30.0": 24.94333333333333, "21.0": 36.94666666666667, "12.0": 52.336666666666666, "19.5": 40.36333333333333, "13.5": 49.53, "9.0": 58.31, "7.5": 62.78999999999999, "10.5": 54.82666666666666, "22.5": 33.32666666666666, "6.0": 66.86000000000001, "4.5": 71.68333333333332, "18.0": 42.25000000000001, "27.0": 27.569999999999997, "16.5": 43.89333333333334}, "ElasticAttack": {"0.5": 48.93666666666667, "0.15": 72.29, "0.45": 50.84, "0.3": 59.28999999999999, "0.05": 85.09333333333332, "0.8": 38.98, "0.75": 40.47333333333333, "0.35": 56.26666666666666, "0.85": 38.03, "0.7": 41.54666666666665, "0.1": 78.17999999999999, "0.2": 67.61999999999999, "0.9": 36.83333333333332, "1.0": 35.22333333333333, "0.4": 53.393333333333345, "0.25": 63.120000000000005, "0.65": 43.24333333333334, "0.55": 46.873333333333335, "0.6": 44.919999999999995, "0.95": 35.96666666666666}, "StAdvAttack": {"0.1": 46.12, "0.045": 59.29333333333333, "0.015": 77.78333333333333, "0.07": 50.77, "0.03": 66.75, "0.065": 52.163333333333334, "0.08": 48.870000000000005, "0.06": 53.52666666666667, "0.05": 57.39666666666667, "0.09": 47.61333333333332, "0.02": 73.67333333333333, "0.055": 55.376666666666665, "0.085": 48.080000000000005, "0.095": 46.85333333333333, "0.01": 82.40000000000002, "0.025": 70.02, "0.005": 87.54333333333334, "0.04": 61.49666666666667, "0.075": 49.81, "0.035": 64.10666666666667}, "JPEGL1Attack": {"10.0": 82.48333333333335, "20.0": 77.91000000000001, "16.0": 79.45333333333333, "7.0": 84.23666666666666, "13.0": 80.69666666666667, "8.0": 83.87333333333333, "14.0": 80.29333333333334, "9.0": 83.05333333333334, "19.0": 78.07333333333334, "3.0": 87.60333333333335, "12.0": 81.57333333333334, "5.0": 85.83999999999999, "11.0": 81.90666666666668, "2.0": 88.94999999999999, "18.0": 78.64333333333333, "6.0": 85.13000000000001, "1.0": 90.66666666666667, "4.0": 86.81333333333335, "15.0": 79.80333333333333, "17.0": 79.07000000000002}, "Brightness": {"0.195": 93.60666666666664, "0.165": 93.70333333333333, "0.075": 93.99666666666668, "0.285": 93.23666666666668, "0.255": 93.55333333333333, "0.27": 93.41666666666667, "0.135": 93.94, "0.18": 93.60666666666664, "0.24": 93.52666666666666, "0.03": 94.23000000000002, "0.15": 93.83333333333333, "0.06": 93.99666666666667, "0.3": 93.26, "0.015": 94.23333333333333, "0.105": 94.00666666666666, "0.21": 93.56333333333332, "0.12": 93.85333333333334, "0.045": 94.14666666666669, "0.225": 93.47666666666667, "0.09": 93.92333333333335}, "Contrast": {"0.4": 93.53333333333335, "0.025": 94.11333333333334, "0.3": 93.67333333333335, "0.375": 93.58333333333333, "0.2": 93.91000000000001, "0.225": 93.72333333333331, "0.075": 94.12, "0.175": 93.73666666666668, "0.425": 93.45333333333336, "0.475": 93.21666666666665, "0.325": 93.47666666666667, "0.25": 93.72333333333336, "0.5": 93.23333333333335, "0.1": 93.93333333333332, "0.35": 93.39, "0.125": 93.97333333333331, "0.275": 93.67, "0.05": 94.19, "0.45": 93.29, "0.15": 93.93666666666668}, "AutoL2Attack": {"0.875": 50.306666666666665, "1.5": 33.24666666666666, "1.625": 30.633333333333336, "2.5": 17.360000000000003, "0.625": 59.94666666666666, "0.5": 65.33, "2.0": 24.55666666666667, "1.25": 38.96999999999999, "1.125": 42.223333333333336, "1.375": 35.93666666666666, "1.875": 25.879999999999995, "1.0": 45.98999999999999, "0.375": 71.92666666666666, "0.75": 54.84333333333334, "0.25": 78.20333333333336, "1.75": 28.603333333333335, "2.125": 22.44333333333333, "2.25": 20.81, "2.375": 19.386666666666667, "0.125": 85.69666666666666}}
LEADERBOARD_SET = ['AutoL1Attack', 'AutoLinfAttack', 'AutoL2Attack', 'ElasticAttack', 'JPEGL1Attack', 'JPEGLinfAttack', 'ReColorAdvAttack', 'StAdvAttack', 'LPIPSAttack']
def CR_ind_avg(selected_set, def_accs):
frac = def_accs['NoAttack'] / ATA['NoAttack']
num_attacks = 1
CR_single = {}
for attack in selected_set:
frac_single = def_accs['NoAttack'] / ATA['NoAttack']
num_attacks_single = 1
for eps in def_accs[attack]:
val = def_accs[attack][eps] / ATA[attack][eps]
frac += val
frac_single += val
num_attacks += 1
num_attacks_single += 1
CR_single[attack] = frac_single / num_attacks * 100
return [frac / num_attacks * 100, CR_single]
def CR_ind_worst(selected_set, def_accs):
frac = def_accs['NoAttack'] / ATA['NoAttack']
CR_single = {}
for attack in selected_set:
frac_single = def_accs['NoAttack'] / ATA['NoAttack']
for eps in def_accs[attack]:
val = def_accs[attack][eps] / ATA[attack][eps]
frac = min(frac, val)
frac_single = min(frac_single, val)
CR_single[attack] = frac_single * 100
return [frac * 100, CR_single]