diff --git a/Filter_Analysis/Images/BilateralPerformance50Sigma.png b/Filter_Analysis/Images/BilateralPerformance50Sigma.png new file mode 100644 index 0000000..befe465 Binary files /dev/null and b/Filter_Analysis/Images/BilateralPerformance50Sigma.png differ diff --git a/Filter_Analysis/fgsm.py b/Filter_Analysis/fgsm.py index ee00906..22891a3 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.mean_kuwahara(perturbed_data_normalized, batch_size=len(perturbed_data_normalized), radius=strength) + filtered_input = defense_filters.bilateral_filter(perturbed_data_normalized, batch_size=len(perturbed_data_normalized), d=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"Mean Kuwahara (strength = {strength}) = {filtered_correct_counts[i]} / {len(test_loader)} = {filtered_accuracies[i]}") + print(f"Bilateral Filter (strength = {strength}) = {filtered_correct_counts[i]} / {len(test_loader)} = {filtered_accuracies[i]}") return unfiltered_acc, filtered_accuracies @@ -175,8 +175,11 @@ for eps in epsilons: 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"Mean Kuwahara (strength = {2*i + 1})") + plt.plot(epsilons, filtered_accuracy, label=f"Bilateral Filter (strength = {2*i + 1})") plt.legend() +plt.title("Bilateral Filter Performance") +plt.xlabel("Attack Strength ($\\epsilon$)") +plt.ylabel("Accuracy") plt.show() diff --git a/Filter_Analysis/wiki/Results.md b/Filter_Analysis/wiki/Results.md index 9ef56b3..8eaa2ad 100644 --- a/Filter_Analysis/wiki/Results.md +++ b/Filter_Analysis/wiki/Results.md @@ -742,3 +742,215 @@ Mean Kuwahara (strength = 5) = 1854 / 10000 = 0.1854 Mean Kuwahara (strength = 7) = 1307 / 10000 = 0.1307 Mean Kuwahara (strength = 9) = 1166 / 10000 = 0.1166 + +## Bilateral Filter (Sigma = 50) + +### Raw Program Output +====== EPSILON: 0.0 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 9920 / 10000 = 0.992 + +Bilateral Filter (strength = 1) = 9887 / 10000 = 0.9887 + +Bilateral Filter (strength = 3) = 9887 / 10000 = 0.9887 + +Bilateral Filter (strength = 5) = 9391 / 10000 = 0.9391 + +Bilateral Filter (strength = 7) = 5584 / 10000 = 0.5584 + +Bilateral Filter (strength = 9) = 2568 / 10000 = 0.2568 + +====== EPSILON: 0.025 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 9796 / 10000 = 0.9796 + +Bilateral Filter (strength = 1) = 9809 / 10000 = 0.9809 + +Bilateral Filter (strength = 3) = 9809 / 10000 = 0.9809 + +Bilateral Filter (strength = 5) = 9184 / 10000 = 0.9184 + +Bilateral Filter (strength = 7) = 5198 / 10000 = 0.5198 + +Bilateral Filter (strength = 9) = 2410 / 10000 = 0.241 + +====== EPSILON: 0.05 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 9600 / 10000 = 0.96 + +Bilateral Filter (strength = 1) = 9695 / 10000 = 0.9695 + +Bilateral Filter (strength = 3) = 9695 / 10000 = 0.9695 + +Bilateral Filter (strength = 5) = 8902 / 10000 = 0.8902 + +Bilateral Filter (strength = 7) = 4831 / 10000 = 0.4831 + +Bilateral Filter (strength = 9) = 2245 / 10000 = 0.2245 + +====== EPSILON: 0.07500000000000001 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 9260 / 10000 = 0.926 + +Bilateral Filter (strength = 1) = 9482 / 10000 = 0.9482 + +Bilateral Filter (strength = 3) = 9482 / 10000 = 0.9482 + +Bilateral Filter (strength = 5) = 8533 / 10000 = 0.8533 + +Bilateral Filter (strength = 7) = 4436 / 10000 = 0.4436 + +Bilateral Filter (strength = 9) = 2079 / 10000 = 0.2079 + +====== EPSILON: 0.1 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 8753 / 10000 = 0.8753 + +Bilateral Filter (strength = 1) = 9142 / 10000 = 0.9142 + +Bilateral Filter (strength = 3) = 9142 / 10000 = 0.9142 + +Bilateral Filter (strength = 5) = 8133 / 10000 = 0.8133 + +Bilateral Filter (strength = 7) = 4019 / 10000 = 0.4019 + +Bilateral Filter (strength = 9) = 1915 / 10000 = 0.1915 + +====== EPSILON: 0.125 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 8104 / 10000 = 0.8104 + +Bilateral Filter (strength = 1) = 8714 / 10000 = 0.8714 + +Bilateral Filter (strength = 3) = 8714 / 10000 = 0.8714 + +Bilateral Filter (strength = 5) = 7656 / 10000 = 0.7656 + +Bilateral Filter (strength = 7) = 3641 / 10000 = 0.3641 + +Bilateral Filter (strength = 9) = 1792 / 10000 = 0.1792 + +====== EPSILON: 0.15000000000000002 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 7229 / 10000 = 0.7229 + +Bilateral Filter (strength = 1) = 8169 / 10000 = 0.8169 + +Bilateral Filter (strength = 3) = 8169 / 10000 = 0.8169 + +Bilateral Filter (strength = 5) = 7098 / 10000 = 0.7098 + +Bilateral Filter (strength = 7) = 3299 / 10000 = 0.3299 + +Bilateral Filter (strength = 9) = 1681 / 10000 = 0.1681 + +====== EPSILON: 0.17500000000000002 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 6207 / 10000 = 0.6207 + +Bilateral Filter (strength = 1) = 7477 / 10000 = 0.7477 + +Bilateral Filter (strength = 3) = 7477 / 10000 = 0.7477 + +Bilateral Filter (strength = 5) = 6410 / 10000 = 0.641 + +Bilateral Filter (strength = 7) = 2978 / 10000 = 0.2978 + +Bilateral Filter (strength = 9) = 1610 / 10000 = 0.161 + +====== EPSILON: 0.2 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 5008 / 10000 = 0.5008 + +Bilateral Filter (strength = 1) = 6619 / 10000 = 0.6619 + +Bilateral Filter (strength = 3) = 6619 / 10000 = 0.6619 + +Bilateral Filter (strength = 5) = 5683 / 10000 = 0.5683 + +Bilateral Filter (strength = 7) = 2723 / 10000 = 0.2723 + +Bilateral Filter (strength = 9) = 1563 / 10000 = 0.1563 + +====== EPSILON: 0.225 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 3894 / 10000 = 0.3894 + +Bilateral Filter (strength = 1) = 5767 / 10000 = 0.5767 + +Bilateral Filter (strength = 3) = 5767 / 10000 = 0.5767 + +Bilateral Filter (strength = 5) = 5003 / 10000 = 0.5003 + +Bilateral Filter (strength = 7) = 2476 / 10000 = 0.2476 + +Bilateral Filter (strength = 9) = 1517 / 10000 = 0.1517 + +====== EPSILON: 0.25 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 2922 / 10000 = 0.2922 + +Bilateral Filter (strength = 1) = 4922 / 10000 = 0.4922 + +Bilateral Filter (strength = 3) = 4922 / 10000 = 0.4922 + +Bilateral Filter (strength = 5) = 4381 / 10000 = 0.4381 + +Bilateral Filter (strength = 7) = 2288 / 10000 = 0.2288 + +Bilateral Filter (strength = 9) = 1484 / 10000 = 0.1484 + +====== EPSILON: 0.275 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 2149 / 10000 = 0.2149 + +Bilateral Filter (strength = 1) = 4133 / 10000 = 0.4133 + +Bilateral Filter (strength = 3) = 4133 / 10000 = 0.4133 + +Bilateral Filter (strength = 5) = 3836 / 10000 = 0.3836 + +Bilateral Filter (strength = 7) = 2126 / 10000 = 0.2126 + +Bilateral Filter (strength = 9) = 1460 / 10000 = 0.146 + +====== EPSILON: 0.30000000000000004 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 1599 / 10000 = 0.1599 + +Bilateral Filter (strength = 1) = 3468 / 10000 = 0.3468 + +Bilateral Filter (strength = 3) = 3468 / 10000 = 0.3468 + +Bilateral Filter (strength = 5) = 3364 / 10000 = 0.3364 + +Bilateral Filter (strength = 7) = 1999 / 10000 = 0.1999 + +Bilateral Filter (strength = 9) = 1444 / 10000 = 0.1444 +