Code Monkey home page Code Monkey logo

pbl-copbss's Introduction

License: MIT

Novel ICA

Blind Source Separation (BSS) is often used to solve the cocktail party problem, which is an attempt to separate a group of source signals from a set of mixed signals. In general, BSS is used for image, audio, medical EEG, and communication MIMO analysis. However, in the era of 5G, increasing demand for Ultra-Reliable Low-Latency Communications (URLLC) toward these applications becomes urgent, especially acoustic signal processing in IoT networks. Therefore, this project primarily explores BSS algorithms for URLLC and intends to virtualize it to integrate it into 5G networks.

Table of Contents

Overview

This project contains:

  1. FastICA, baseline algorithm from A. Hyvarinen.
  2. CdICA, Component-dependent Independent Component Analysis.
  3. AeICA, Adaptive-extraction Independent Component Analysis.
  4. UfICA, Unified Independent Component Analysis.
  5. MeICA, Multi-level Extraction Independent Component Analysis.

The implementation is based on FastICA in scikit-learn.

Install

This project uses Python. Following packages are required:

  • numpy
  • scipy
  • museval
  • progressbar2
  • ffmpeg

These could be installed by conda install numpy scipy museval progressbar2 ffmpeg, if the environment is managed by Anaconda.

A test data set from Google Audio Set is provided for testing.

Usage

The core analysis algorithm is given in pyfastbss_core.py.

Signal reading and writing, as well as data pre-processing and evaluation, are done by pyfastbss_testbed.py.

Testing setup can be done in pyfastbss_example.py. Test results, including Separation Accuracy and Separation Time, are stored as .csv in the folder test_results/google_dataset. An example of using the algorithm FastICA is given below:

S, A, X = pyfbss_tb.generate_matrix_S_A_X(
                folder_address, duration, source_number, mixing_type="normal", max_min=(1, 0.01), mu_sigma=(0, 1))
eval_type = 'sdr'

pyfbss_tb.timer_start()
hat_S = pyfbss.fastica(X, max_iter=100, tol=1e-04)
time = pyfbss_tb.timer_value()
Eval_dB = pyfbss_tb.bss_evaluation(S, hat_S, eval_type)
print('FastICA: ', Eval_dB, '; ', time)

Test data set is in the fold google_dataset. More data set can be downloaded by using the tool Youtube Downloader in youtube_downloader

Citation

If you like our repository, please cite our papers.

@INPROCEEDINGS{Wu2006:Component,
AUTHOR="Huanzhuo Wu and Yunbin Shen and Jiajing Zhang and Ievgenii Anatolijovuch Tsokalo and Hani Salah and Frank H.P. Fitzek",
TITLE="{Component-Dependent} Independent Component Analysis for {Time-Sensitive} Applications",
BOOKTITLE="2020 IEEE International Conference on Communications (ICC): SAC Internet of Things Track (IEEE ICC'20 - SAC-06 IoT Track)",
ADDRESS="Dublin, Ireland",
DAYS=6,
MONTH=jun,
YEAR=2020
}
@INPROCEEDINGS{Wu2012:Adaptive,
AUTHOR="Huanzhuo Wu and Yunbin Shen and Jiajing Zhang and Hani Salah and Ievgenii Anatolijovuch Tsokalo and Frank H.P. Fitzek",
TITLE="Adaptive {Extraction-Based} Independent Component Analysis for {Time-Sensitive} Applications",
BOOKTITLE="2020 IEEE Global Communications Conference: Selected Areas in Communications: Internet of Things and Smart Connected Communities (Globecom2020 SAC IoTSCC)",
ADDRESS="Taipei, Taiwan",
DAYS=6,
MONTH=dec,
YEAR=2020,
KEYWORDS="Blind source separation; Independent component analysis; Time-sensitive application; IoT"
}

About Us

We are researchers at the Deutsche Telekom Chair of Communication Networks (ComNets) at TU Dresden, Germany. Our focus is on in-network computing.

License

This project is licensed under the MIT license.

Todo

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.