使用Python+TensorFlow2構建基於卷積神經網絡(CNN)的ECG心電信號識別分類(一)


本篇博客以及之后的一個系列,我將記錄下我是如何從一個沒學過信號處理,不懂什么是深度學習,沒接觸過心電信號的小白,一步步做出基於CNN的心電信號識別分類的過程。網絡上關於ECG方面的相關博客內容不多,可以直接運行的相關代碼也寥寥無幾,這給初學者造成了很大的困難。希望通過自己的總結和整理能夠幫助自己更好的理解這些知識和技術,也能夠為同為新接觸這方面研究的小伙伴們一些入門的幫助。本篇博客的相關代碼由Python3寫成,使用了TensorFlow2的框架,已經開源到了我的GitHub上,地址如下https://github.com/lxy764139720/mit-bih_ecg_recognition。這里還有一個其他博主使用MATLAB進行研究的相關博客,地址如下https://blog.csdn.net/qq_15746879/article/details/80329711

心電信號簡介

在一個心跳周期中,心臟受到外界刺激后會有規律的持續收縮並產生電激動,之后刺激消失后又會舒張,在這個過程中,會有大量的心肌細胞產生有規律的電位變化,通過人體表面的電極可以記錄到電位變化的曲線,曲線經過放大也就是臨床上的心電圖,即心電信號(ECG)。心電信號是一種微弱生物電信號,有以下特征:

(1)微弱性:心電信號的幅值在10uV-5mⅤ范圍,是低幅值信號。

(2)不穩定性:心電信號在不斷地變化且容易受到環境干擾,覆蓋大量噪聲,導致心電信號的很多有價值信息被淹沒,很難檢測,且不同個體在不同時刻下的心電圖都是不同的,即使同一個體在不同生理狀態下波形也可能不同。

(3)低頻性:心電信號的頻率范圍主要在0.05-100Hz內,主要能量集中分布在0.5-40Hz。

一個完整的心拍主要由P波、QRS波群、T波、PR波段以及ST波段構成,不同波段分別反映了興奮傳導至心臟各部位的具體變化情況。PR間期和QT間期可以傳遞心電信號非常重要的生理信息,是心電信號中非常重要的特征。一個完整的心電波形如下圖所示:

單個心拍示意圖

常見心律失常疾病

心律失常是十分常見的心血管疾病,主要表現為心臟搏動頻率或節律的異常。心律失常若得不到及時治療,可發作導致人死亡。正常心率記為(Normal,N),常見的心律失常疾病主要包括:房性期前收縮( Premature Atrial Contraction,A)、室性期前收縮( Premature Ventricular Contraction,V)、左束支傳導阻滯( Left bundle branch block,L)和右束支傳導阻滯(Right Bundle Branch Block,R)等。

心電信號自動分類識別算法流程

心電信號自動分類識別算法流程圖

由於心電信號通常十分微弱,采集過程中容易受到各種因素的干擾,心電信號的噪聲種類繁多,所以心電圖分類識別的首要步驟就是對信號進行預處理。國內外研究學者針對去噪方面做了很多研究,主要的去噪手段有經典的數字濾波器和基於小波變換的閾值去噪等。經典的數字濾波器根據頻率范圍的不同對噪聲進行去噪:對於基線漂移使用高通濾波器去噪、對於肌電干擾使用低通濾波器去噪、對於工頻干擾使用帶通濾波器去噪。近年來,小波變換技術的快速發展催生出了一系列基於小波閾值去噪技術。該類技術是根據信號和噪聲的頻率在不同尺度上的分布,先對信號進行小波變換,再根據閾值對各層小波系數進行處理,最后重構信號實現去噪。小波閾值去噪技術對於非平穩信號具有優秀的處理效果,與傳統處理方法相比有顯著的優越性。

在對心電信號進行預處理和特征提取的基礎之上,使用深度學習對心電信號進行自動分類識別。深度學習的研究與神經網絡有着密不可分的聯系。2006年,Hinton提出了深度置信網絡,成為了深度學習領域的一個里程碑。如今在大數據、計算機算力大幅度增加的背景下,深度學習已經在圖像處理、語音識別和NLP等眾多領域的研究中取得了巨大進展。而卷積神經網絡模型經歷了從最早的LeNet模型到現在的GoogleNet、ResNet等不斷的演進,識別率已經十分優秀。在研究心電分類算法時,利用深度學習在大量數據處理方面表現出的優勢,使得分類效果有着顯著的提升。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM