Figure saving with proper size

This commit is contained in:
Aidan Sharpe 2024-04-18 13:51:31 -04:00
parent 04cf5cb9bc
commit 35fc6dd2e5
4 changed files with 219 additions and 12 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -121,7 +121,7 @@ def test(model, device, test_loader, epsilon):
strength = 2*i + 1 strength = 2*i + 1
# Apply the filter with the specified strength # Apply the filter with the specified strength
filtered_input = defense_filters.bilateral_filter(perturbed_data_normalized, batch_size=len(perturbed_data_normalized), d=strength) filtered_input = defense_filters.gaussian_blur(perturbed_data_normalized, batch_size=len(perturbed_data_normalized), ksize=(strength, strength))
# Evaluate the model on the filtered images # Evaluate the model on the filtered images
filtered_output = model(filtered_input) filtered_output = model(filtered_input)
# Get the predicted classification # Get the predicted classification
@ -158,7 +158,7 @@ def test(model, device, test_loader, epsilon):
print(f"Unfiltered Accuracy = {unfiltered_correct} / {len(test_loader)} = {unfiltered_acc}") print(f"Unfiltered Accuracy = {unfiltered_correct} / {len(test_loader)} = {unfiltered_acc}")
for i in range(TESTED_STRENGTH_COUNT): for i in range(TESTED_STRENGTH_COUNT):
strength = 2*i + 1 strength = 2*i + 1
print(f"Bilateral Filter (strength = {strength}) = {filtered_correct_counts[i]} / {len(test_loader)} = {filtered_accuracies[i]}") print(f"Gaussian Blur (strength = {strength}) = {filtered_correct_counts[i]} / {len(test_loader)} = {filtered_accuracies[i]}")
return unfiltered_acc, filtered_accuracies return unfiltered_acc, filtered_accuracies
@ -172,14 +172,14 @@ for eps in epsilons:
filtered_accuracies.append(filtered_accuracy) filtered_accuracies.append(filtered_accuracy)
# Plot the results # Plot the results
plt.figure(figsize=(16,9))
plt.plot(epsilons, unfiltered_accuracies, label="Attacked Accuracy") plt.plot(epsilons, unfiltered_accuracies, label="Attacked Accuracy")
for i in range(TESTED_STRENGTH_COUNT): for i in range(TESTED_STRENGTH_COUNT):
filtered_accuracy = [filter_eps[i] for filter_eps in filtered_accuracies] filtered_accuracy = [filter_eps[i] for filter_eps in filtered_accuracies]
plt.plot(epsilons, filtered_accuracy, label=f"Bilateral Filter (strength = {2*i + 1})") plt.plot(epsilons, filtered_accuracy, label=f"Gaussian Blur (strength = {2*i + 1})")
plt.legend() plt.legend(loc="upper right")
plt.title("Bilateral Filter Performance") plt.title("Gaussian Blur Performance")
plt.xlabel("Attack Strength ($\\epsilon$)") plt.xlabel("Attack Strength ($\\epsilon$)")
plt.ylabel("Accuracy") plt.ylabel("Accuracy")
plt.savefig("Images/GaussianBlurPerformance.png", )
plt.show()

View File

@ -2,8 +2,6 @@
Attacking classifier models essentially boils down to adding precisely calculated noise to the input image, thereby tricking the classifier into selecting an incorrect class. The goal is to understand the efficacy of an array of denoising algorithms as adversarial machine learning defenses. Attacking classifier models essentially boils down to adding precisely calculated noise to the input image, thereby tricking the classifier into selecting an incorrect class. The goal is to understand the efficacy of an array of denoising algorithms as adversarial machine learning defenses.
## Individual Denoising Algorithms ## Requirements
For a given filter to be beneficial to th e
## An Ensemble Approach 1. The filter
## Training the Model on Filtered Data

View File

