Coder Social home page Coder Social logo

forssil / deepfilter Goto Github PK

View Code? Open in Web Editor NEW

This project forked from fperdigon/deepfilter

0.0 0.0 0.0 837 KB

This repository contains the codes for DeepFilter. This model removes the baseline wander from ECG signals

License: MIT License

Shell 1.74% Python 96.31% PowerShell 1.95%

deepfilter's Introduction

DeepFilter

For a more theoretical information please visit our paper in the journal Biomedical Signal and Control: https://www.sciencedirect.com/science/article/abs/pii/S1746809421005899

This repository contains the codes for DeepFilter a deep learning based Base line wander removal tool. This repo follows the last version of the paper where some changes on the experiment scheme were requested by the reviewers.

Since for us reproducibility is KEY on research, and we understand that some folks will find and read only the Arxiv version, we have decided to create a separate repository https://github.com/fperdigon/DeepFilter_as_in_Arxiv that follows the experiment scheme described in the preprint Arxiv paper https://arxiv.org/pdf/2101.03423.pdf

This repository also contains other classical and deeplearning filters solutions implemented for comparison purposes.

The deep learning models were implemented using Keras/Tensorflow framework.

Introduction

According to the World Health Organization, around 36% of the annual deaths are associated with cardiovascular diseases and 90% of heart attacks are preventable. Electrocardiogram signal analysis in ambulatory electrocardiography, during an exercise stress test, and in resting conditions allows cardiovascular disease diagnosis. However, during the acquisition, there is a variety of noises that may damage the signal quality thereby compromising their diagnostic potential. The baseline wander is one of the most undesirable noises.

In this work, we propose a novel algorithm for BLW noise filtering using deep learning techniques. The model performance was validated using the QT Database and the MIT-BIH Noise Stress Test Database from Physionet. We implement an Inception inspired multibranch model that by laveraging the use og multi path modules and dilated convolutions is capable of filtering BLW while preserving ECG signal morphology and been computational efficient.

The following figure shows the multipath module using dilated convolutions. Multipath module

The following figure shows the overall model architecture. Model Architecture

In addition, we compared our approach against state-of-the-art methods using traditional filtering procedures as well as deep learning techniques. This other methods were implemented by us in python

The proposed approach yields the best results on four similarity metrics: the sum of squared distance, maximum absolute square, percentage of root distance, and cosine similarity.

Results

The following table present the quantitative results of DeepFilter Net compared on the same test set with other SOTA methods. Results table

Qualitative results

The figure shows a portion of sele0106 ECG signal. Original ECG signal

Original ECG + BLW noise from the NSTDB. Original ECG signal + BLW noise

The blue line is the ECG filtered using our approach.Metric values are also included. ECG filtered using DeepFilter

The brown signal is the ECG recovered using the IIR filter, this image was included for visual comparison purposes. Metric values are also included. ECG filtered using IIR classical filter

Reproducibility

Download this git repository and run local

The firts step is to clone this repository

git clone https://github.com/fperdigon/DeepFilter

Then lets prepare the dataset.

If you are using Windows open Powershell using the cd command place yourself on inside the repository folder, then execute the download_data.ps1 Powershell script using the command:

powershell -ExecutionPolicy Bypass -File '.\download_data.ps1'

If you are using a Unix-like system such as Linux, MacOS, FreeBSD, etc open a console in the path of DeepFilter code, then execute the download_data.sh bash file.

bash ./download_data.sh

The next step is to create the Conda environment using the provided environment.yml file. For this step you need the conda python package manage installed. In case you don't have it installed we recommend installing Miniconda to avoid installing unnecessary Python packages.

To create the conda environment run the following command:

conda env create -f environment.yaml

Then activate the Python environment you just created with the following command:

conda activate DeepFilter

Finally start the training and the experiments by running the command:

python DeepFilter_main.py

This python script will train all the models, execute the experiments calculate the metrics and plot the result table and some figures.

If you have a Nvidia CUDA capable device for GPU acceleration this code will automatically use it (faster). Otherwise the training will be done in CPU (slower).

Citing DeepFilter

When citing DeepFilter please use this BibTeX entry:

@article{romero2021deepfilter,
title={DeepFilter: an ECG baseline wander removal filter using deep learning techniques},
author={Romero, Francisco P and Pi{\~n}ol, David C and V{\'a}zquez-Seisdedos, Carlos R},
journal={Biomedical Signal Processing and Control},
volume={70},
pages={102992},
year={2021},
publisher={Elsevier}
}

License

The MIT License (MIT)

Copyright (c) 2021 Francisco Perdigon Romero, David Castro Piñol

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

deepfilter's People

Contributors

fperdigon avatar dacapi91 avatar

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.