diff --git a/Filter_Analysis/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters_0.025_epsilon_step.png b/Filter_Analysis/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters_0.025_epsilon_step.png new file mode 100644 index 0000000..9b76efa Binary files /dev/null and b/Filter_Analysis/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters_0.025_epsilon_step.png differ diff --git a/Filter_Analysis/fgsm.py b/Filter_Analysis/fgsm.py index 50b32aa..d9cae71 100644 --- a/Filter_Analysis/fgsm.py +++ b/Filter_Analysis/fgsm.py @@ -10,7 +10,9 @@ import cv2 from mnist import Net from pykuwahara import kuwahara -epsilons = np.arange(0.0,0.35,0.05) +MAX_EPSILON = 0.3 +EPSILON_STEP = 0.025 +epsilons = np.arange(0.0, MAX_EPSILON+EPSILON_STEP, EPSILON_STEP) pretrained_model = "mnist_cnn_unfiltered.pt" use_cuda=False @@ -135,7 +137,7 @@ def test(model, device, test_loader, epsilon): snap_color_pred = output_snap_color.max(1, keepdim=True)[1] one_bit_pred = output_one_bit.max(1, keepdim=True)[1] predictions = [unfiltered_pred.item(), kuwahara_pred.item(), bilateral_pred.item(), gaussian_blur_pred.item(), random_noise_pred.item(), snap_color_pred.item(), one_bit_pred.item()] - plurality_pred = stats.mode(predictions)[0] + plurality_pred = stats.mode(predictions, keepdims=True)[0] # Count up correct classifications for each case if orig_pred.item() == target.item(): @@ -248,7 +250,7 @@ def filtered(data, batch_size=64, filter="kuwahara"): filtered_images[i] -= min_value elif filter == "snap_color": for i in range(batch_size): - filtered_images[i] = (images[i]*4).astype(int).astype(float) / 4 + filtered_images[i] = (images[i]*4).astype(int).astype(float)/4 # Modify the data with the filtered image filtered_images = filtered_images.transpose(0,3,1,2) diff --git a/Filter_Analysis/wiki/Results.md b/Filter_Analysis/wiki/Results.md index bcf93a5..acc9e54 100644 --- a/Filter_Analysis/wiki/Results.md +++ b/Filter_Analysis/wiki/Results.md @@ -80,6 +80,26 @@ Snapped Color Accuracy = 9913 / 10000 = 0.9913 Plurality Vote Accuracy = 9889 / 10000 = 0.9889 +====== EPSILON: 0.025 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 9796 / 10000 = 0.9796 + +Kuwahara Filter Accuracy = 8909 / 10000 = 0.8909 + +Bilateral Filter Accuracy = 9184 / 10000 = 0.9184 + +Gaussian Blur Accuracy = 9512 / 10000 = 0.9512 + +Random Noise Accuracy = 9786 / 10000 = 0.9786 + +Snapped Color Accuracy = 9823 / 10000 = 0.9823 + +1 Bit Accuracy = 8644 / 10000 = 0.8644 + +Plurality Vote Accuracy = 9746 / 10000 = 0.9746 + ====== EPSILON: 0.05 ====== Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 @@ -98,7 +118,27 @@ Snapped Color Accuracy = 9781 / 10000 = 0.9781 1 Bit Accuracy = 8409 / 10000 = 0.8409 -Plurality Vote Accuracy = 9600 / 10000 = 0.96 +Plurality Vote Accuracy = 9602 / 10000 = 0.9602 + +====== EPSILON: 0.07500000000000001 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 9260 / 10000 = 0.926 + +Kuwahara Filter Accuracy = 8447 / 10000 = 0.8447 + +Bilateral Filter Accuracy = 8533 / 10000 = 0.8533 + +Gaussian Blur Accuracy = 8939 / 10000 = 0.8939 + +Random Noise Accuracy = 9221 / 10000 = 0.9221 + +Snapped Color Accuracy = 9228 / 10000 = 0.9228 + +1 Bit Accuracy = 8174 / 10000 = 0.8174 + +Plurality Vote Accuracy = 9235 / 10000 = 0.9235 ====== EPSILON: 0.1 ====== @@ -112,13 +152,33 @@ Bilateral Filter Accuracy = 8133 / 10000 = 0.8133 Gaussian Blur Accuracy = 8516 / 10000 = 0.8516 -Random Noise Accuracy = 8696 / 10000 = 0.8696 +Random Noise Accuracy = 8702 / 10000 = 0.8702 Snapped Color Accuracy = 8818 / 10000 = 0.8818 1 Bit Accuracy = 7919 / 10000 = 0.7919 -Plurality Vote Accuracy = 8799 / 10000 = 0.8799 +Plurality Vote Accuracy = 8802 / 10000 = 0.8802 + +====== EPSILON: 0.125 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 8104 / 10000 = 0.8104 + +Kuwahara Filter Accuracy = 7751 / 10000 = 0.7751 + +Bilateral Filter Accuracy = 7656 / 10000 = 0.7656 + +Gaussian Blur Accuracy = 7989 / 10000 = 0.7989 + +Random Noise Accuracy = 8022 / 10000 = 0.8022 + +Snapped Color Accuracy = 8621 / 10000 = 0.8621 + +1 Bit Accuracy = 7646 / 10000 = 0.7646 + +Plurality Vote Accuracy = 8396 / 10000 = 0.8396 ====== EPSILON: 0.15000000000000002 ====== @@ -132,7 +192,7 @@ Bilateral Filter Accuracy = 7098 / 10000 = 0.7098 Gaussian Blur Accuracy = 7415 / 10000 = 0.7415 -Random Noise Accuracy = 7119 / 10000 = 0.7119 +Random Noise Accuracy = 7129 / 10000 = 0.7129 Snapped Color Accuracy = 8408 / 10000 = 0.8408 @@ -140,6 +200,26 @@ Snapped Color Accuracy = 8408 / 10000 = 0.8408 Plurality Vote Accuracy = 7879 / 10000 = 0.7879 +====== EPSILON: 0.17500000000000002 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 6207 / 10000 = 0.6207 + +Kuwahara Filter Accuracy = 6816 / 10000 = 0.6816 + +Bilateral Filter Accuracy = 6410 / 10000 = 0.641 + +Gaussian Blur Accuracy = 6741 / 10000 = 0.6741 + +Random Noise Accuracy = 6096 / 10000 = 0.6096 + +Snapped Color Accuracy = 7794 / 10000 = 0.7794 + +1 Bit Accuracy = 7085 / 10000 = 0.7085 + +Plurality Vote Accuracy = 7176 / 10000 = 0.7176 + ====== EPSILON: 0.2 ====== Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 @@ -152,13 +232,33 @@ Bilateral Filter Accuracy = 5683 / 10000 = 0.5683 Gaussian Blur Accuracy = 5983 / 10000 = 0.5983 -Random Noise Accuracy = 4933 / 10000 = 0.4933 +Random Noise Accuracy = 4927 / 10000 = 0.4927 Snapped Color Accuracy = 7496 / 10000 = 0.7496 1 Bit Accuracy = 6794 / 10000 = 0.6794 -Plurality Vote Accuracy = 6467 / 10000 = 0.6467 +Plurality Vote Accuracy = 6459 / 10000 = 0.6459 + +====== EPSILON: 0.225 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 3894 / 10000 = 0.3894 + +Kuwahara Filter Accuracy = 5773 / 10000 = 0.5773 + +Bilateral Filter Accuracy = 5003 / 10000 = 0.5003 + +Gaussian Blur Accuracy = 5243 / 10000 = 0.5243 + +Random Noise Accuracy = 3828 / 10000 = 0.3828 + +Snapped Color Accuracy = 5289 / 10000 = 0.5289 + +1 Bit Accuracy = 6512 / 10000 = 0.6512 + +Plurality Vote Accuracy = 5421 / 10000 = 0.5421 ====== EPSILON: 0.25 ====== @@ -172,13 +272,33 @@ Bilateral Filter Accuracy = 4381 / 10000 = 0.4381 Gaussian Blur Accuracy = 4591 / 10000 = 0.4591 -Random Noise Accuracy = 2876 / 10000 = 0.2876 +Random Noise Accuracy = 2855 / 10000 = 0.2855 Snapped Color Accuracy = 4301 / 10000 = 0.4301 1 Bit Accuracy = 6233 / 10000 = 0.6233 -Plurality Vote Accuracy = 4721 / 10000 = 0.4721 +Plurality Vote Accuracy = 4716 / 10000 = 0.4716 + +====== EPSILON: 0.275 ====== + +Clean (No Filter) Accuracy = 9920 / 10000 = 0.992 + +Unfiltered Accuracy = 2149 / 10000 = 0.2149 + +Kuwahara Filter Accuracy = 4594 / 10000 = 0.4594 + +Bilateral Filter Accuracy = 3836 / 10000 = 0.3836 + +Gaussian Blur Accuracy = 3998 / 10000 = 0.3998 + +Random Noise Accuracy = 2101 / 10000 = 0.2101 + +Snapped Color Accuracy = 3992 / 10000 = 0.3992 + +1 Bit Accuracy = 5842 / 10000 = 0.5842 + +Plurality Vote Accuracy = 4110 / 10000 = 0.411 ====== EPSILON: 0.30000000000000004 ====== @@ -192,10 +312,10 @@ Bilateral Filter Accuracy = 3364 / 10000 = 0.3364 Gaussian Blur Accuracy = 3481 / 10000 = 0.3481 -Random Noise Accuracy = 1560 / 10000 = 0.156 +Random Noise Accuracy = 1544 / 10000 = 0.1544 Snapped Color Accuracy = 2091 / 10000 = 0.2091 1 Bit Accuracy = 5462 / 10000 = 0.5462 -Plurality Vote Accuracy = 3312 / 10000 = 0.3312 +Plurality Vote Accuracy = 3287 / 10000 = 0.3287