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.
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.
input a raw mosaic pattern image (bayer or xtrans), after the denoise module scaled it to [0,1]output the denoised and demosaiced rgb imagethe 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.