https://github.com/benediktfesl/diffusion_channel_est
Source code of the Paper "Diffusion-Based Generative Prior for Low-Complexity MIMO Channel Estimation"
https://github.com/benediktfesl/diffusion_channel_est
channel-estimation diffusion-models generative-model machine-learning mimo
Last synced: 3 months ago
JSON representation
Source code of the Paper "Diffusion-Based Generative Prior for Low-Complexity MIMO Channel Estimation"
- Host: GitHub
- URL: https://github.com/benediktfesl/diffusion_channel_est
- Owner: benediktfesl
- License: bsd-3-clause
- Created: 2024-02-07T10:14:27.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-03-21T12:46:42.000Z (about 1 year ago)
- Last Synced: 2024-03-21T13:52:37.860Z (about 1 year ago)
- Topics: channel-estimation, diffusion-models, generative-model, machine-learning, mimo
- Language: Python
- Homepage:
- Size: 1.24 MB
- Stars: 3
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Diffusion-Based Channel Estimation
Source code of the paper
>B. Fesl, M. Baur, F. Strasser, M. Joham, and W. Utschick,
>"Diffusion-Based Generative Prior for Low-Complexity MIMO Channel Estimation," in IEEE Wireless Communications Letters, 2024.
Link to the paper: https://ieeexplore.ieee.org/document/10705115## Abstract
This letter proposes a novel channel estimator based on diffusion models (DMs), one of the currently top-rated generative models, with provable convergence to the mean square error (MSE)-optimal estimator. A lightweight convolutional neural network (CNN) with positional embedding of the signal-to-noise ratio (SNR) information is designed to learn the channel distribution in the sparse angular domain. Combined
with an estimation strategy that avoids stochastic resampling and truncates reverse diffusion steps that account for lower SNR than the given pilot observation, the resulting DM estimator unifies low complexity and memory overhead. Numerical results exhibit
better performance than state-of-the-art estimators.## Requirements
The code is tested with `Python 3.10` and `Pytorch 2.1.1`. For further details, see `environment.yml`.## Instructions
1. Load channel data from https://syncandshare.lrz.de/getlink/fi93y1AnwmsvHrAGNqq5zX/ (password: Diffusion2024) and move it into folder `bin`.2. To evaluate the pre-trained models used for the plots in the paper, run
```
python load_and_eval_dm.py -d cuda:0
```3. To train a DM from scatch and evaluate the performance afterward, run
```
python diff_cnn.py -d cuda:0
```4. To evaluate the baseline estimators, run
```
python baselines.py
```The code is based on the implementation of https://github.com/benediktfesl/Diffusion_MSE.