@ -954,3 +954,212 @@ Bilateral Filter (strength = 7) = 1999 / 10000 = 0.1999
Bilateral Filter (strength = 9) = 1444 / 10000 = 0.1444 Bilateral Filter (strength = 9) = 1444 / 10000 = 0.1444
## Gaussian Blur
====== EPSILON: 0.0 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 9920 / 10000 = 0.992
Gaussian Blur (strength = 1) = 9920 / 10000 = 0.992
Gaussian Blur (strength = 3) = 9879 / 10000 = 0.9879
Gaussian Blur (strength = 5) = 9682 / 10000 = 0.9682
Gaussian Blur (strength = 7) = 7731 / 10000 = 0.7731
Gaussian Blur (strength = 9) = 5250 / 10000 = 0.525
====== EPSILON: 0.025 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 9796 / 10000 = 0.9796
Gaussian Blur (strength = 1) = 9796 / 10000 = 0.9796
Gaussian Blur (strength = 3) = 9801 / 10000 = 0.9801
Gaussian Blur (strength = 5) = 9512 / 10000 = 0.9512
Gaussian Blur (strength = 7) = 7381 / 10000 = 0.7381
Gaussian Blur (strength = 9) = 4862 / 10000 = 0.4862
====== EPSILON: 0.05 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 9600 / 10000 = 0.96
Gaussian Blur (strength = 1) = 9600 / 10000 = 0.96
Gaussian Blur (strength = 3) = 9674 / 10000 = 0.9674
Gaussian Blur (strength = 5) = 9271 / 10000 = 0.9271
Gaussian Blur (strength = 7) = 6922 / 10000 = 0.6922
Gaussian Blur (strength = 9) = 4446 / 10000 = 0.4446
====== EPSILON: 0.07500000000000001 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 9260 / 10000 = 0.926
Gaussian Blur (strength = 1) = 9260 / 10000 = 0.926
Gaussian Blur (strength = 3) = 9460 / 10000 = 0.946
Gaussian Blur (strength = 5) = 8939 / 10000 = 0.8939
Gaussian Blur (strength = 7) = 6427 / 10000 = 0.6427
Gaussian Blur (strength = 9) = 3989 / 10000 = 0.3989
====== EPSILON: 0.1 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 8753 / 10000 = 0.8753
Gaussian Blur (strength = 1) = 8753 / 10000 = 0.8753
Gaussian Blur (strength = 3) = 9133 / 10000 = 0.9133
Gaussian Blur (strength = 5) = 8516 / 10000 = 0.8516
Gaussian Blur (strength = 7) = 5881 / 10000 = 0.5881
Gaussian Blur (strength = 9) = 3603 / 10000 = 0.3603
====== EPSILON: 0.125 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 8104 / 10000 = 0.8104
Gaussian Blur (strength = 1) = 8104 / 10000 = 0.8104
Gaussian Blur (strength = 3) = 8690 / 10000 = 0.869
Gaussian Blur (strength = 5) = 7989 / 10000 = 0.7989
Gaussian Blur (strength = 7) = 5278 / 10000 = 0.5278
Gaussian Blur (strength = 9) = 3263 / 10000 = 0.3263
====== EPSILON: 0.15000000000000002 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 7229 / 10000 = 0.7229
Gaussian Blur (strength = 1) = 7229 / 10000 = 0.7229
Gaussian Blur (strength = 3) = 8135 / 10000 = 0.8135
Gaussian Blur (strength = 5) = 7415 / 10000 = 0.7415
Gaussian Blur (strength = 7) = 4710 / 10000 = 0.471
Gaussian Blur (strength = 9) = 2968 / 10000 = 0.2968
====== EPSILON: 0.17500000000000002 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 6207 / 10000 = 0.6207
Gaussian Blur (strength = 1) = 6207 / 10000 = 0.6207
Gaussian Blur (strength = 3) = 7456 / 10000 = 0.7456
Gaussian Blur (strength = 5) = 6741 / 10000 = 0.6741
Gaussian Blur (strength = 7) = 4224 / 10000 = 0.4224
Gaussian Blur (strength = 9) = 2683 / 10000 = 0.2683
====== EPSILON: 0.2 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 5008 / 10000 = 0.5008
Gaussian Blur (strength = 1) = 5008 / 10000 = 0.5008
Gaussian Blur (strength = 3) = 6636 / 10000 = 0.6636
Gaussian Blur (strength = 5) = 5983 / 10000 = 0.5983
Gaussian Blur (strength = 7) = 3755 / 10000 = 0.3755
Gaussian Blur (strength = 9) = 2453 / 10000 = 0.2453
====== EPSILON: 0.225 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 3894 / 10000 = 0.3894
Gaussian Blur (strength = 1) = 3894 / 10000 = 0.3894
Gaussian Blur (strength = 3) = 5821 / 10000 = 0.5821
Gaussian Blur (strength = 5) = 5243 / 10000 = 0.5243
Gaussian Blur (strength = 7) = 3359 / 10000 = 0.3359
Gaussian Blur (strength = 9) = 2269 / 10000 = 0.2269
====== EPSILON: 0.25 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 2922 / 10000 = 0.2922
Gaussian Blur (strength = 1) = 2922 / 10000 = 0.2922
Gaussian Blur (strength = 3) = 5050 / 10000 = 0.505
Gaussian Blur (strength = 5) = 4591 / 10000 = 0.4591
Gaussian Blur (strength = 7) = 3034 / 10000 = 0.3034
Gaussian Blur (strength = 9) = 2112 / 10000 = 0.2112
====== EPSILON: 0.275 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 2149 / 10000 = 0.2149
Gaussian Blur (strength = 1) = 2149 / 10000 = 0.2149
Gaussian Blur (strength = 3) = 4290 / 10000 = 0.429
Gaussian Blur (strength = 5) = 3998 / 10000 = 0.3998
Gaussian Blur (strength = 7) = 2743 / 10000 = 0.2743
Gaussian Blur (strength = 9) = 1983 / 10000 = 0.1983
====== EPSILON: 0.30000000000000004 ======
Clean (No Filter) Accuracy = 9920 / 10000 = 0.992
Unfiltered Accuracy = 1599 / 10000 = 0.1599
Gaussian Blur (strength = 1) = 1599 / 10000 = 0.1599
Gaussian Blur (strength = 3) = 3648 / 10000 = 0.3648
Gaussian Blur (strength = 5) = 3481 / 10000 = 0.3481
Gaussian Blur (strength = 7) = 2493 / 10000 = 0.2493
Gaussian Blur (strength = 9) = 1884 / 10000 = 0.1884