Skip to main content
Back to the lab

Academic Project · Deep Learning / Computer Vision

Image Deblurring

A lightweight CNN based on the DeepUNet architecture, trained to take a blurred image and output a sharper version. We generated training data synthetically by applying blur kernels to images from the COCO dataset.

PyTorchPythonCOCO DatasetNumPyOpenCV

Completed in June 2025 with Aka Elishama KADJO for the Deep Learning course. Our joint notebook covers synthetic data preparation, the PyTorch model, training, and evaluation.

Approach

Training data

Generated synthetically by applying Gaussian, box, and motion blur to COCO images resized to 512 × 512 pixels.

Architecture

DeepUNet: small enough to train on a single GPU while still producing good results. Learns the mapping from blurred to sharp.

Goal

Show thousands of (blurred, sharp) pairs to a neural network and let it figure out how to reverse different types of blur.

Recorded results

Section 8 of the project notebook records the following averages over its 500-image evaluation sample.

PSNR
28.10 dB
SSIM
0.8080
Original figure from section 9 of the project notebook: blurred input → model output → original sharp image.

Evaluation limits: the notebook samples training and evaluation images independently from the same COCO folder without enforcing a disjoint split.

These recorded scores may include overlap and should not be treated as a held-out benchmark. It does not report blurred-input baseline scores or a quantified improvement on real-world blur.

Source: project notebook, sections 3, 8 and 9

Project Notebook

Full write-up with the math, code, training details, and results.

Problem statement and motivation
Synthetic blur generation from COCO
DeepUNet architecture details
Training process and hyperparameters
Results and visual comparisons
Conclusions and future improvements