home | download | howto | module docs | git | beta

jddcnn: joined denoising and demosaicing convolutional neural network

this implements an integrated cnn denoiser based on Attila Afra's open image denoise architecture. in particular this is compatile with the weights produced by this fork here. the fork introduces minor differences to the u-net, mainly leaky relu parameter, channel counts, and pixel shuffles on both ends to account for bayer and xtrans patterns. for full colour denoising, please use the oidn module instead.

image by piratenpanda (pixls.us), CC-BY-SA

the weights are read from ~/.config/vkdt/data/jddcnn-bayer.dat or from ~/.config/vkdt/data/jddcnn-xtrans.dat. download links:

in the pipeline it replaces denoising and demosaicing. the input is scene referred mosaic data. that is, the input should be after the denoise module (but be sure to leave the denoising strength at 0). this way, the black borders will be cropped and the data will be rescaled to the correct range.

as a sidenote, working with neural networks is pretty exciting.

parameters

connectors

ethics

the demosaicing/denoising models here have been trained on a couple hundred of random holiday pictures that i happened to find on my harddrive. for the limited receptive fields and the application here it doesn't seem to matter so much what's on the images (apart from edges, gradients, patterns). the synthetic training data generator will fuck them up beyond any recognition: cut into small tiles, flip, switch colour channels, etc. the data is thus by no means illegally scraped off dubious sources from the internets by big tech, as you would otherwise expect. the training itself also finishes on a single desktop machine in an hour or two, so if you want to be absolutely sure it's easy enough to retrain for yourself on your own data.

February 2026