This is the project our team "Daemons" made during the Grand Finale of Smart India Hackathon 2023.
We were asked to identify and extract Forward Error Correction(FEC) schemes from unknown demodulated signals.
FEC is an error correction mechanism with certain trade off in Communication. This is a very critical parameter in order to extract output from a demodulated data. Identification and extraction of Forward Error Correction schemes of unknown satellite signals using MATLAB/Python is desired for further processing. The objective of the problem is to develop a tool / mechanism for detection / extraction of Forward Error Correction (FEC) schemes of unknown demodulated signals. The developer may use open source signal for design of their tool. Evaluation shall be based on correct detect / extraction of FEC for given signal.
- A lightweight and fast GUI written with python and Qt frameworks for easy implementation in various devices such as embedded devices or low-resource machines. [see root folder]
- A Jupyter Notebook is provided to demostrate and visualise the waveform after the channel coding is applied on the generated string. [see dataVisulationApplication/]
- A minimal and easy to implement streaming data script written in python to simulate real world signal interception. [see StreamingDataScript/]
- 98% accurate in case of BPSK modulated signals(max. string length 2048)
- [WIP] 71% accurate in case of QPSK modulated signals(max. string length 2048)
- [WIP] 63% accurate in case of 8-PSK modulated signals(max. string length 2048)
- Optimized for embedded devices
- Supports file as well as manual text input
- Supports real time detection on stream of data
- 5 types of FEC encoding techniques with 3 different types of modulation techniques are used. Namely,
- FEC schemes:
- Turbo code encoding
- Low Density Parity Check encoding
- Convolutional code encoding
- Bose–Chaudhuri–Hocquenghem encoding
- Turbo Product code encoding
- Modulation techniques:
- BPSK modulation
- QPSK modulation
- 8-PSK modulation
- FEC schemes:
- Usage of variable code rates to make the data as close to the real world demodulated signals as possible.
- average SNR value 10 is used for generating data.
- usage of improved Recurrent Neural Network model for classifying the aforementioned 5 FEC coding techniques.
- trained on 4Lacs of data varying in length from 1024 to 2048.
- trained to 2 x T4 GPUs parallely.
- both the trained model and their weights are saved seperately for fast real-time classification
- easily customisable backend as the model weights are already saved.
- Data Generation
- Classification
- Numpy for performing vector and linear algebra operations
- Pandas for reading and manipulating datasets
- Matplotlib for plotting graphs based on datas
- Tensorflow for creating the RNN model used for classification
- Keras for creating the layers and for the model save/load operations