data-augmentations-receivers

"Consistency is the playground of dull minds."

--Yuval Noah Harari, Sapiens: A Brief History of Humankind.

Data Augmentation for Deep Receivers

Python repository for the extended paper "Data Augmentation for Deep Receivers".

Please cite our paper, if the code is used for publishing research.

A YouTube tutorial is available at this link.

Table of Contents

Table of contents generated with markdown-toc

Introduction

This repository implements the proposed augmentations scheme for deep receivers. Our proposed novel method incorporates (1) spatial and temporal clustering (2) takes into account classes diversity and (3) keeps low complexity, tailored for online communication scenarios. There exist three augmentations: (i) geomtric augmentation, (ii) constellation-conserving projection and (iii) translation augmentations. We explain on the different directories and subdirectories below.

Folders Structure

python_code

The python simulations of the simplified communication chain: symbols generation, channel transmission and detection.

augmentations

The proposed augmentations scheme, and the regular training/extended pilots baselines. See the paper for more details on these augmentation methods.

channel

Includes all relevant channel functions and classes. The class in "channel_dataset.py" implements the main class for aggregating pairs of (transmitted,received) samples. In "channel.py", the SISO and MIMO channels are implemented. "channel_estimation.py" is for the calculation of the h values. Lastly, the channel BPSK/QPSK modulators lies in "channel_modulator.py".

plotters

Plotting of the BER versus SNR / pilots size. Plotting all the relevant Figures for the paper, including the ablation study.

utils

Extra utils for saving and loading pkls; calculating the accuracy over FER and BER; and transitioning over the trellis.

config

Controls all parameters and hyperparameters.

resources

Keeps the channel coefficients vectors (4 taps, each with 300 blocks) and configs used to run the different setups.

dir_definitions

Definitions of relative directories.

Execution

To execute the code, first download and install Git, Anaconda and PyCharm.

Then install the environment, follow the installation setup below.

At last, open PyCharm in the root directory. You may run either the trainers or one of the plotters.

This code was simulated with GeForce RTX 3060 with CUDA 12.

Environment Installation

  1. Open git bash and cd to a working directory of you choice.

  2. Clone this repository to your local machine.

  3. Open Anaconda prompt and navigate to the cloned repository.

  4. Run the command "conda env create -f environment.yml". This should install the required python environment.

  5. Open the cloned directory using PyCharm.

  6. After the project has been opened in PyCharm, go to settings, File -> Settings... (or CTRL ALT S)

  7. In the opened window open the tab Project -> Project Interpreter

  8. In the new window, click on the cog icon and then on Add...

  9. In the add python interpreter window, click on the Conda Environment tab

  10. Select Existing environment and navigate to where the python.exe executable of the deep_ensemble environment is installed under the interpreter setting

  • For windows its usually found at C:\users<username>\anaconda3\envs\environment\python.exe)

  • For linux its usually found at /home//anaconda3

  1. Click OK

  2. Done!