I am currently trying to train CNNs to remove Poisson noise from images. The software I am using is Matlab 2018b, however the results I am getting are poor.
I have followed the steps provided in the following link. Here it is stated that we need to make a denoisingImageDatastore, which holds patches of our training images, and applies Gaussian noise to them. This isn't what I am looking for, but for the sake of practice I decided to try it out on my of PASCAL VOC dataset. I will now roughly outline the steps in my matlab code for this.
- I first created an imageDatastore holding 45 of our images used for training.
- Fifteen of those images will be used for validation
- Now we create denoisingImagedatastores for both the training and validation set. There will be 60 patches per image, with the patch size 50x50
- Then we specify the training options
- I then specified the network layers using dnCNNLayers function from matlab
- The next step is to train the network using the trainNetwork function
Here is a screen shot from the end of the training process.
I have done only 100 iterations, but the results are not too bad. Here we can se the pristine image, the noisy image and the denoised image using this network.
On the following link is the code I used for this. If you have any suggestions how the RMSE could be further lowered, it would be appreciated.
Please note that I have previously trained the same network on a much larger dataset and with nearly 10000 iterations, and the best rmse it could achieve was about 2.3. So obviously some parameters need to be changed.