All Projects → gram-ai → Radio Transformer Networks

gram-ai / Radio Transformer Networks

A PyTorch implementation of Radio Transformer Networks from the paper "An Introduction to Deep Learning for the Physical Layer".

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Radio Transformer Networks

Pyo
Python DSP module
Stars: ✭ 904 (+700%)
Mutual labels:  signal-processing
Eulerian Remote Heartrate Detection
Remote heart rate detection through Eulerian magnification of face videos
Stars: ✭ 48 (-57.52%)
Mutual labels:  signal-processing
Sema
Sema – Live Code Language Design Playground
Stars: ✭ 80 (-29.2%)
Mutual labels:  signal-processing
Sidecar
Some old C++ code I developed while at MIT. Could be useful if you have an old radar lying around.
Stars: ✭ 20 (-82.3%)
Mutual labels:  signal-processing
Strugatzki
Algorithms for matching audio file similarities. Mirror of https://git.iem.at/sciss/Strugatzki
Stars: ✭ 38 (-66.37%)
Mutual labels:  signal-processing
Savitzky Golay
Computes the Savitzky-Golay Filter coefficients
Stars: ✭ 60 (-46.9%)
Mutual labels:  signal-processing
Gnss Sdr
GNSS-SDR, an open-source software-defined GNSS receiver
Stars: ✭ 801 (+608.85%)
Mutual labels:  signal-processing
Mne Cpp
MNE-CPP: A Framework for Electrophysiology
Stars: ✭ 104 (-7.96%)
Mutual labels:  signal-processing
8d Audio
Some dsp to make songs "8D"
Stars: ✭ 43 (-61.95%)
Mutual labels:  signal-processing
Tensorflow Signal Processing
doing audio digital signal processing in tensorflow to try to recreate digital audio effects
Stars: ✭ 76 (-32.74%)
Mutual labels:  signal-processing
Pysiology
A Python package for physyological's signals processing
Stars: ✭ 32 (-71.68%)
Mutual labels:  signal-processing
Alignmentduration
Lyrics-to-audio-alignement system. Based on Machine Learning Algorithms: Hidden Markov Models with Viterbi forced alignment. The alignment is explicitly aware of durations of musical notes. The phonetic model are classified with MLP Deep Neural Network.
Stars: ✭ 36 (-68.14%)
Mutual labels:  signal-processing
Aca Code
Matlab scripts accompanying the book "An Introduction to Audio Content Analysis" (www.AudioContentAnalysis.org)
Stars: ✭ 67 (-40.71%)
Mutual labels:  signal-processing
Iqtool
A python application for generating and viewing quadrature IQ binary files. Intended for use with software defined radios and lab test equipment.
Stars: ✭ 25 (-77.88%)
Mutual labels:  signal-processing
Msnoise
A Python Package for Monitoring Seismic Velocity Changes using Ambient Seismic Noise | http://www.msnoise.org
Stars: ✭ 94 (-16.81%)
Mutual labels:  signal-processing
Euterpe
Real-time Audio-to-audio Karaoke Generation System for Monaural Music
Stars: ✭ 19 (-83.19%)
Mutual labels:  signal-processing
Pywt
PyWavelets - Wavelet Transforms in Python
Stars: ✭ 1,098 (+871.68%)
Mutual labels:  signal-processing
Yasa
YASA (Yet Another Spindle Algorithm): a Python package to analyze polysomnographic sleep recordings.
Stars: ✭ 109 (-3.54%)
Mutual labels:  signal-processing
Adblockradio
An adblocker for live radio streams and podcasts. Machine learning meets Shazam.
Stars: ✭ 1,407 (+1145.13%)
Mutual labels:  signal-processing
Wits
A Node.js library that reads your mind with Emotiv EPOC EEG headset
Stars: ✭ 73 (-35.4%)
Mutual labels:  signal-processing

An Introduction to Deep Learning for the Physical Layer

An usable PyTorch implementation of the noisy autoencoder infrastructure in the paper "An Introduction to Deep Learning for the Physical Layer" by Kenta Iwasaki on behalf of Gram.AI.

Overall a fun experiment for constructing a communications system for the physical layer with transmitters/receivers in which the transmitter efficiently encodes a signal in a way such that the receiver can still, with minimal error, decode this encoded signal despite being inflicted with noise in amidst transmission.

The signal dimension for the encoded message is set to be 4, with the compressed signal representation's channel size being 2 (log_2(signal_dim)) to maximize information/bit as a basis to the principles of shannon entropy.

The signal-to-noise ratio simulated in amidst training is 7dbW. That may be changed accordingly to your preferences.

Checks for the bit error rate have been ignored for the decoder, and instead the reconstruction of the input based on categorical cross-entropy is used to validate model generalization and performance.

Training for the model is done using TorchNet.

Description

We present and discuss several novel applications of deep learning (DL) for the physical layer. By interpreting a communications system as an autoencoder, we develop a fundamental new way to think about communications system design as an end-to-end reconstruction task that seeks to jointly optimize transmitter and receiver components in a single process. We show how this idea can be extended to networks of multiple transmitters and receivers and present the concept of radio transformer networks (RTNs) as a means to incorporate expert domain knowledge in the machine learning (ML) model. Lastly, we demonstrate the application of convolutional neural networks (CNNs) on raw IQ samples for modulation classification which achieves competitive accuracy with respect to traditional schemes relying on expert features. The paper is concluded with a discussion of open challenges and areas for future investigation.

Paper written by Tim O'Shea and Jakob Hoydis. For more information, please check out the paper here.

Requirements

  • Python 3
  • PyTorch
  • TorchNet
  • TQDM

Usage

Step 1 Start training.

$ python3 radio_transformer_networks.py

Step 2 Call model.decode_signal(x) on any noisy data on the transmitter's end.

Benchmarks

Achieves 100% within a span of ~30 epochs.

Default PyTorch Adam optimizer hyperparameters were used with no learning rate scheduling. Epochs with batch size of 256 takes half a second on a Razer Blade w/ GTX 1050.

TODO

  • Signal modulation classification using convolutional neural networks as outlined on the paper.

Contact/Support

Gram.AI is currently heavily developing a wide number of AI models to be either open-sourced or released for free to the community, hence why we cannot guarantee complete support for this work.

If any issues come up with the usage of this implementation however, or if you would like to contribute in any way, please feel free to send an e-mail to [email protected] or open a new GitHub issue on this repository.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].