|
|
|
import numpy as np |
|
import matplotlib.pyplot as plt |
|
import pandas as pd |
|
|
|
plt.rcParams.update({"font.size": 14}) |
|
|
|
prefix = +"logs/" |
|
|
|
|
|
def plot_figure(x_acc, x_size, y_err, title, epsilon, exp): |
|
plt.figure(figsize=(10, 8)) |
|
plt.errorbar(x_001, y_001_acc, yerr=yerr, fmt="o", label="ACC") |
|
plt.title("{0} = {0}".format(title, epsilon)) |
|
plt.xlabel("Percent of Adversarial Examples") |
|
plt.ylabel("Accuracy") |
|
|
|
plt.savefig(prefix + exp + "/performance/" + str(epsilon) + ".png") |
|
|
|
|
|
Experiment = ["AEModels", "RandomNoisemodels"] |
|
|
|
|
|
for exp in Experiment: |
|
columns = ["Model_ID", "percent", "epsilon", "accuracy", "attack"] |
|
|
|
table = pd.DataFrame(columns=columns) |
|
table |
|
for file in os.listdir(prefix + exp): |
|
format = file.split("_")[3].split(".")[-1] |
|
if format == "h5": |
|
epsilon = file.split("_")[1] |
|
percent = file.split("_")[2] |
|
ModelID = file.split("_")[3].split(".")[0] |
|
resnet = WideResidualNetwork( |
|
init, 0.0001, 0.9, nb_classes=4, N=2, k=1, dropout=0.0 |
|
) |
|
resnet_model = resnet.create_wide_residual_network() |
|
resnet_model.compile( |
|
loss="categorical_crossentropy", optimizer=sgd, metrics=["acc"] |
|
) |
|
resnet_model.load_weights(prefix + exp + "/" + file) |
|
acc = resnet_model.evaluate(X_test, y_test) |
|
|
|
row = { |
|
"Model_ID": ModelID, |
|
"percent": percent, |
|
"epsilon": epsilon, |
|
"accuracy": acc[1], |
|
"attack": 0, |
|
} |
|
table = table.append(row, ignore_index=True) |
|
tab_25 = table[table["percent"] == "0.25"] |
|
tab_5 = table[table["percent"] == "0.5"] |
|
tab_75 = table[table["percent"] == "0.75"] |
|
tab_1 = table[table["percent"] == "1.0"] |
|
|
|
tab_25_001 = tab_25[tab_25["epsilon"] == "0.001"] |
|
tab_25_001["mean_acc"], tab_25_001["mean_att"] = ( |
|
sum(tab_25_001["accuracy"]) / 10, |
|
sum(tab_25_001["attack"]) / 10, |
|
) |
|
tab_25_01 = tab_25[tab_25["epsilon"] == "0.01"] |
|
tab_25_01["mean_acc"], tab_25_01["mean_att"] = ( |
|
sum(tab_25_01["accuracy"]) / 10, |
|
sum(tab_25_01["attack"]) / 10, |
|
) |
|
tab_25_03 = tab_25[tab_25["epsilon"] == "0.03"] |
|
tab_25_03["mean_acc"], tab_25_03["mean_att"] = ( |
|
sum(tab_25_03["accuracy"]) / 10, |
|
sum(tab_25_03["attack"]) / 10, |
|
) |
|
tab_25_005 = tab_25[tab_25["epsilon"] == "0.005"] |
|
tab_25_005["mean_acc"], tab_25_005["mean_att"] = ( |
|
sum(tab_25_005["accuracy"]) / 10, |
|
sum(tab_25_005["attack"]) / 10, |
|
) |
|
tab_25_003 = tab_25[tab_25["epsilon"] == "0.003"] |
|
tab_25_003["mean_acc"], tab_25_003["mean_att"] = ( |
|
sum(tab_25_003["accuracy"]) / 10, |
|
sum(tab_25_003["attack"]) / 10, |
|
) |
|
|
|
tab_5_001 = tab_5[tab_5["epsilon"] == "0.001"] |
|
tab_5_001["mean_acc"], tab_5_001["mean_att"] = ( |
|
sum(tab_5_001["accuracy"]) / 10, |
|
sum(tab_5_001["attack"]) / 10, |
|
) |
|
tab_5_01 = tab_5[tab_5["epsilon"] == "0.01"] |
|
tab_5_01["mean_acc"], tab_5_01["mean_att"] = ( |
|
sum(tab_5_01["accuracy"]) / 10, |
|
sum(tab_5_01["attack"]) / 10, |
|
) |
|
|
|
tab_5_03 = tab_5[tab_5["epsilon"] == "0.03"] |
|
tab_5_03["mean_acc"], tab_5_03["mean_att"] = ( |
|
sum(tab_5_03["accuracy"]) / 10, |
|
sum(tab_5_03["attack"]) / 10, |
|
) |
|
tab_5_005 = tab_5[tab_5["epsilon"] == "0.005"] |
|
tab_5_005["mean_acc"], tab_5_005["mean_att"] = ( |
|
sum(tab_5_005["accuracy"]) / 10, |
|
sum(tab_5_005["attack"]) / 10, |
|
) |
|
tab_5_003 = tab_5[tab_5["epsilon"] == "0.003"] |
|
tab_5_003["mean_acc"], tab_5_003["mean_att"] = ( |
|
sum(tab_5_003["accuracy"]) / 10, |
|
sum(tab_5_003["attack"]) / 10, |
|
) |
|
tab_1_001 = tab_1[tab_1["epsilon"] == "0.001"] |
|
tab_1_001["mean_acc"], tab_1_001["mean_att"] = ( |
|
sum(tab_1_001["accuracy"]) / 10, |
|
sum(tab_1_001["attack"]) / 10, |
|
) |
|
tab_1_01 = tab_1[tab_1["epsilon"] == "0.01"] |
|
tab_1_01["mean_acc"], tab_1_01["mean_att"] = ( |
|
sum(tab_1_01["accuracy"]) / 10, |
|
sum(tab_1_01["attack"]) / 10, |
|
) |
|
tab_1_03 = tab_1[tab_1["epsilon"] == "0.03"] |
|
tab_1_03["mean_acc"], tab_1_03["mean_att"] = ( |
|
sum(tab_1_03["accuracy"]) / 10, |
|
sum(tab_1_03["attack"]) / 10, |
|
) |
|
tab_1_005 = tab_1[tab_1["epsilon"] == "0.005"] |
|
tab_1_005["mean_acc"], tab_1_005["mean_att"] = ( |
|
sum(tab_1_005["accuracy"]) / 10, |
|
sum(tab_1_005["attack"]) / 10, |
|
) |
|
tab_1_003 = tab_1[tab_1["epsilon"] == "0.003"] |
|
tab_1_003["mean_acc"], tab_1_003["mean_att"] = ( |
|
sum(tab_1_003["accuracy"]) / 10, |
|
sum(tab_1_003["attack"]) / 10, |
|
) |
|
|
|
tab_75_001 = tab_75[tab_75["epsilon"] == "0.001"] |
|
tab_75_001["mean_acc"], tab_75_001["mean_att"] = ( |
|
sum(tab_75_001["accuracy"]) / 10, |
|
sum(tab_75_001["attack"]) / 10, |
|
) |
|
tab_75_01 = tab_75[tab_75["epsilon"] == "0.01"] |
|
tab_75_01["mean_acc"], tab_75_01["mean_att"] = ( |
|
sum(tab_75_01["accuracy"]) / 10, |
|
sum(tab_75_01["attack"]) / 10, |
|
) |
|
tab_75_03 = tab_75[tab_75["epsilon"] == "0.03"] |
|
tab_75_03["mean_acc"], tab_75_03["mean_att"] = ( |
|
sum(tab_75_03["accuracy"]) / 10, |
|
sum(tab_75_03["attack"]) / 10, |
|
) |
|
tab_75_005 = tab_75[tab_75["epsilon"] == "0.005"] |
|
tab_75_005["mean_acc"], tab_75_005["mean_att"] = ( |
|
sum(tab_75_005["accuracy"]) / 10, |
|
sum(tab_75_005["attack"]) / 10, |
|
) |
|
tab_75_003 = tab_75[tab_75["epsilon"] == "0.003"] |
|
tab_75_003["mean_acc"], tab_75_003["mean_att"] = ( |
|
sum(tab_75_003["accuracy"]) / 10, |
|
sum(tab_75_003["attack"]) / 10, |
|
) |
|
|
|
table_mean = table_mean.append(tab_25_001.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_25_01.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_25_03.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_25_005.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_25_003.head(1), ignore_index=True) |
|
|
|
table_mean = table_mean.append(tab_5_001.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_5_01.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_5_03.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_5_005.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_5_003.head(1), ignore_index=True) |
|
|
|
table_mean = table_mean.append(tab_75_001.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_75_01.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_75_03.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_75_005.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_75_003.head(1), ignore_index=True) |
|
|
|
table_mean = table_mean.append(tab_1_001.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_1_01.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_1_03.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_1_005.head(1), ignore_index=True) |
|
table_mean = table_mean.append(tab_1_003.head(1), ignore_index=True) |
|
|
|
print( |
|
table_mean[column].sort_values(by=["epsilon", "percent"]).to_latex(index=False) |
|
) |
|
|
|
y_001 = table_mean[table_mean["epsilon"] == "0.001"]["mean_att"] |
|
y_001_acc = table_mean[table_mean["epsilon"] == "0.001"]["mean_acc"] |
|
x_001 = table_mean[table_mean["epsilon"] == "0.001"]["percent"] |
|
|
|
y_003 = table_mean[table_mean["epsilon"] == "0.003"]["mean_att"] |
|
y_003_acc = table_mean[table_mean["epsilon"] == "0.003"]["mean_acc"] |
|
x_003 = table_mean[table_mean["epsilon"] == "0.003"]["percent"] |
|
|
|
y_005 = table_mean[table_mean["epsilon"] == "0.005"]["mean_att"] |
|
y_005_acc = table_mean[table_mean["epsilon"] == "0.005"]["mean_acc"] |
|
x_005 = table_mean[table_mean["epsilon"] == "0.005"]["percent"] |
|
|
|
y_01 = table_mean[table_mean["epsilon"] == "0.01"]["mean_att"] |
|
y_01_acc = table_mean[table_mean["epsilon"] == "0.01"]["mean_acc"] |
|
x_01 = table_mean[table_mean["epsilon"] == "0.01"]["percent"] |
|
|
|
y_03 = table_mean[table_mean["epsilon"] == "0.03"]["mean_att"] |
|
y_03_acc = table_mean[table_mean["epsilon"] == "0.03"]["mean_acc"] |
|
x_03 = table_mean[table_mean["epsilon"] == "0.03"]["percent"] |
|
|
|
l_25 = [] |
|
l_25.append(np.std(tab_25_001["accuracy"], axis=0)) |
|
l_25.append(np.std(tab_25_01["accuracy"], axis=0)) |
|
l_25.append(np.std(tab_25_03["accuracy"], axis=0)) |
|
l_25.append(np.std(tab_25_005["accuracy"], axis=0)) |
|
l_25.append(np.std(tab_25_003["accuracy"], axis=0)) |
|
|
|
l_5 = [] |
|
l_5.append(np.std(tab_5_001["accuracy"], axis=0)) |
|
l_5.append(np.std(tab_5_01["accuracy"], axis=0)) |
|
l_5.append(np.std(tab_5_03["accuracy"], axis=0)) |
|
l_5.append(np.std(tab_5_005["accuracy"], axis=0)) |
|
l_5.append(np.std(tab_5_003["accuracy"], axis=0)) |
|
|
|
l_75 = [] |
|
l_75.append(np.std(tab_75_001["accuracy"], axis=0)) |
|
l_75.append(np.std(tab_75_01["accuracy"], axis=0)) |
|
l_75.append(np.std(tab_75_03["accuracy"], axis=0)) |
|
l_75.append(np.std(tab_75_005["accuracy"], axis=0)) |
|
l_75.append(np.std(tab_75_003["accuracy"], axis=0)) |
|
|
|
|
|
l_1 = [] |
|
l_1.append(np.std(tab_1_001["accuracy"], axis=0)) |
|
l_1.append(np.std(tab_1_01["accuracy"], axis=0)) |
|
l_1.append(np.std(tab_1_03["accuracy"], axis=0)) |
|
l_1.append(np.std(tab_1_005["accuracy"], axis=0)) |
|
l_1.append(np.std(tab_1_003["accuracy"], axis=0)) |
|
|
|
x_acc = [x_001_acc, x_01_acc, x_03_acc, x_005_acc, x_003_acc] |
|
x_sizes = [x_001, x_01, x_03, x_005, x_003] |
|
epsilons = [0.001, 0.01, 0.03, 0.005, 0.003] |
|
|
|
|
|
for i in range(5): |
|
yerr = [0.01, l_25[i], l_5[i], l_75[i], l_1[i]] |
|
plot_figure(x_acc[i], x_sizes[i], yerr, epsilons[i], exp) |
|
|