心電信號采集及心電圖分類識別的方法研究
心電圖(ECG,Electrocardiogram)是人體心臟活動的視覺時(shí)間序列,是醫(yī)生診斷心臟病的重要依據(jù)。
基于傳統(tǒng)心電圖分類的診療技術(shù)基本依靠人力完成。專家以自己多年積累的經(jīng)驗(yàn)和大量心臟領(lǐng)域的知識,得到準(zhǔn)確的診斷結(jié)果。
然而,在心臟疾病高發(fā)的當(dāng)今,每天都有大量的患者去做心電圖,完全依靠人力去診斷,效率十分低下,而且也可能出現(xiàn)誤診斷,會對患者和醫(yī)院造成不好的影響[1]。 為了解決上述問題,基于心電圖自動分類診斷技術(shù)開始出現(xiàn)。
本文在心電圖采信號數(shù)據(jù)采集和傳輸方面,設(shè)計(jì)了基于 STM32 單片機(jī)的硬件心電數(shù)據(jù)采集系統(tǒng),采用 BMD101 芯片采集原始心電信號數(shù)據(jù),并用藍(lán)牙和 WiFi 將數(shù)據(jù)發(fā)送到 PC 端上位機(jī)和安卓手機(jī) APP 上進(jìn)行分類處理。
1 ?心電信號分類識別方法的研究現(xiàn)狀
目前,有兩種主要的心電圖分類研究形式,基于波形形狀的分類方法和基于波形特征的分類方法[2]。
基于波形形狀分類方法中,需要提取特征波形,然后使用醫(yī)學(xué)分類規(guī)則對其進(jìn)行判斷。Philip Deehazal 等人利用心電圖的形態(tài)特征和間期等 12 個特征進(jìn)行訓(xùn)練和測試[3],將心拍分為 5 類,準(zhǔn)確率達(dá)到 0.81。李坤陽等人結(jié)合小波變換和數(shù)學(xué)形態(tài)學(xué),通過檢測心電圖的 QRS 波的特征點(diǎn)得到 QRS 波寬和 RR 間期等參數(shù),再結(jié)合專家的臨床經(jīng)驗(yàn),將心拍分為 4 類,準(zhǔn)確率達(dá)到 0.94[4]?;诓ㄐ涡螒B(tài)的分類方法對心電圖的質(zhì)量效果要求較高,抗干擾能力較差,對各波形的特征點(diǎn)的識別精確度要求較高,不適合處理動態(tài)心電圖。所以,采用此類方法提取到的特征向量不夠充分,導(dǎo)致分類診斷類型比較少,診斷準(zhǔn)確率也比較低。
基于波形特征的分類方法是目前應(yīng)用最廣泛的一種心電圖分類識別方法,劉世雄利用小波分析定位 QRS 波群的位置,接著分別從 QRS 波群中提取 26 個特征向量,最終采用模糊聚類方法對心電圖進(jìn)行分類[5]。駱德漢等人采用基于多階前饋的人工神經(jīng)網(wǎng)絡(luò)對心電圖進(jìn)行了 6 分類[6]。
季虎基于多重判別和主成分分析提取特征,最后利用支持向量機(jī)進(jìn)行分類[7]。Yusn 等人利用獨(dú)立分量分析在時(shí)域上提取心電圖特征,對心電圖直接處理,最后利用神經(jīng)網(wǎng)絡(luò)對心電圖進(jìn)行 6 分類[8],取得了較好的結(jié)果。
Osowski 等人設(shè)計(jì)出一個將模糊自組織層和多層感知器進(jìn)行級聯(lián)的分類器,對心電信號實(shí)現(xiàn)了 7 分類[9],分類正確率達(dá)到了 96%。Owis 等人在心電信號的傅立葉變換域上分析提取特征向量,采用近鄰法分類,最后實(shí)驗(yàn)得到該方法對 5 種心臟狀況類型取得了 100% 的識別率,但對除了這 5 種類型其他的心臟狀況識別率一般。
2 硬件電路的設(shè)計(jì)
2.1 系統(tǒng)介紹
該心電采集監(jiān)測系統(tǒng)主要有四個模塊組成:心電數(shù)據(jù)采集模塊,無線傳輸模塊,Android 端 APP 數(shù)據(jù)接收處理模塊和 PC 端上位機(jī)數(shù)據(jù)接收處理模塊。
當(dāng)用戶出現(xiàn)心臟不適后,可以立刻使用該采集設(shè)備去采集心電信號,采集到的數(shù)據(jù)通過藍(lán)牙傳輸至 Android 手機(jī)的 APP,該 APP 可以實(shí)時(shí)顯示心電波形和心跳速率,并能夠定位到該用戶的地理位置,并將數(shù)據(jù)上傳到服務(wù)器。
2.2 采集模塊
? ? 2.2.1 心電采集芯片
BMD101 芯片具有先進(jìn)的模擬前端電路和靈活強(qiáng)大的數(shù)字信號處理結(jié)構(gòu)。它可以采集從 μV 到 mV 的生物信號,然后經(jīng)過 Neurosky 的專利算法處理。BMD101 的核心是一個功能強(qiáng)大的系統(tǒng)管理單元。它負(fù)責(zé)整體系統(tǒng)配置、運(yùn)行管理、內(nèi)外通信、專有算法計(jì)算和電源管理。BMD101 還配有固化 DSP 數(shù)字信號處理模塊來加速對系統(tǒng)管理單元監(jiān)控下的各種數(shù)字濾波的計(jì)算。
? 2.2.2 實(shí)物展示
圖 1 心電采集硬件系統(tǒng)實(shí)物圖
3 分類算法及系統(tǒng)軟件設(shè)計(jì)
本文采用開源深度學(xué)習(xí)框架 Faster R-CNN 進(jìn)行目標(biāo)檢測,該框架下對于特定網(wǎng)絡(luò)模型的訓(xùn)練,對GPU 的性能有一定的要求。對于 ZF net 網(wǎng)絡(luò)模型和 VGG-16 net 網(wǎng)絡(luò),分別要求 GPU 的顯存至少是 3 GB 和 8 GB。
3.1 數(shù)據(jù)集構(gòu)建
數(shù)據(jù)集的構(gòu)建包括訓(xùn)練集的構(gòu)建和測試集的構(gòu)建。其中,訓(xùn)練集的構(gòu)建包括:提取的 44 組人體心電數(shù)據(jù)、R 波檢測、節(jié)拍圖截取、節(jié)拍歸類、平移旋轉(zhuǎn)擴(kuò)充節(jié)拍圖等操作,最終將擴(kuò)充后的節(jié)拍圖集作為實(shí)驗(yàn)訓(xùn)練集。測試集的構(gòu)建包括采集人體心電數(shù)據(jù)、預(yù)處理操作、R 波檢測和節(jié)拍圖的截圖等操作,最終獲取的未標(biāo)記的節(jié)拍圖集作為測試集。
3.1.1 心電圖R波檢測
小波變換技術(shù)在提升 Q 波檢測的準(zhǔn)確性方面表現(xiàn)出了良好的性能。根據(jù)小波變換理論,R 波峰與模最大模數(shù)最小值的零點(diǎn)具有穩(wěn)定的位移關(guān)系。 因此,使用小波變換來檢測 QRS 波是通過定位 R 波的方法的最大值的模數(shù)來檢測 R 波,從 R 峰值位置開始 選擇較小的刻度,向前和向后搜索 QRS 波開始和結(jié)束,以避免 QRS 波的寬度失真。對于干擾嚴(yán)重或非典型 R 波的情況,需提煉其模極大值點(diǎn),以降低噪聲對模極值點(diǎn)的干擾。
本實(shí)驗(yàn)中,通過離散小波變換方法檢測心電信號的 R 波。首先檢測模極大值,接著檢測零點(diǎn),即可以檢測并給出到 QRS 波的位置。然后引入自適應(yīng)噪聲閾值,通過閾值判斷檢測到的尖峰位置是 R 波還是毛刺。圖 2 展示了 R 波點(diǎn)的在心電信號的位置。
3.1.2 心電節(jié)拍圖提取
本文在心電節(jié)拍圖提取上采用滑動窗口搜索方法,如圖 3 所示,針對前一節(jié)內(nèi)容中小波變換檢測出的每個 R 波點(diǎn),記錄下當(dāng)前 R 點(diǎn)坐標(biāo),以當(dāng)前 R 點(diǎn)為參考向左搜索 250 ms,如果位置點(diǎn)存在,則記錄下此左端點(diǎn)坐標(biāo),否則停止搜索;再以當(dāng)前 R 點(diǎn)為參考向右搜索 250 ms,如果位置點(diǎn)存在,則記錄下此右端點(diǎn)坐標(biāo),否則停止搜索。以左右端點(diǎn)為邊界截取圖形,即作為實(shí)驗(yàn)中深度學(xué)習(xí)網(wǎng)絡(luò)中的樣本輸入。
圖 4 所示為上述方法提取的 5 種類別樣本圖示例。從圖中可以看出不同類別的心電節(jié)拍形狀存在較大差異,有利于提升分類模型的性能。
3.2 訓(xùn)練分類模型
深度學(xué)習(xí)的訓(xùn)練過程:在監(jiān)督學(xué)習(xí)中,將帶有標(biāo)簽的數(shù)據(jù)集按照一定的策略輸入到深度網(wǎng)絡(luò)模型中,在成千上萬次迭代學(xué)習(xí)過程中,該模型不斷調(diào)整其內(nèi)部參數(shù),最終成為一個具有有效分類作用的模型。
在本文中,以 xml 文件保存的訓(xùn)練集中,每一張具體的圖像作為自變量 xi,圖像中的目標(biāo)包圍框坐標(biāo) [x1,y1,x2,y2] 以及目標(biāo)分類 Label(Label∈{“N”,“S”,“V”,“F”})作為因變量 yi。類似于二維空間中大量的點(diǎn)可以通過線性回歸擬合出一條直線,深度學(xué)習(xí)中大量的(xi,yi)可以擬合出一個非常復(fù)雜的函數(shù),該函數(shù)由其參數(shù)確定。
所以,深度學(xué)習(xí)網(wǎng)絡(luò)模型的本質(zhì)是訓(xùn)練出一個包含大量參數(shù)的非常復(fù)雜的非線性函數(shù),以用于當(dāng)給定自變量時(shí),預(yù)測因變量的值。
在 Faster R-CNN 框架下,訓(xùn)練需要修改的幾個部分。
(1) 修改數(shù)據(jù)集路徑、標(biāo)簽、以及其他超參數(shù)的相關(guān)文件。
(2) 修改 train_val.prototxt、test.prototxt 中的類別數(shù)量。
(3) 修改 solver 文件,并設(shè)置其路徑。
(4) 運(yùn)行腳本 script_faster_rcnn_VOC2007_ZF.m,執(zhí)行訓(xùn)練。
(5) 訓(xùn)練完成后,對生成的 detection_test.prototxt 文件進(jìn)行修改。
在參數(shù)設(shè)置環(huán)節(jié),本文主要采用默認(rèn)的參數(shù),而只針對 solver 文件中的 max_iter 和 stepsize 進(jìn)行修改。max_iter 代表訓(xùn)練過程中的最大迭代次數(shù),該參數(shù)過小會導(dǎo)致模型訓(xùn)練不充分,過大則可能導(dǎo)致模型過擬合(訓(xùn)練過于充分)。stepsize 代表執(zhí)行學(xué)習(xí)率衰減策略時(shí)的迭代次數(shù),亦即迭代多少次之后進(jìn)行學(xué)習(xí)率衰減。學(xué)習(xí)率是深度學(xué)習(xí)訓(xùn)練過程中的重要參數(shù):在訓(xùn)練的初始階段,會設(shè)置一個較大的學(xué)習(xí)率,以便快速收斂;在訓(xùn)練的后期,會減小學(xué)習(xí)率,以免因步幅太大而錯過最優(yōu)值。
本文所采用的數(shù)據(jù)集包含 800 張圖像,在不同的參數(shù)下進(jìn)行了多次訓(xùn)練實(shí)驗(yàn),最后發(fā)現(xiàn) max_iter 和 stepsize 的值分別為 4 000 和 3 000 時(shí),訓(xùn)練結(jié)果最佳。
3. 分類效果測試
本文所采用的 Faster R-CNN 框架對于心電節(jié)拍的分類結(jié)果包含三個方面:目標(biāo)位置 box、目標(biāo)分類以及得分 score,其中,目標(biāo)位置是以一個矩形 box 的左上頂點(diǎn)和右下頂點(diǎn)的坐標(biāo)來確定的,是一個 1×4 維的矩陣;目標(biāo)分類是模型對于該位置下,圖像類別的判斷結(jié)果。在本文中,它只有 4 個離散值可取;得分 score 是模型對于該分類結(jié)果的評價(jià),取值范圍在 0~1 之間。分類測試結(jié)果如圖 ?5 所示。
在心電圖采信號數(shù)據(jù)采集和傳輸方面,設(shè)計(jì)了基于 STM32 單片機(jī)的硬件心電數(shù)據(jù)采集系統(tǒng),采用 BMD101 芯片采集原始心電信號數(shù)據(jù),并用藍(lán)牙和 WiFi 將數(shù)據(jù)發(fā)送到 PC 端上位機(jī)和安卓手機(jī) APP上。在心電信號數(shù)據(jù)接收方面,編寫了 PC 端上位機(jī)來實(shí)現(xiàn)心電信號的實(shí)現(xiàn)顯示與保存,同時(shí)編寫了安卓端 APP 來實(shí)現(xiàn)心電信號的實(shí)時(shí)顯示,同時(shí)能定位到當(dāng)前使用者的地理位置,并將心電數(shù)據(jù)上傳到遠(yuǎn)端服務(wù)器上。
心電圖的正確分類取決于提取正確的特征,本文直接對預(yù)處理后的心電信號進(jìn)行深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練,逐層提取心電圖特征,最終擬合出心電圖自動分類的模型,用訓(xùn)練好的分類模型對心電圖進(jìn)行分類測試,得到了良好的效果。