CSNet

June 13, 2019 · View on GitHub

This is reimplemenation of CSNet [1] for block based compressive sensing reconstruction. CSNet is implemented in Matconvnet. This implement is motivated by DnCNN implementation [2]

Update 2019/06

The code has been fixed, it now can produce better quality than CSNet (i.e. 32.40 PSNR at subrate 0.1 for Set14). The main reason is author converts RGB images to YCbCr and takes the Y channel, while in previous implementation I used rgb2gray for converting.

CSNet_v03 contains up-to-date implementation.

Current Performance | PSNR (dB)

GSRCSNet[1]ReImp.Best
ImageRatePSRNSSIMPSNRSSIMPSNRSSIMPSNRSSIM
baby0.132.180.883234.830.917033.360.90233.750.907
bird0.134.470.941135.150.947633.050.93134.470.949
butter0.123.780.827928.010.901825.710.85927.530.914
Avg30.140.884132.660.922130.710.89731.910.923

How to run

In order to train the CSNet from the scratch, you should run

  1. 'GenerateTrainingPatches.m' first. It will create trainding data outsize of this CSNet folder (for 100Mb limitation of github).

  2. TrainingCode/CSNet_v03/Demo_Train.m Training data is saved in "data/CSNet_rblk<block_size>mBat<no_mini_batch_size>"

Disclaimer

Due to some parameters are not mentioned in [1], I try my best to reproduce the resported results, by evaluating several parameter. However, the re-implementation results (PSNR - dB) are still 1~2dB lower than reported results.

If you find the better configurations, or any suggestion. Feeling free to recommend me.

Reference

[1] S. Wuzhen et al, “Deep network for compressed image sensing.� IEEE Inter. Conf. Multimedia Expo, Jul-2017.

[2] K. Zhang et al, Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising, available at https://github.com/cszn/DnCNN