Code Monkey home page Code Monkey logo

blind-fec-extractor's Introduction

Blind FEC Decoder

image

Problem Statement

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.

Description

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.

This project consists of three parts

  • 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/]

This application is

  • 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

Different components

Data Generation

  • 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
  • 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.

FEC Scheme Classification

  • 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.

Dependencies

  • Data Generation
    • Sionna for applying encoding schemes
    • CommPy for simulating noise channel and modulation
    • Pandas for manipulating and creating CSV datasets
    • NumPy for performing vector and linear algebra operations
  • 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.