diff --git a/.~lock.Poster.pptx# b/.~lock.Poster.pptx# deleted file mode 100644 index 81a8f1c..0000000 --- a/.~lock.Poster.pptx# +++ /dev/null @@ -1 +0,0 @@ -,sharpe,dhcp-150-250-208-169,30.04.2024 21:44,file:///home/sharpe/.var/app/org.libreoffice.LibreOffice/config/libreoffice/4; \ No newline at end of file diff --git a/Filter_Analysis/__pycache__/defense_filters.cpython-311.pyc b/Filter_Analysis/__pycache__/defense_filters.cpython-311.pyc deleted file mode 100644 index e9b8315..0000000 Binary files a/Filter_Analysis/__pycache__/defense_filters.cpython-311.pyc and /dev/null differ diff --git a/examples/bilateral_filter_eps_0.2.png b/examples/bilateral_filter_eps_0.2.png new file mode 100644 index 0000000..2001d25 Binary files /dev/null and b/examples/bilateral_filter_eps_0.2.png differ diff --git a/examples/bit_depth_eps_0.2.png b/examples/bit_depth_eps_0.2.png new file mode 100644 index 0000000..c0b09ae Binary files /dev/null and b/examples/bit_depth_eps_0.2.png differ diff --git a/examples/gaussian_blur_eps_0.2.png b/examples/gaussian_blur_eps_0.2.png new file mode 100644 index 0000000..ab94859 Binary files /dev/null and b/examples/gaussian_blur_eps_0.2.png differ diff --git a/examples/gaussian_kuwahara_eps_0.2.png b/examples/gaussian_kuwahara_eps_0.2.png new file mode 100644 index 0000000..01aef24 Binary files /dev/null and b/examples/gaussian_kuwahara_eps_0.2.png differ diff --git a/examples/mean_kuwahara_eps_0.2.png b/examples/mean_kuwahara_eps_0.2.png new file mode 100644 index 0000000..2e5925e Binary files /dev/null and b/examples/mean_kuwahara_eps_0.2.png differ diff --git a/examples/random_noise_eps_0.2.png b/examples/random_noise_eps_0.2.png new file mode 100644 index 0000000..74bbae0 Binary files /dev/null and b/examples/random_noise_eps_0.2.png differ diff --git a/examples/threshold_eps_0.2.png b/examples/threshold_eps_0.2.png new file mode 100644 index 0000000..16e8d62 Binary files /dev/null and b/examples/threshold_eps_0.2.png differ diff --git a/examples/unfiltered_eps_0.2.png b/examples/unfiltered_eps_0.2.png new file mode 100644 index 0000000..487a490 Binary files /dev/null and b/examples/unfiltered_eps_0.2.png differ diff --git a/2024 - (Fillable) ECE Engineering Clinic Report Cover Page with Grading Components and Weights.pdf b/impact_statements/2024 - (Fillable) ECE Engineering Clinic Report Cover Page with Grading Components and Weights.pdf similarity index 100% rename from 2024 - (Fillable) ECE Engineering Clinic Report Cover Page with Grading Components and Weights.pdf rename to impact_statements/2024 - (Fillable) ECE Engineering Clinic Report Cover Page with Grading Components and Weights.pdf diff --git a/engineering-clinic---engineering-design-and-impact-statement.pdf b/impact_statements/engineering-clinic---engineering-design-and-impact-statement.pdf similarity index 100% rename from engineering-clinic---engineering-design-and-impact-statement.pdf rename to impact_statements/engineering-clinic---engineering-design-and-impact-statement.pdf diff --git a/2024 - ECE new poster presentation template - landscape.pptx b/poster/2024 - ECE new poster presentation template - landscape.pptx similarity index 100% rename from 2024 - ECE new poster presentation template - landscape.pptx rename to poster/2024 - ECE new poster presentation template - landscape.pptx diff --git a/20240428_12h59m15s_grim.png b/poster/CIFAR-10_excerpt.png similarity index 100% rename from 20240428_12h59m15s_grim.png rename to poster/CIFAR-10_excerpt.png diff --git a/Concept.png b/poster/Concept.png similarity index 100% rename from Concept.png rename to poster/Concept.png diff --git a/Concept.xcf b/poster/Concept.xcf similarity index 100% rename from Concept.xcf rename to poster/Concept.xcf diff --git a/Poster.pptx b/poster/Poster.pptx similarity index 81% rename from Poster.pptx rename to poster/Poster.pptx index b6e69d3..f807fc3 100644 Binary files a/Poster.pptx and b/poster/Poster.pptx differ diff --git a/Adaptive_Kuwahara_filter.pdf b/references/Adaptive_Kuwahara_filter.pdf similarity index 100% rename from Adaptive_Kuwahara_filter.pdf rename to references/Adaptive_Kuwahara_filter.pdf diff --git a/Carlini_and_Wagner.pdf b/references/Carlini_and_Wagner.pdf similarity index 100% rename from Carlini_and_Wagner.pdf rename to references/Carlini_and_Wagner.pdf diff --git a/Dawson-Polikar - Defending_Imperceptible_Backdoor_Attacks_Via_Minimum_Detectable_SNR_Exploitation.pdf b/references/Dawson-Polikar - Defending_Imperceptible_Backdoor_Attacks_Via_Minimum_Detectable_SNR_Exploitation.pdf similarity index 100% rename from Dawson-Polikar - Defending_Imperceptible_Backdoor_Attacks_Via_Minimum_Detectable_SNR_Exploitation.pdf rename to references/Dawson-Polikar - Defending_Imperceptible_Backdoor_Attacks_Via_Minimum_Detectable_SNR_Exploitation.pdf diff --git a/DeepFool.pdf b/references/DeepFool.pdf similarity index 100% rename from DeepFool.pdf rename to references/DeepFool.pdf diff --git a/Dual-Filtering-Schemes.pdf b/references/Dual-Filtering-Schemes.pdf similarity index 100% rename from Dual-Filtering-Schemes.pdf rename to references/Dual-Filtering-Schemes.pdf diff --git a/Explaining_and_Harnessing_Adversarial_Examples.pdf b/references/Explaining_and_Harnessing_Adversarial_Examples.pdf similarity index 100% rename from Explaining_and_Harnessing_Adversarial_Examples.pdf rename to references/Explaining_and_Harnessing_Adversarial_Examples.pdf diff --git a/McGuire_MS_Thesis_Broad_Spectrum_Defense.pdf b/references/McGuire_MS_Thesis_Broad_Spectrum_Defense.pdf similarity index 100% rename from McGuire_MS_Thesis_Broad_Spectrum_Defense.pdf rename to references/McGuire_MS_Thesis_Broad_Spectrum_Defense.pdf diff --git a/RobustAnisotropicDiffusionFilter.pdf b/references/RobustAnisotropicDiffusionFilter.pdf similarity index 100% rename from RobustAnisotropicDiffusionFilter.pdf rename to references/RobustAnisotropicDiffusionFilter.pdf diff --git a/TheStrengthOfWeakLearnability.pdf b/references/TheStrengthOfWeakLearnability.pdf similarity index 100% rename from TheStrengthOfWeakLearnability.pdf rename to references/TheStrengthOfWeakLearnability.pdf diff --git a/Xie-Wu - Feature Denoising for Improving Adversarial Robustness.pdf b/references/Xie-Wu - Feature Denoising for Improving Adversarial Robustness.pdf similarity index 100% rename from Xie-Wu - Feature Denoising for Improving Adversarial Robustness.pdf rename to references/Xie-Wu - Feature Denoising for Improving Adversarial Robustness.pdf diff --git a/Filter_Analysis/images/BilateralPerformance50Sigma.png b/results/BilateralPerformance50Sigma.png similarity index 100% rename from Filter_Analysis/images/BilateralPerformance50Sigma.png rename to results/BilateralPerformance50Sigma.png diff --git a/Filter_Analysis/images/BitDepthReducePerformance.png b/results/BitDepthReducePerformance.png similarity index 100% rename from Filter_Analysis/images/BitDepthReducePerformance.png rename to results/BitDepthReducePerformance.png diff --git a/Filter_Analysis/CIFAR-10_FGSM_3d.png b/results/CIFAR-10_FGSM_3d.png similarity index 100% rename from Filter_Analysis/CIFAR-10_FGSM_3d.png rename to results/CIFAR-10_FGSM_3d.png diff --git a/Filter_Analysis/CIFAR-10_FGSM_highest_rank.png b/results/CIFAR-10_FGSM_highest_rank.png similarity index 100% rename from Filter_Analysis/CIFAR-10_FGSM_highest_rank.png rename to results/CIFAR-10_FGSM_highest_rank.png diff --git a/Filter_Analysis/CIFAR-10_FGSM_performance_map.png b/results/CIFAR-10_FGSM_performance_map.png similarity index 100% rename from Filter_Analysis/CIFAR-10_FGSM_performance_map.png rename to results/CIFAR-10_FGSM_performance_map.png diff --git a/Filter_Analysis/images/GaussianBlurPerformance.png b/results/GaussianBlurPerformance.png similarity index 100% rename from Filter_Analysis/images/GaussianBlurPerformance.png rename to results/GaussianBlurPerformance.png diff --git a/Filter_Analysis/images/GaussianKuwaharaPerformance.png b/results/GaussianKuwaharaPerformance.png similarity index 100% rename from Filter_Analysis/images/GaussianKuwaharaPerformance.png rename to results/GaussianKuwaharaPerformance.png diff --git a/Filter_Analysis/MNIST_FGSM_3d.png b/results/MNIST_FGSM_3d.png similarity index 100% rename from Filter_Analysis/MNIST_FGSM_3d.png rename to results/MNIST_FGSM_3d.png diff --git a/Filter_Analysis/MNIST_FGSM_highest_rank.png b/results/MNIST_FGSM_highest_rank.png similarity index 100% rename from Filter_Analysis/MNIST_FGSM_highest_rank.png rename to results/MNIST_FGSM_highest_rank.png diff --git a/Filter_Analysis/MNIST_FGSM_performance_map.png b/results/MNIST_FGSM_performance_map.png similarity index 100% rename from Filter_Analysis/MNIST_FGSM_performance_map.png rename to results/MNIST_FGSM_performance_map.png diff --git a/Filter_Analysis/images/MeanKuwaharaPerformance.png b/results/MeanKuwaharaPerformance.png similarity index 100% rename from Filter_Analysis/images/MeanKuwaharaPerformance.png rename to results/MeanKuwaharaPerformance.png diff --git a/Filter_Analysis/images/RandomNoisePerformance.png b/results/RandomNoisePerformance.png similarity index 100% rename from Filter_Analysis/images/RandomNoisePerformance.png rename to results/RandomNoisePerformance.png diff --git a/Filter_Analysis/images/ThresholdFilterPerformance.png b/results/ThresholdFilterPerformance.png similarity index 100% rename from Filter_Analysis/images/ThresholdFilterPerformance.png rename to results/ThresholdFilterPerformance.png diff --git a/Filter_Analysis/results/cifar10_fgsm.json b/results/cifar10_fgsm.json similarity index 100% rename from Filter_Analysis/results/cifar10_fgsm.json rename to results/cifar10_fgsm.json diff --git a/Filter_Analysis/results/mnist_fgsm.json b/results/mnist_fgsm.json similarity index 100% rename from Filter_Analysis/results/mnist_fgsm.json rename to results/mnist_fgsm.json diff --git a/Filter_Analysis/results/mnist_fgsm_reformatted.json b/results/mnist_fgsm_reformatted.json similarity index 100% rename from Filter_Analysis/results/mnist_fgsm_reformatted.json rename to results/mnist_fgsm_reformatted.json diff --git a/Filter_Analysis/DatasetImage.png b/src/DatasetImage.png similarity index 100% rename from Filter_Analysis/DatasetImage.png rename to src/DatasetImage.png diff --git a/Filter_Analysis/Filter_Performance_Against_FGSM_Attack.png b/src/Filter_Performance_Against_FGSM_Attack.png similarity index 100% rename from Filter_Analysis/Filter_Performance_Against_FGSM_Attack.png rename to src/Filter_Performance_Against_FGSM_Attack.png diff --git a/Filter_Analysis/Filter_Performance_Against_FGSM_Attack_With_Snapped.png b/src/Filter_Performance_Against_FGSM_Attack_With_Snapped.png similarity index 100% rename from Filter_Analysis/Filter_Performance_Against_FGSM_Attack_With_Snapped.png rename to src/Filter_Performance_Against_FGSM_Attack_With_Snapped.png diff --git a/Filter_Analysis/New_Snapped_Performace.png b/src/New_Snapped_Performace.png similarity index 100% rename from Filter_Analysis/New_Snapped_Performace.png rename to src/New_Snapped_Performace.png diff --git a/Filter_Analysis/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters.png b/src/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters.png similarity index 100% rename from Filter_Analysis/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters.png rename to src/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters.png diff --git a/Filter_Analysis/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters_0.025_epsilon_step.png b/src/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters_0.025_epsilon_step.png similarity index 100% rename from Filter_Analysis/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters_0.025_epsilon_step.png rename to src/Plurality_Vote_Accuracy_Agaisnt_Individual_Filters_0.025_epsilon_step.png diff --git a/Filter_Analysis/Whale-Attacked.png b/src/Whale-Attacked.png similarity index 100% rename from Filter_Analysis/Whale-Attacked.png rename to src/Whale-Attacked.png diff --git a/Filter_Analysis/Whale-Original.png b/src/Whale-Original.png similarity index 100% rename from Filter_Analysis/Whale-Original.png rename to src/Whale-Original.png diff --git a/Filter_Analysis/] b/src/] similarity index 100% rename from Filter_Analysis/] rename to src/] diff --git a/src/__pycache__/cifar10.cpython-311.pyc b/src/__pycache__/cifar10.cpython-311.pyc new file mode 100644 index 0000000..a77f396 Binary files /dev/null and b/src/__pycache__/cifar10.cpython-311.pyc differ diff --git a/Filter_Analysis/__pycache__/cifar10.cpython-312.pyc b/src/__pycache__/cifar10.cpython-312.pyc similarity index 100% rename from Filter_Analysis/__pycache__/cifar10.cpython-312.pyc rename to src/__pycache__/cifar10.cpython-312.pyc diff --git a/src/__pycache__/defense_filters.cpython-311.pyc b/src/__pycache__/defense_filters.cpython-311.pyc new file mode 100644 index 0000000..022ad0b Binary files /dev/null and b/src/__pycache__/defense_filters.cpython-311.pyc differ diff --git a/Filter_Analysis/__pycache__/defense_filters.cpython-312.pyc b/src/__pycache__/defense_filters.cpython-312.pyc similarity index 100% rename from Filter_Analysis/__pycache__/defense_filters.cpython-312.pyc rename to src/__pycache__/defense_filters.cpython-312.pyc diff --git a/Filter_Analysis/__pycache__/dla.cpython-312.pyc b/src/__pycache__/dla.cpython-312.pyc similarity index 100% rename from Filter_Analysis/__pycache__/dla.cpython-312.pyc rename to src/__pycache__/dla.cpython-312.pyc diff --git a/Filter_Analysis/__pycache__/mnist.cpython-311.pyc b/src/__pycache__/mnist.cpython-311.pyc similarity index 100% rename from Filter_Analysis/__pycache__/mnist.cpython-311.pyc rename to src/__pycache__/mnist.cpython-311.pyc diff --git a/Filter_Analysis/__pycache__/mnist.cpython-312.pyc b/src/__pycache__/mnist.cpython-312.pyc similarity index 100% rename from Filter_Analysis/__pycache__/mnist.cpython-312.pyc rename to src/__pycache__/mnist.cpython-312.pyc diff --git a/Filter_Analysis/__pycache__/mplot_3d_helper.cpython-311.pyc b/src/__pycache__/mplot_3d_helper.cpython-311.pyc similarity index 100% rename from Filter_Analysis/__pycache__/mplot_3d_helper.cpython-311.pyc rename to src/__pycache__/mplot_3d_helper.cpython-311.pyc diff --git a/Filter_Analysis/__pycache__/vgg.cpython-311.pyc b/src/__pycache__/vgg.cpython-311.pyc similarity index 100% rename from Filter_Analysis/__pycache__/vgg.cpython-311.pyc rename to src/__pycache__/vgg.cpython-311.pyc diff --git a/Filter_Analysis/__pycache__/vgg.cpython-312.pyc b/src/__pycache__/vgg.cpython-312.pyc similarity index 100% rename from Filter_Analysis/__pycache__/vgg.cpython-312.pyc rename to src/__pycache__/vgg.cpython-312.pyc diff --git a/Filter_Analysis/cifar10.py b/src/cifar10.py similarity index 100% rename from Filter_Analysis/cifar10.py rename to src/cifar10.py diff --git a/Filter_Analysis/cifar10_dla.pt b/src/cifar10_dla.pt similarity index 100% rename from Filter_Analysis/cifar10_dla.pt rename to src/cifar10_dla.pt diff --git a/Filter_Analysis/cifar_cnn.pth b/src/cifar_cnn.pth similarity index 100% rename from Filter_Analysis/cifar_cnn.pth rename to src/cifar_cnn.pth diff --git a/Filter_Analysis/cifar_vgg.pth b/src/cifar_vgg.pth similarity index 100% rename from Filter_Analysis/cifar_vgg.pth rename to src/cifar_vgg.pth diff --git a/Filter_Analysis/data/MNIST/raw/t10k-images-idx3-ubyte b/src/data/MNIST/raw/t10k-images-idx3-ubyte similarity index 100% rename from Filter_Analysis/data/MNIST/raw/t10k-images-idx3-ubyte rename to src/data/MNIST/raw/t10k-images-idx3-ubyte diff --git a/Filter_Analysis/data/MNIST/raw/t10k-images-idx3-ubyte.gz b/src/data/MNIST/raw/t10k-images-idx3-ubyte.gz similarity index 100% rename from Filter_Analysis/data/MNIST/raw/t10k-images-idx3-ubyte.gz rename to src/data/MNIST/raw/t10k-images-idx3-ubyte.gz diff --git a/Filter_Analysis/data/MNIST/raw/t10k-labels-idx1-ubyte b/src/data/MNIST/raw/t10k-labels-idx1-ubyte similarity index 100% rename from Filter_Analysis/data/MNIST/raw/t10k-labels-idx1-ubyte rename to src/data/MNIST/raw/t10k-labels-idx1-ubyte diff --git a/Filter_Analysis/data/MNIST/raw/t10k-labels-idx1-ubyte.gz b/src/data/MNIST/raw/t10k-labels-idx1-ubyte.gz similarity index 100% rename from Filter_Analysis/data/MNIST/raw/t10k-labels-idx1-ubyte.gz rename to src/data/MNIST/raw/t10k-labels-idx1-ubyte.gz diff --git a/Filter_Analysis/data/MNIST/raw/train-images-idx3-ubyte b/src/data/MNIST/raw/train-images-idx3-ubyte similarity index 100% rename from Filter_Analysis/data/MNIST/raw/train-images-idx3-ubyte rename to src/data/MNIST/raw/train-images-idx3-ubyte diff --git a/Filter_Analysis/data/MNIST/raw/train-images-idx3-ubyte.gz b/src/data/MNIST/raw/train-images-idx3-ubyte.gz similarity index 100% rename from Filter_Analysis/data/MNIST/raw/train-images-idx3-ubyte.gz rename to src/data/MNIST/raw/train-images-idx3-ubyte.gz diff --git a/Filter_Analysis/data/MNIST/raw/train-labels-idx1-ubyte b/src/data/MNIST/raw/train-labels-idx1-ubyte similarity index 100% rename from Filter_Analysis/data/MNIST/raw/train-labels-idx1-ubyte rename to src/data/MNIST/raw/train-labels-idx1-ubyte diff --git a/Filter_Analysis/data/MNIST/raw/train-labels-idx1-ubyte.gz b/src/data/MNIST/raw/train-labels-idx1-ubyte.gz similarity index 100% rename from Filter_Analysis/data/MNIST/raw/train-labels-idx1-ubyte.gz rename to src/data/MNIST/raw/train-labels-idx1-ubyte.gz diff --git a/Filter_Analysis/data/cifar-10-batches-py/batches.meta b/src/data/cifar-10-batches-py/batches.meta similarity index 100% rename from Filter_Analysis/data/cifar-10-batches-py/batches.meta rename to src/data/cifar-10-batches-py/batches.meta diff --git a/Filter_Analysis/data/cifar-10-batches-py/data_batch_1 b/src/data/cifar-10-batches-py/data_batch_1 similarity index 100% rename from Filter_Analysis/data/cifar-10-batches-py/data_batch_1 rename to src/data/cifar-10-batches-py/data_batch_1 diff --git a/Filter_Analysis/data/cifar-10-batches-py/data_batch_2 b/src/data/cifar-10-batches-py/data_batch_2 similarity index 100% rename from Filter_Analysis/data/cifar-10-batches-py/data_batch_2 rename to src/data/cifar-10-batches-py/data_batch_2 diff --git a/Filter_Analysis/data/cifar-10-batches-py/data_batch_3 b/src/data/cifar-10-batches-py/data_batch_3 similarity index 100% rename from Filter_Analysis/data/cifar-10-batches-py/data_batch_3 rename to src/data/cifar-10-batches-py/data_batch_3 diff --git a/Filter_Analysis/data/cifar-10-batches-py/data_batch_4 b/src/data/cifar-10-batches-py/data_batch_4 similarity index 100% rename from Filter_Analysis/data/cifar-10-batches-py/data_batch_4 rename to src/data/cifar-10-batches-py/data_batch_4 diff --git a/Filter_Analysis/data/cifar-10-batches-py/data_batch_5 b/src/data/cifar-10-batches-py/data_batch_5 similarity index 100% rename from Filter_Analysis/data/cifar-10-batches-py/data_batch_5 rename to src/data/cifar-10-batches-py/data_batch_5 diff --git a/Filter_Analysis/data/cifar-10-batches-py/readme.html b/src/data/cifar-10-batches-py/readme.html similarity index 100% rename from Filter_Analysis/data/cifar-10-batches-py/readme.html rename to src/data/cifar-10-batches-py/readme.html diff --git a/Filter_Analysis/data/cifar-10-batches-py/test_batch b/src/data/cifar-10-batches-py/test_batch similarity index 100% rename from Filter_Analysis/data/cifar-10-batches-py/test_batch rename to src/data/cifar-10-batches-py/test_batch diff --git a/Filter_Analysis/data/cifar-10-python.tar.gz b/src/data/cifar-10-python.tar.gz similarity index 100% rename from Filter_Analysis/data/cifar-10-python.tar.gz rename to src/data/cifar-10-python.tar.gz diff --git a/Filter_Analysis/data/lenet_mnist_model.pth b/src/data/lenet_mnist_model.pth similarity index 100% rename from Filter_Analysis/data/lenet_mnist_model.pth rename to src/data/lenet_mnist_model.pth diff --git a/Filter_Analysis/defense_filters.py b/src/defense_filters.py similarity index 79% rename from Filter_Analysis/defense_filters.py rename to src/defense_filters.py index b42522a..f5df003 100644 --- a/Filter_Analysis/defense_filters.py +++ b/src/defense_filters.py @@ -1,3 +1,4 @@ +import matplotlib.pyplot as plt import cv2 from pykuwahara import kuwahara import numpy as np @@ -26,6 +27,10 @@ def gaussian_kuwahara(data, dimensions, radius=5): for i in range(dimensions[0]): filtered_images[i] = kuwahara(images[i], method='gaussian', radius=radius, image_2d=images[i]) + if i == 0 and radius == 5: + plt.title("Gaussian Kuwahara", fontsize=40) + plt.imshow(filtered_images[i], cmap='gray') + plt.show() filtered_images = filtered_images.transpose(0,3,1,2) return torch.tensor(filtered_images).float() @@ -37,6 +42,10 @@ def mean_kuwahara(data, dimensions, radius=5): for i in range(dimensions[0]): filtered_images[i] = kuwahara(images[i], method='mean', radius=radius, image_2d=images[i]) + if i == 0 and radius == 5: + plt.title("Mean Kuwahara", fontsize=40) + plt.imshow(filtered_images[i], cmap='gray') + plt.show() filtered_images = filtered_images.transpose(0,3,1,2) return torch.tensor(filtered_images).float() @@ -52,6 +61,11 @@ def random_noise(data, dimensions, intensity=0.001): noise = np.zeros(images[i].shape, images[i].dtype) cv2.randn(noise, mean, stddev) filtered_images[i] = cv2.addWeighted(images[i], 1.0, noise, intensity, 0.0).reshape(filtered_images[i].shape) + if i == 0 and intensity == 0.0015: + plt.title("Random Noise", fontsize=40) + plt.imshow(filtered_images[i], cmap='gray') + plt.show() + filtered_images = filtered_images.transpose(0,3,1,2) return torch.tensor(filtered_images).float() @@ -63,6 +77,13 @@ def gaussian_blur(data, dimensions, ksize=(5,5)): for i in range(dimensions[0]): filtered_images[i] = cv2.GaussianBlur(images[i], ksize=ksize, sigmaX=0).reshape(filtered_images[i].shape) + if i == 0 and ksize[0] == 5: + plt.title("Unfiltered", fontsize=40) + plt.imshow(images[i], cmap='gray') + plt.show() + plt.title("Gaussian Blur", fontsize=40) + plt.imshow(filtered_images[i], cmap='gray') + plt.show() filtered_images = filtered_images.transpose(0,3,1,2) return torch.tensor(filtered_images).float() @@ -74,6 +95,10 @@ def bilateral_filter(data, dimensions, d=5, sigma=50): for i in range(dimensions[0]): filtered_images[i] = cv2.bilateralFilter(images[i], d, sigma, sigma).reshape(filtered_images[i].shape) + if i == 0 and d == 5: + plt.title("Bilateral Filter", fontsize=40) + plt.imshow(filtered_images[i], cmap='gray') + plt.show() filtered_images = filtered_images.transpose(0,3,1,2) return torch.tensor(filtered_images).float() @@ -99,6 +124,11 @@ def threshold_filter(data, dimensions, threshold=0.5): if min_value < 0: filtered_images[i] -= min_value + + if i == 0 and threshold == 0.5: + plt.title("Threshold Filter", fontsize=40) + plt.imshow(filtered_images[i], cmap='gray') + plt.show() filtered_images = filtered_images.transpose(0,3,1,2) return torch.tensor(filtered_images).float() @@ -111,6 +141,12 @@ def bit_depth(data, dimensions, bits=16): for i in range(dimensions[0]): filtered_images[i] = (images[i]*(2**bits)).astype(int).astype(float)/(2**bits) + + if i == 0 and bits == 4: + plt.title("Bit-Depth", fontsize=40) + plt.imshow(filtered_images[i], cmap='gray') + plt.show() + filtered_images = filtered_images.transpose(0,3,1,2) return torch.tensor(filtered_images).float() diff --git a/Filter_Analysis/difference.png b/src/difference.png similarity index 100% rename from Filter_Analysis/difference.png rename to src/difference.png diff --git a/Filter_Analysis/display_results.py b/src/display_results.py similarity index 100% rename from Filter_Analysis/display_results.py rename to src/display_results.py diff --git a/Filter_Analysis/dla.py b/src/dla.py similarity index 100% rename from Filter_Analysis/dla.py rename to src/dla.py diff --git a/Filter_Analysis/kuwahara_FGSM_performance.png b/src/kuwahara_FGSM_performance.png similarity index 100% rename from Filter_Analysis/kuwahara_FGSM_performance.png rename to src/kuwahara_FGSM_performance.png diff --git a/Filter_Analysis/mnist.py b/src/mnist.py similarity index 100% rename from Filter_Analysis/mnist.py rename to src/mnist.py diff --git a/Filter_Analysis/mnist_cnn_bilateral.pt b/src/mnist_cnn_bilateral.pt similarity index 100% rename from Filter_Analysis/mnist_cnn_bilateral.pt rename to src/mnist_cnn_bilateral.pt diff --git a/Filter_Analysis/mnist_cnn_filtered.pt b/src/mnist_cnn_filtered.pt similarity index 100% rename from Filter_Analysis/mnist_cnn_filtered.pt rename to src/mnist_cnn_filtered.pt diff --git a/Filter_Analysis/mnist_cnn_gaussian_blur.pt b/src/mnist_cnn_gaussian_blur.pt similarity index 100% rename from Filter_Analysis/mnist_cnn_gaussian_blur.pt rename to src/mnist_cnn_gaussian_blur.pt diff --git a/Filter_Analysis/mnist_cnn_unfiltered.pt b/src/mnist_cnn_unfiltered.pt similarity index 100% rename from Filter_Analysis/mnist_cnn_unfiltered.pt rename to src/mnist_cnn_unfiltered.pt diff --git a/Filter_Analysis/mplot_3d_helper.py b/src/mplot_3d_helper.py similarity index 100% rename from Filter_Analysis/mplot_3d_helper.py rename to src/mplot_3d_helper.py diff --git a/Filter_Analysis/reformat_data.py b/src/reformat_data.py similarity index 100% rename from Filter_Analysis/reformat_data.py rename to src/reformat_data.py diff --git a/Filter_Analysis/test_defenses.py b/src/test_defenses.py similarity index 86% rename from Filter_Analysis/test_defenses.py rename to src/test_defenses.py index 44c5643..a4ce0ac 100644 --- a/Filter_Analysis/test_defenses.py +++ b/src/test_defenses.py @@ -20,39 +20,40 @@ import defense_filters ATTACK = "FGSM" -DATASET = "CIFAR-10" +DATASET = "MNIST" -RES_X = 32 -RES_Y = 32 -CHANNELS = 3 +RES_X = 28 +RES_Y = 28 +CHANNELS = 1 +MIN_EPSILON = 0.2 MAX_EPSILON = 0.3 EPSILON_STEP = 0.025 TESTED_STRENGTH_COUNT = 5 -epsilons = np.arange(0.0, MAX_EPSILON+EPSILON_STEP, EPSILON_STEP) -pretrained_model = "cifar_vgg.pth" +epsilons = np.arange(MIN_EPSILON, MAX_EPSILON+EPSILON_STEP, EPSILON_STEP) +pretrained_model = "mnist_cnn_unfiltered.pt" use_cuda=False torch.manual_seed(69) -#test_loader = torch.utils.data.DataLoader( -# datasets.MNIST('data/', train=False, download=True, transform=transforms.Compose([ -# transforms.ToTensor(), -# transforms.Normalize((0.1307,), (0.3081,)), -# ])), -# batch_size=1, shuffle=True) +test_loader = torch.utils.data.DataLoader( + datasets.MNIST('data/', train=False, download=True, transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)), + ])), + batch_size=1, shuffle=False) -transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) -batch_size = 1 -testset = datasets.CIFAR10(root='./data', train=False, download=True, transform=transform) -test_loader = torch.utils.data.DataLoader(testset, batch_size=batch_size, shuffle=True, num_workers=2) +#transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) +#batch_size = 1 +#testset = datasets.CIFAR10(root='./data', train=False, download=True, transform=transform) +#test_loader = torch.utils.data.DataLoader(testset, batch_size=batch_size, shuffle=True, num_workers=2) print("CUDA Available: ", torch.cuda.is_available()) device = torch.device("cuda" if use_cuda and torch.cuda.is_available() else "cpu") -model = vgg.VGG("VGG16").to(device) +model = mnist.Net().to(device) model.load_state_dict(torch.load(pretrained_model, map_location=device)) @@ -150,6 +151,7 @@ def test(model, device, test_loader, epsilon, filter): while i >= len(filtered_correct_counts): filtered_correct_counts.append(0) filtered_correct_counts[i] += 1 + return # Get the predicted classification unfiltered_pred = output_unfiltered.max(1, keepdim=True)[1] @@ -199,8 +201,9 @@ for filter in filters: results["filters"][filter].append(accuracies) results_json = json.dumps(results, indent=4) - with open("results/cifar10_fgsm.json", "w") as outfile: - outfile.write(results_json) + break + #with open("results/cifar10_fgsm.json", "w") as outfile: + # outfile.write(results_json) # Plot the results #plt.figure(figsize=(16,9)) diff --git a/Filter_Analysis/unfiltered_FGSM_performance.png b/src/unfiltered_FGSM_performance.png similarity index 100% rename from Filter_Analysis/unfiltered_FGSM_performance.png rename to src/unfiltered_FGSM_performance.png diff --git a/Filter_Analysis/vgg.py b/src/vgg.py similarity index 100% rename from Filter_Analysis/vgg.py rename to src/vgg.py diff --git a/Filter_Analysis/whale_full.png b/src/whale_full.png similarity index 100% rename from Filter_Analysis/whale_full.png rename to src/whale_full.png diff --git a/Filter_Analysis/wiki/Approach.md b/wiki/Approach.md similarity index 100% rename from Filter_Analysis/wiki/Approach.md rename to wiki/Approach.md diff --git a/Filter_Analysis/wiki/DesignImpact.md b/wiki/DesignImpact.md similarity index 100% rename from Filter_Analysis/wiki/DesignImpact.md rename to wiki/DesignImpact.md diff --git a/Filter_Analysis/wiki/FilterAnalysis.md b/wiki/FilterAnalysis.md similarity index 100% rename from Filter_Analysis/wiki/FilterAnalysis.md rename to wiki/FilterAnalysis.md diff --git a/Filter_Analysis/wiki/Results.md b/wiki/Results.md similarity index 100% rename from Filter_Analysis/wiki/Results.md rename to wiki/Results.md diff --git a/Filter_Analysis/wiki/Tests.md b/wiki/Tests.md similarity index 100% rename from Filter_Analysis/wiki/Tests.md rename to wiki/Tests.md diff --git a/Filter_Analysis/wiki/Timeline.md b/wiki/Timeline.md similarity index 100% rename from Filter_Analysis/wiki/Timeline.md rename to wiki/Timeline.md