diff --git a/Filter_Analysis/Images/GaussianBlurPerformance.png b/Filter_Analysis/Images/GaussianBlurPerformance.png new file mode 100644 index 0000000..73eca72 Binary files /dev/null and b/Filter_Analysis/Images/GaussianBlurPerformance.png differ diff --git a/Filter_Analysis/fgsm.py b/Filter_Analysis/fgsm.py index 22891a3..6bf140d 100644 --- a/Filter_Analysis/fgsm.py +++ b/Filter_Analysis/fgsm.py @@ -121,7 +121,7 @@ def test(model, device, test_loader, epsilon): strength = 2*i + 1 # 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 filtered_output = model(filtered_input) # 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}") for i in range(TESTED_STRENGTH_COUNT): 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 @@ -172,14 +172,14 @@ for eps in epsilons: filtered_accuracies.append(filtered_accuracy) # Plot the results +plt.figure(figsize=(16,9)) plt.plot(epsilons, unfiltered_accuracies, label="Attacked Accuracy") for i in range(TESTED_STRENGTH_COUNT): 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.title("Bilateral Filter Performance") +plt.legend(loc="upper right") +plt.title("Gaussian Blur Performance") plt.xlabel("Attack Strength ($\\epsilon$)") plt.ylabel("Accuracy") - -plt.show() +plt.savefig("Images/GaussianBlurPerformance.png", ) diff --git a/Filter_Analysis/wiki/Approach.md b/Filter_Analysis/wiki/Approach.md index 5c4399d..6b16641 100644 --- a/Filter_Analysis/wiki/Approach.md +++ b/Filter_Analysis/wiki/Approach.md @@ -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. -## Individual Denoising Algorithms - -## An Ensemble Approach - -## Training the Model on Filtered Data +## Requirements +For a given filter to be beneficial to th e +1. The filter diff --git a/Filter_Analysis/wiki/Results.md b/Filter_Analysis/wiki/Results.md index 8eaa2ad..28b95f6 100644 --- a/Filter_Analysis/wiki/Results.md +++ b/Filter_Analysis/wiki/Results.md @@ -954,3 +954,212 @@ Bilateral Filter (strength = 7) = 1999 / 10000 = 0.1999 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