Completeted bilateral filter variable radius analysis

This commit is contained in:
Adog64 2024-04-16 12:35:35 -04:00
parent 26758224b7
commit 04cf5cb9bc
3 changed files with 218 additions and 3 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 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.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 # 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"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 return unfiltered_acc, filtered_accuracies
@ -175,8 +175,11 @@ for eps in epsilons:
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"Mean Kuwahara (strength = {2*i + 1})") plt.plot(epsilons, filtered_accuracy, label=f"Bilateral Filter (strength = {2*i + 1})")
plt.legend() plt.legend()
plt.title("Bilateral Filter Performance")
plt.xlabel("Attack Strength ($\\epsilon$)")
plt.ylabel("Accuracy")
plt.show() plt.show()

View File

@ -742,3 +742,215 @@ Mean Kuwahara (strength = 5) = 1854 / 10000 = 0.1854
Mean Kuwahara (strength = 7) = 1307 / 10000 = 0.1307 Mean Kuwahara (strength = 7) = 1307 / 10000 = 0.1307
Mean Kuwahara (strength = 9) = 1166 / 10000 = 0.1166 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