├── Algorithms.7z ├── Demos.7z ├── Packages.7z ├── README.md ├── ReadMe ├── SCAMPI-MATLAB.7z ├── TestImages.7z ├── Utils.7z └── gampmatlab.7z /Algorithms.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hehengtao/LDAMP_based-Channel-estimation/2b5c135e79482b7c317165732b9a797de5e2bd33/Algorithms.7z -------------------------------------------------------------------------------- /Demos.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hehengtao/LDAMP_based-Channel-estimation/2b5c135e79482b7c317165732b9a797de5e2bd33/Demos.7z -------------------------------------------------------------------------------- /Packages.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hehengtao/LDAMP_based-Channel-estimation/2b5c135e79482b7c317165732b9a797de5e2bd33/Packages.7z -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This code is for the following paper: 2 | 3 | H. He, C. Wen, S. Jin, and G. Y. Li, “Deep learning-based channel estimation for beamspace mmwave massive MIMO 4 | systems,” IEEE Wireless Commun. Lett., vol. 7, no. 5, pp. 852–855, Oct. 2018. 5 | 6 | 7 | Please cite the paper when use this code. 8 | 9 | 1. Install Matcovnet 10 | 11 | Choose the gpu version and verify you have a supported GPU and that the latest driver is installed. 12 | 13 | 14 | 2. Run main program 15 | 16 | Location: ..\LDAMP_for_Rice\D-AMP_Toolbox-master\SCAMPI-MATLAB\scampi-vs-ssd\ 17 | 18 | main_new_old.m: main function, run and call trained network and denoiser to produce simulation results 19 | 20 | test.m: Generate the Saleh-Valenzuela channel model 21 | 22 | Trained network is saved at ..\Code_WCL_2018\LDAMP_for_Rice\D-AMP_Toolbox-master\Packages\DnCNN\BestNets_20 23 | 24 | 3. Trainin DnCNN network 25 | 26 | Location: ..\LDAMP_for_Rice\D-AMP_Toolbox-master\Packages\DnCNN\Training 27 | 28 | Demo_Train.m: main function for training the DnCNN 29 | 30 | Demo_test: main fuction for test the DnCNN 31 | 32 | Training_h.mat: Training data 33 | 34 | Vali_h.mat: Validata and Test data 35 | 36 | rescaleImage.m: rescale the channel into [0,1] 37 | 38 | channel_gen.m: generate the training and test data 39 | 40 | Many trained network will be saved at ..\LDAMP_for_Rice\D-AMP_Toolbox-master\Packages\DnCNN\Training\NewNetworks. Copy the best network with different SNR and rename to 41 | ..\LDAMP_for_Rice\D-AMP_Toolbox-master\Packages\DnCNN\BestNets_20. 42 | 43 | 4. LDAMP network 44 | 45 | Location: ..\LDAMP_for_Rice\D-AMP_Toolbox-master\SCAMPI-MATLAB and ..\LDAMP_for_Rice\D-AMP_Toolbox-master\Algorithms 46 | 47 | DAMP_SNR1.m: D-AMP algorithm 48 | 49 | Acknoledge: 50 | 51 | Many thanks for Dr.Christopher A. Metzler share the code selflessly. Instructions about installing the matcovnet and using LDAMP network can refer to 52 | 53 | website: https://github.com/ricedsp/D-AMP_Toolbox 54 | 55 | Questions/suggestions/comments about LDAMP-based Channel estimation network: hehengtao@seu.edu.cn 56 | -------------------------------------------------------------------------------- /ReadMe: -------------------------------------------------------------------------------- 1 | Original release date : 8/7/14 2 | 3 | Reference #1 : "From Denoising to Compressed Sensing", published in IEEE Trans. Info. Theory, 2016 4 | Authors : Christopher A. Metzler, Arian Maleki, Richard G. Baraniuk 5 | Download : http://arxiv.org/abs/1406.4175 6 | 7 | Reference #2 : "Denoising-based Vector AMP" 8 | Authors : Philip Schniter, Sundeep Rangan, Alyson K. Fletcher 9 | Download : http://arxiv.org/abs/1611.01376 10 | 11 | Reference #3 : "BM3D-PRGAMP: Compressive phase retrieval based on BM3D denoising" 12 | Authors : Christopher A. Metzler, Arian Maleki, Richard G. Baraniuk 13 | Download : http://ieeexplore.ieee.org/abstract/document/7532810/ 14 | 15 | Reference #4 : "Learned D-AMP: Principled Neural-Network-based Compressive Image Recovery" 16 | Authors : Christopher A. Metzler, Ali Mousavi, Richard G. Baraniuk 17 | Download : https://arxiv.org/abs/1704.06625 18 | 19 | Questions/suggestions/comments: chris.metzler@rice.edu (D-AMP, D-prGAMP, & LDAMP) or schniter.1@osu.edu (D-VAMP) 20 | 21 | Primary Contents 22 | --------------------------------------------------------------------------- 23 | scripts: 24 | CS_1D_Demo.m: Recover a compressively sampled 1D signal with Haar wavelet sparsity based (V)AMP and NLM-(V)AMP. 25 | CS_Imaging_Demo.m: Recover compressively sampled image using D-AMP. 26 | CS_Imaging_Demo_DVAMP.m: Recover compressively sampled image using D-VAMP. 27 | CS_Imaging_Demo_LDAMP.m: Recover compressively sampled image using L(V)AMP. 28 | CPR_Imaging_Demo.m: Perform compressive phase retrieval with D-prGAMP. 29 | QQplotGenerator.m: Generate a series of QQplots of the effective noise of D-IT and D-AMP. 30 | StateEvolutionGenerator.m: Compute the state evolution of a D-AMP algorithm and compare it to the true MSEs of D-AMP and D-IT. 31 | 32 | functions: 33 | AMP.m: Reconstructs sparse, compressively sampled signals using AMP. 34 | VAMP.m: Reconstructs sparse, compressively sampled signals using VAMP. 35 | DAMP.m: Performs D-AMP reconstruction of a compressively sampled signal. The string "denoiser" selects which denoiser to use. 36 | DVAMP.m: Performs D-VAMP reconstruction of a compressively sampled signal. The string "denoiser" selects which denoiser to use. 37 | DprGAMP: Performs D-prGAMP compressive phase retrieval of a signal. The string "denoiser" selects which denoiser to use. 38 | DIT.m: Performs D-IT reconstruction of a compressively sampled signal. The string "denoiser" selects which denoiser to use. 39 | DAMP_oneIter.m: Performs a single iteration of D-AMP. Used to generate state evolution and qqplots. 40 | DIT_oneIter.m: Performs a single iteration of D-IT. Used to generate state evolution and qqplots. 41 | DAMP_SE_Prediction.m: Computes the next predicted state evolution of a D-AMP algorithm. 42 | denoise.m: Denoises an incoming signal. Which denoiser is used depends on the string "denoiser". Currently supports Gaussian filtering, bilateral filtering, NLM, BLS-GSM, BM3D, BM3D-SAPCA, and DnCNN. Add your own denoising algorithms here. 43 | 44 | auxiliary functions: 45 | phi_fp.m: Projects a length n signal to m measurements using a Gaussian random matrix. Can handle very large measurement matrices but is very slow. 46 | phit_fp.m: Projects a length m signal onto the transpose of an mxn Gaussian measurement matrix. Can handle very large measurement matrices but is very slow. 47 | psi_fp.m: Transforms wavelet coefficients into the pixel domain. 48 | psit_fp.m: Transforms pixels to their wavelet coefficients. 49 | PSNR.m: Computes the PSNR of an image x and its estimate x_hat. 50 | LoadNetworkWeights.m: Load the DnCNN denoisers' network weights. 51 | 52 | Other files: 53 | OptimumLambdaSigned.mat: Look up table to set the threshold for AMP. 54 | TestImages: Images are from Javier Portilla's dataset: http://decsai.ugr.es/~javier/denoise/test_images/index.htm 55 | 56 | LDAMP_TensorFlow Contents 57 | --------------------------------------------------------------------------- 58 | Code: 59 | TrainLearnedDAMP.py: Code to train the LDAMP or LDIT networks. Supports layer-by-layer and end-to-end training. 60 | TestLearnedDAMP.py: Code to test the LDAMP or LDIT networks. Supports layer-by-layer end-to-end, and denoiser-by-denoiser trained networks. 61 | TrainDnCNN.py: Code to train a TensorFlow implementation of DnCNN. 62 | TestLearnedDAMP.py: Code to test a TensorFlow implementation of DnCNN. 63 | LearnedDAMP.py: Module that contains the implementations of and support functions for LDAMP, LDIT, and DnCNN. 64 | Training_Script.sh: Bash script to train LDAMP, LDIT, and DnCNN networks. 65 | 66 | Data: 67 | saved_models and TrainingData are both empty directories on github. Their contents can be downloaded from https://rice.box.com/s/n5uz3jxup375d1hg0p6yux3jsl6a4thq. You may run into Box's file size limit. In that case download one directory at a time. 68 | 69 | Important: At present the TensorFlow networks are smaller than the Matlab networks and have been trained with less data. For the best possible LDAMP performance use the 20 layer version of the "DnCNN" denoiser in CS_Imaging_Demo_LDAMP.m 70 | 71 | Packages 72 | --------------------------------------------------------------------------- 73 | This download includes the BM3D, BLS-GSM, NLM, and Rice Wavelet Toolbox packages. 74 | The latest versions of these packages can be found at: 75 | BM3D: http://www.cs.tut.fi/~foi/GCF-BM3D/ 76 | BLS-GSM: http://decsai.ugr.es/~javier/denoise/software/index.htm 77 | NLM: http://www.mathworks.com/matlabcentral/fileexchange/27395-fast-non-local-means-1d--2d-color-and-3d 78 | Rice Wavelet Toolbox (RWT): https://github.com/ricedsp/rwt 79 | 80 | Dependencies 81 | --------------------------------------------------------------------------- 82 | The TensorFlow LDAMP/LDIT demos require that models and training data be downloaded form https://rice.box.com/s/n5uz3jxup375d1hg0p6yux3jsl6a4thq. Place the models and data in D-AMP_Toolbox/LDAMP_TensorFlow/saved_models/ and D-AMP_Toolbox/LDAMP_TensorFlow/TrainingData/ respectively. 83 | The Matlab LDAMP/LDVAMP demos ('DnCNN-AMP') require that you have Matconvnet (http://www.vlfeat.org/matconvnet/) compiled and on your path. 84 | VAMP demos require that you have the latest version of the GAMPmatlab toolbox downloaded via the SVN interface (svn co svn://svn.code.sf.net/p/gampmatlab/code/ GAMPmatlab) and that you have GAMPmatlab/main and GAMPmatlab/VAMP on your path. 85 | 86 | Installation 87 | --------------------------------------------------------------------------- 88 | The LDAMP_TensorFlow code were created and tested using TensorFlow 1.0 and Python 2.7 89 | The Non-local Means and Rice Wavelet Toolbox code need to be compiled before they can be used: 90 | -Compile the NLM utilities by typing "mex image2vectors_double.c", "mex image2vectors_single.c", "mex vectors_nlmeans_double.c", and "mex vectors_nlmeans_single.c" from the Packages/NLM/ directory. 91 | -Compile the Rice Wavelet Toolbox (RWT) by entering "compile" from the Packages/rwt/bin/ directory. Currently the RWT does not compile under Windows 64 bit Matlab. 92 | You will need Matlab's stat toolbox for qqplots. 93 | 94 | 95 | Example 96 | --------------------------------------------------------------------------- 97 | Use BM3D-AMP to recover a signal a 128x128 image x_0 sampled according to y=M*x_0 where M is an m by n Gaussian measurement matrix with unit norm columns: 98 | x_hat=DAMP(y,30,128,128,'BM3D',M); 99 | See CS_Imaging_Demo.m for other examples, including D-VAMP. 100 | 101 | 102 | Modifying Code 103 | --------------------------------------------------------------------------- 104 | Our code was designed to make it as easy as possible to test D-(V)AMP with a new denoiser. 105 | To test another denoiser in the D-(V)AMP algorithm, simply add an additional case statement to denoise.m and place your denoising function there. (Your denoiser will have access to the noisy signal as well as an estimate of the standard deviation of the noise). 106 | Next change the "denoiser" argument in any calls to DAMP, DVAMP, DprGAMP, DIT, DAMP_oneIter, etc., to the name used in your case statement. e.g: x_hat=DAMP(y,30,128,128,'mydenoiser',M); 107 | 108 | Issues 109 | --------------------------------------------------------------------------- 110 | The latest version of the Rice Wavelet Toolbox (RWT) does not compile under Windows 64 bit Matlab. Older versions of the RWT often crash. 111 | At this point in time functions and scripts which use the RWT (CS_1D_Demo and the BLS-GSM denoiser) must be run on a Unix machine. BM3D-AMP and other D-AMP algorithms work with Windows and Unix. 112 | -------------------------------------------------------------------------------- /SCAMPI-MATLAB.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hehengtao/LDAMP_based-Channel-estimation/2b5c135e79482b7c317165732b9a797de5e2bd33/SCAMPI-MATLAB.7z -------------------------------------------------------------------------------- /TestImages.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hehengtao/LDAMP_based-Channel-estimation/2b5c135e79482b7c317165732b9a797de5e2bd33/TestImages.7z -------------------------------------------------------------------------------- /Utils.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hehengtao/LDAMP_based-Channel-estimation/2b5c135e79482b7c317165732b9a797de5e2bd33/Utils.7z -------------------------------------------------------------------------------- /gampmatlab.7z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hehengtao/LDAMP_based-Channel-estimation/2b5c135e79482b7c317165732b9a797de5e2bd33/gampmatlab.7z --------------------------------------------------------------------------------