Source code for estimating MIMO channels using score-based (diffusion) models. See citations for paper references.
Generic flow:
- Use
matlab/main.m
to generate training, validation and test channels. Alternatively, you can download a set of pre-generated train, validation and test channels (seeds 1234, 4321, and 9999 respectively) CDL-D channels from here: https://www.dropbox.com/sh/rcfyde3ccaf3jqd/AABWo7-2DUAhv4EdtWwD-J9Ga?dl=0. These were generated using the Matlab code in this repository. Place these channels in a newly createddata
directory. - Use
train.py
to train a deep score-based model for channel estimation with the default parameters used in the paper. - Use
hyperparam_tuning.py
to findbeta
andN
, exactly like in the paper.
3.1. The script will contain a saved variable oracle_log
, which contains the NMSE with respect to the ground truth channels, for all the hyper-parameters, noise levels, and each invididual sample.
3.2. Averaging the error across all samples (axis=-1)
and using argmax
over the corresponding axes will return the best hyper-parameters for each invididual SNR point (in a loop, assuming known SNR, or also averaged across SNR in the blind setting).
- Use
inference.py
to perform inference with the hyper-parameters found before. - (Optional, incomplete) Use
train_wgan.py
to train a WGAN model. - Use
matlab/test_end_to_end.m
withtarget_channels = 'ours_known'
to simulate the end-to-end setup used in the paper: 4 streams of QPSK over 16 x 64 CDL-C channels. Make sure thattarget_file
was generated byinference.py
.
The data used in all experiments can be found here: https://utexas.box.com/s/f7g7yqdw5w0fea0b59aym3xsvbvw1uch. We used train_seed = 1234
and test_seed = 4321
.
Pretrained models on CDL-{A, B, C, D} and Mixed can be found here: https://utexas.box.com/s/m58udx6h0glwxua88zgdwrff87jvy3qw.
Full credits for the ncsnv2 repository go to: https://github.com/ermongroup/ncsnv2
Please include the following citation when using or referencing this codebase:
@ARTICLE{9957135,
author={Arvinte, Marius and Tamir, Jonathan I.},
journal={IEEE Transactions on Wireless Communications},
title={MIMO Channel Estimation using Score-Based Generative Models},
year={2022},
volume={},
number={},
pages={1-1},
doi={10.1109/TWC.2022.3220784}}
Other related publications you may be interested in:
@inproceedings{arvinte2022score1,
title={Score-Based Generative Models for Wireless Channel Modeling and Estimation},
author={Arvinte, Marius and Tamir, Jonathan},
booktitle={ICLR Workshop on Deep Generative Models for Highly Structured Data},
year={2022}
}
@inproceedings{arvinte2022score2,
title={Score-Based Generative Models for Robust Channel Estimation},
author={Arvinte, Marius and Tamir, Jonathan I},
booktitle={2022 IEEE Wireless Communications and Networking Conference (WCNC)},
pages={453--458},
year={2022},
organization={IEEE}
}