This project evaluates the robustness of the LeNet convolutional neural network under Gaussian Blur (σ = 0.1, 0.25, 0.5) conditions, compared to a noise-free baseline.
Training and evaluation are performed on a subset of the MNIST dataset, with visualizations of accuracy and loss curves.
.
├─ main.py # Main training and evaluation script
├─ dataset.py # MNIST dataset loader and Gaussian Blur preprocessing
├─ model.py # LeNet model implementation
├─ config.py # Configuration parameters
├─ make_report.py # Generate graphs and summary from report_table.csv
├─ requirements.txt # Python dependencies
├─ output/ # Saved loss/accuracy plots
├─ results/ # CSV logs for model accuracy
└─ README.md
- Python 3.8+
- PyTorch
- torchvision
- OpenCV (cv2)
- matplotlib
- pandas
- Pillow
Install dependencies:
pip install -r requirements.txtpython main.py --mode train --model lenet --noise False --epochs 10
python main.py --mode eval --model lenet --noise False# Example: σ = 0.25
python main.py --mode train --model lenet --noise True --noise_type gaussian_blur --noise_var 0.25 --epochs 10
python main.py --mode eval --model lenet --noise True --noise_type gaussian_blur --noise_var 0.25python main.py --mode visualize_report- Accuracy comparison graphs are stored in:
output/summary/accuracy_comparison_noise0.1.png output/summary/accuracy_comparison_noise0.25.png output/summary/accuracy_comparison_noise0.5.png - Training loss curves are saved in:
output/lenet/loss/
- Add more noise types (Gaussian Noise, Salt & Pepper, Motion Blur).
- Compare with ResNet18, MobileNetV2, and EfficientNetB0.
- Perform data augmentation (rotation, random crop).
- Test on embedded devices (Jetson Nano, Raspberry Pi).
- espressolee
- GitHub Profile