← All work
AcademicJanuary 2026ENSTA (Brest Campus), deep learning project

Image Denoising Autoencoder

A convolutional autoencoder trained on real camera sensor noise, then tested on a different sensor.

32.4 dBmean PSNR on the test images
0.89mean SSIM on the test images
27.6 dBPSNR on a different sensor

The need

Digital photos taken in low light carry noise from the camera sensor, and it depends on the sensor, its electronics and the conditions. Many denoising models train on artificial noise and struggle on real images. This project uses real noise, with clean reference shots of the same scene.

What I owned

The data protocol, model design, training and evaluation, in a team of two.

The solution

The convolutional autoencoder, with encoder and decoder blocks around a compressed code.
Data
RENOIR Canon T3iSplit by scene: 70/15/15
Preprocess
RGB in [0, 1]128×128 overlapping patches
Train
MSE lossReduceLROnPlateauPSNR and SSIM tracked
Evaluate
Overlap-tiled full imagesResidual histogramsOther sensor test
The data protocol stayed the same across experiments, so comparisons are fair.

How it was built

The split is made by scene and not by image, because several noisy shots share one reference and mixing them across sets would leak information. Evaluation reconstructs full images by tiling overlapping patches, which measures what a user would actually see.

Results

  • On the test images: a mean PSNR of 32.45 dB (±1.93) and a mean SSIM of 0.886.
  • On a different sensor (Mi3): 27.56 dB and 0.80 across 76 images. The drop is expected, and the metrics stay acceptable, which shows partial generalisation.
Noisy input.
Denoised output.
Residuals against the reference: denoised values cluster more tightly around zero.