LPDM
Denoising Diffusion Post-Processing for Low-Light Image Enhancement
Install / Use
/learn @savvaki/LPDMREADME
Denoising Diffusion Post-Processing for Low-Light Image Enhancement
News
- Accepted for presentation in the Journal to Conference track at 2025 International Joint Conference on Neural Networks (IJCNN 2025) 🥳
- The article is officially published in Pattern Recognition and is openly accessible [here] 🎉
Abstract: Low-light image enhancement (LLIE) techniques attempt to increase the visibility of images captured in low-light scenarios. However, as a result of enhancement, a variety of image degradations such as noise and color bias are revealed. Furthermore, each particular LLIE approach may introduce a different form of flaw within its enhanced results. To combat these image degradations, post-processing denoisers have widely been used, which often yield oversmoothed results lacking detail. We propose using a diffusion model as a post-processing approach, and we introduce Low-light Post-processing Diffusion Model (LPDM) in order to model the conditional distribution between under-exposed and normally-exposed images. We apply LPDM in a manner which avoids the computationally expensive generative reverse process of typical diffusion models, and post-process images in one pass through LPDM. Extensive experiments demonstrate that our approach outperforms competing post-processing denoisers by increasing the perceptual quality of enhanced low-light images on a variety of challenging low-light datasets. Source code is available at https://github.com/savvaki/LPDM.

Download Results
The image results for all techniques and datasets are available for download here.
undarkendirectories contain $\hat{\boldsymbol{x}}_0^\eta$ for each low-light enhancement technique $\eta$. In other words, these are the results before post-processing.denoiseddirectories contain the results of LPDM in thelpdm_lolsubdirectory, as well as the results for the ablation studies. For the LOL dataset, the results of NAFNet and BM3D are also provided. BM3D results are provided for different values of $\sigma$.- The LPDM results have subdirectories in the format phi_s which indicate the $\phi$ and $s$ parameters used.
Requirements
Set up and activate the virtual conda environment:
conda env create -f environment.ymlconda activate lpdm
Test
- Download the pre-trained model
.ckptfile and.yamlfile here and place them in thecheckpointsdirectory:───checkpoints ├───lpdm_lol.ckpt └───lpdm_lol.yaml - Modify the
sandphi(φ) parameters inconfigs/test/denoise.yamlas desired. - Place your low-light images (c) in the
test/darkdirectory - Place your enhanced images by any enhancer η in the
test/etadirectory. Make sure the images have the same names as the files intest/dark - Run the following commands:
cd scripts python denoise_config.py - Denoised results can be found in
test/denoised - Run the following command for info about optional extra settings:
python denoise_config.py --help. - By default, the device is set to CPU. To use GPU pass the argument
--device "cuda"
Calculate Metrics
- Modify
configs/test/metrics.yamland specify the denoised image glob pathpred_pathand the ground truth glob pathtarget_path. To use non-reference metrics, removetarget_pathfrom the config. - Run the following commands:
cd scripts python calculate_metrics.py - Metrics will be saved in
test/results.csv. - For additional options run
python calculate_metrics.py --help
Train
-
Download the LOL Dataset here. Unzip the dataset and place the contents in the
datasets/loldirectory:───datasets └───lol ├───eval15 │ ├───high │ └───low └───our485 ├───high └───low -
For the commands below, PyTorch lightning will create a
logsdirectory where checkpoints will be saved. -
For GPU training options pass the
--gpuargument according to PyTorch Lighting documentation. The examples below use one GPU. -
Train and log locally:
python main.py --base configs/train/lpdm_lol.yaml --gpu 0,
-
Train and log metrics with wandb:
- Set your wandb environment variables:
WANDB_API_KEY,WANDB_ENTITY,WANDB_PROJECT python main.py --base configs/train/lpdm_lol.yaml --logger_to_use wandb --gpu 0,
- Set your wandb environment variables:
-
An example command to resume a saved checkpoint in the directory
RUN_DIRECTORY_NAME_HEREusing wandb logging:python main.py --resume logs/RUN_DIRECTORY_NAME_HERE --logger_to_use wandb --gpu 0,
-
To reduce the size of the model, reduce the
model_channelsparameter inconfigs/train/lpdm_lol.yaml
BibTeX Citation
@article{panagiotou2024denoising,
title = {Denoising diffusion post-processing for low-light image enhancement},
journal = {Pattern Recognition},
volume = {156},
pages = {110799},
year = {2024},
issn = {0031-3203},
doi = {https://doi.org/10.1016/j.patcog.2024.110799},
url = {https://www.sciencedirect.com/science/article/pii/S0031320324005508},
author = {Savvas Panagiotou and Anna S. Bosman}
}
References
This repository is a derivative of the original Stable Diffusion repository.
Related Skills
node-connect
347.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
347.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
347.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
