呂 杭,李 楊,張鞠成,王志康,蔣明峰
(1.浙江理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310018;2.浙江大學(xué)醫(yī)學(xué)院附屬第二醫(yī)院,浙江 杭州 310009)
隨著社會(huì)的發(fā)展,人口老齡化問題越來越突出,我國普通民眾面臨的健康壓力空前巨大。我國60 歲及以上的老年人口將從2010 年的1.68 億(占總?cè)丝诘?2.4%)增長到2040 年的4.02 億(占總?cè)丝诘?8%)[1],尤其需要關(guān)注的是我國將在2050 年進(jìn)入深度老齡化社會(huì)[2]。而老年人是心血管疾病的潛在人群,心血管疾病已成為目前全球非傳染性疾病的主要致死風(fēng)險(xiǎn)[3]。心血管疾病主要表現(xiàn)為心律失常,具有隱蔽、突發(fā)、致死率高等特點(diǎn)。心電圖(Electrocardiogram,ECG)的日常監(jiān)測是診斷心血管疾病一個(gè)有效的方法,因此長時(shí)間的心電監(jiān)護(hù)對盡早發(fā)現(xiàn)心血管疾病具有重要的研究意義[4]。
隨著科技的迅猛發(fā)展[5],人工智能和ECG大數(shù)據(jù)結(jié)合的智慧醫(yī)療應(yīng)運(yùn)而生,它借助穿戴式心電采集設(shè)備,使實(shí)時(shí)監(jiān)測和分析ECG數(shù)據(jù)成為可能[6]。同時(shí),隨著傳輸技術(shù)的日益成熟,將移動(dòng)終端應(yīng)用于人體健康監(jiān)護(hù)悄然興起。
AXISA等[7]提出了一種能實(shí)時(shí)監(jiān)護(hù)人群健康狀態(tài)的Web服務(wù)平臺(tái)雛形,該平臺(tái)通過穿戴式設(shè)備實(shí)時(shí)采集腦電信號、心電信號等反映人體狀態(tài)的數(shù)據(jù),同時(shí)借助移動(dòng)終端實(shí)現(xiàn)體征信息的顯示、分析和存儲(chǔ),并能上傳數(shù)據(jù)到監(jiān)護(hù)中心,實(shí)現(xiàn)對人群的身體風(fēng)險(xiǎn)篩查和健康管理。胡文博[8]將訓(xùn)練好的深度學(xué)習(xí)模型部署到Web平臺(tái)中,構(gòu)建了Restful(基于HTTP協(xié)議的網(wǎng)絡(luò)應(yīng)用程序設(shè)計(jì)格式的Web服務(wù))標(biāo)準(zhǔn)的應(yīng)用編程接口,通過對接ECG采集設(shè)備,結(jié)合心電圖R波識別、ECG預(yù)處理、ECG分類等算法模塊,提供心電診斷功能。MAJUMDER等[9]提出基于電容耦合電極的可穿戴無線心電監(jiān)護(hù)系統(tǒng),該系統(tǒng)可以透過人體身上不同類型的紡織材料,在身體運(yùn)動(dòng)的情況下完成心電圖數(shù)據(jù)采集。
針對長時(shí)間的心電監(jiān)護(hù),開發(fā)一個(gè)基于深度學(xué)習(xí)方法實(shí)現(xiàn)心律失常實(shí)時(shí)監(jiān)測、智能診斷的系統(tǒng)。系統(tǒng)通過Django(由Python寫成的開放源代碼Web應(yīng)用)框架開發(fā),同時(shí)使用MySQL數(shù)據(jù)庫和Nginx部署在阿里云服務(wù)器上。該系統(tǒng)首先通過硬件傳感器采集ECG心電信號,其次對數(shù)據(jù)進(jìn)行預(yù)處理、特征提取,最后通過訓(xùn)練好的深度學(xué)習(xí)網(wǎng)絡(luò)模型實(shí)現(xiàn)了ECG心律失常的自動(dòng)診斷和實(shí)時(shí)動(dòng)態(tài)心電數(shù)據(jù)監(jiān)測。
系統(tǒng)架構(gòu)如圖1所示,主要分為硬件采集端、移動(dòng)端和云端服務(wù)器三個(gè)部分。硬件采集端主要負(fù)責(zé)采集ECG數(shù)據(jù);移動(dòng)端包括手機(jī)App軟件和PC(個(gè)人計(jì)算機(jī)),主要負(fù)責(zé)上傳數(shù)據(jù)和可視化實(shí)時(shí)監(jiān)護(hù)及管理用戶數(shù)據(jù)。
圖1 系統(tǒng)架構(gòu)Fig.1 System architecture
系統(tǒng)運(yùn)作流程為心電數(shù)據(jù)采集設(shè)備采集數(shù)據(jù)上傳到移動(dòng)端,移動(dòng)端可視化數(shù)據(jù)并上傳到云端服務(wù)器,云端服務(wù)器處理數(shù)據(jù),然后調(diào)用部署的深度學(xué)習(xí)模型,將模型的輸出生成檢查報(bào)告反饋給移動(dòng)端。
本系統(tǒng)的ECG數(shù)據(jù)上傳到云端服務(wù)器主要有兩個(gè)方法:通過藍(lán)牙將ECG數(shù)據(jù)傳到手機(jī)App,然后上傳到云端服務(wù)器;將采集設(shè)備存儲(chǔ)模塊存儲(chǔ)的數(shù)據(jù)直接導(dǎo)入PC端,然后上傳到云端服務(wù)器。前面的方法適用于手機(jī),而后面的方法適用于管理員,通過PC端后臺(tái)管理系統(tǒng)直接上傳數(shù)據(jù)到云端服務(wù)器。
隨著云計(jì)算技術(shù)的快速進(jìn)步,以阿里云、華為云為代表的公司紛紛推出自己的云服務(wù)器,方便用戶開發(fā),不再需要購買昂貴的服務(wù)器硬件設(shè)備,也不需要安裝操作系統(tǒng)及搭建開發(fā)環(huán)境,只需在云服務(wù)器進(jìn)行簡單操作就能快速搭建適合自己的應(yīng)用開發(fā)環(huán)境。本系統(tǒng)的云端服務(wù)器是使用阿里云的ECS輕量服務(wù)器,足以支持系統(tǒng)目前的訪問量[10]。
云服務(wù)器處理數(shù)據(jù)流程如圖2所示,用戶將訓(xùn)練好的模型文件部署到云端后,系統(tǒng)即可工作。在確定該用戶有ECG數(shù)據(jù)后,首先進(jìn)入數(shù)據(jù)預(yù)處理階段,包括對ECG數(shù)據(jù)進(jìn)行去噪和分割,得到統(tǒng)計(jì)學(xué)上的信息;然后將預(yù)處理后的數(shù)據(jù)輸入深度學(xué)習(xí)模型,模型會(huì)輸出每個(gè)心拍的預(yù)測標(biāo)簽,即診斷結(jié)果。
圖2 云服務(wù)器Fig.2 Cloud server
心律失常分類系統(tǒng)的診斷性能主要取決于深度學(xué)習(xí)模型的性能。一般來說,深度神經(jīng)網(wǎng)絡(luò)層數(shù)越深,網(wǎng)絡(luò)模型準(zhǔn)確度越高,但是對資源的要求也更高。所以,研究人員根據(jù)識別心律失常種類的要求,提前訓(xùn)練符合要求的深度學(xué)習(xí)模型。云端服務(wù)器不訓(xùn)練模型,只運(yùn)行訓(xùn)練好的模型,可以節(jié)省大量服務(wù)器資源。
云端平臺(tái)存放的深度學(xué)習(xí)模型,是根據(jù)文獻(xiàn)[11]中提出的方法訓(xùn)練模型,該模型是基于目前權(quán)威的深度殘差網(wǎng)絡(luò)構(gòu)建的[12],網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,該架構(gòu)中主要有16 個(gè)殘差塊[13]。為了進(jìn)一步提升網(wǎng)絡(luò)性能,研究人員在殘差塊中構(gòu)建了批歸一化、激活函數(shù)及隨機(jī)權(quán)重丟棄層。
圖3 深度學(xué)習(xí)模型結(jié)構(gòu)[11]Fig.3 Structure of deep learning model
本文采用2017心臟病學(xué)挑戰(zhàn)賽(The physionet computing in cardiology challenge 2017,CinC2017)提供的數(shù)據(jù)對模型進(jìn)行訓(xùn)練、測試;該數(shù)據(jù)集包含正常心律、房顫心律、其他和噪聲四類ECG數(shù)據(jù);該數(shù)據(jù)集總共有8,528 條單導(dǎo)聯(lián)ECG記錄,每條記錄長度在9—61 s,采樣頻率為300 Hz。
管理系統(tǒng)基于Django框架[14]開發(fā),系統(tǒng)總體功能結(jié)構(gòu)如圖4所示。系統(tǒng)功能主要包含ECG診斷、診斷信息管理和用戶管理等。
圖4 系統(tǒng)總體功能結(jié)構(gòu)Fig.4 Overall functional structure of the system
(1)ECG診斷。診斷ECG數(shù)據(jù)為本系統(tǒng)的核心功能,負(fù)責(zé)為用戶提供實(shí)時(shí)心電圖診斷服務(wù)。用戶通過移動(dòng)端向系統(tǒng)發(fā)送請求,系統(tǒng)收到請求后,接收數(shù)據(jù)、處理數(shù)據(jù)后調(diào)用ECG深度學(xué)習(xí)模型進(jìn)行自動(dòng)分類,并將分類結(jié)果返回。移動(dòng)端經(jīng)過可視化處理生成報(bào)告呈現(xiàn)給用戶,報(bào)告包含診斷結(jié)果、心電圖、心拍數(shù)、RR間期、心率變異性(HRV)等心電指標(biāo)信息。
(2)診斷信息管理。醫(yī)生和系統(tǒng)管理員可以查看診斷信息,但是操作權(quán)限不同,醫(yī)生可以查看自己的診斷信息和刪除自己的診斷信息;系統(tǒng)管理員能查看所有醫(yī)生的診斷信息,也能刪除本賬戶中任何一條診斷信息。診斷信息主要包含醫(yī)生上傳的數(shù)據(jù),例如醫(yī)生上傳的心電原始數(shù)據(jù)、采樣率等信息,也包含ECG診斷結(jié)果,例如心拍的分類結(jié)果和診斷報(bào)告等。
(3)用戶管理。用戶管理主要是對用戶信息的“增、刪、改、查”操作。在本系統(tǒng)中,用戶分為Admin(系統(tǒng)管理員)和User(醫(yī)生)兩種角色。系統(tǒng)管理員擁有對所有用戶“增、刪、改、查”的權(quán)限,醫(yī)生只能修改自己的信息,但是不能修改自己的用戶名。系統(tǒng)管理員可以修改所有醫(yī)生的密碼而無須醫(yī)生設(shè)定的當(dāng)前密碼,醫(yī)生修改自己的密碼時(shí)需要提供當(dāng)前密碼及新密碼。
Django框架對數(shù)據(jù)庫有比較好的封裝,通過對象關(guān)系映射(Object_Relational Mapping,ORM)綁定數(shù)據(jù)模型與數(shù)據(jù)庫表。在Django框架中,User表繼承于Django的AbstractUser類,針對系統(tǒng)需求對用戶表進(jìn)行自定義設(shè)計(jì)。本系統(tǒng)在model層設(shè)計(jì)3 個(gè)表,分別是用戶表、患者信息表和心電數(shù)據(jù)表。根據(jù)這幾個(gè)主要模型,創(chuàng)建實(shí)體關(guān)系圖(Entity Relationship Diagram),用于表示各個(gè)模型之間的關(guān)系,如圖5所示。
圖5 數(shù)據(jù)模型ER圖Fig.5 ER diagram of data model
管理系統(tǒng)實(shí)現(xiàn)如下功能:(1)用戶注冊登錄;(2)管理移動(dòng)端用戶;(3)管理移動(dòng)端ECG數(shù)據(jù);(4)診斷心律失常;(5)生成診斷報(bào)告;(6)自動(dòng)收集存儲(chǔ)ECG數(shù)據(jù),為優(yōu)化深度學(xué)習(xí)模型提供數(shù)據(jù)。
管理系統(tǒng)登錄頁面如圖6所示,管理員通過手機(jī)號或電子郵箱注冊,注冊后即可登錄,同時(shí)具備查看用戶信息及管理該賬號下的移動(dòng)端信息。登錄后顯示的頁面如圖7所示,該界面可以查看移動(dòng)端的心電記錄,可以管理移動(dòng)端用戶。管理用戶界面如圖8所示,可以選擇添加用戶或者退出編輯返回圖7的界面。進(jìn)入某用戶信息界面中,可以查看該用戶上傳的所有ECG記錄和對應(yīng)的分析結(jié)果,若有未分析的ECG數(shù)據(jù),也可以手動(dòng)激活深度學(xué)習(xí)模型進(jìn)行分析,如圖9所示。在用戶信息界面中,可以對該用戶的數(shù)據(jù)進(jìn)行管理,包括增加、修改和刪除信息,如果想查看某一段心電記錄經(jīng)過深度學(xué)習(xí)模型分析的結(jié)果,也是從該頁面跳轉(zhuǎn)。如圖10所示為深度學(xué)習(xí)模型分析的結(jié)果以及根據(jù)心電數(shù)據(jù)繪制的心電圖,數(shù)據(jù)以單個(gè)心拍為單位,不同顏色的心電圖表示深度學(xué)習(xí)模型對單個(gè)心拍預(yù)測的結(jié)果,例如黑色的心率變化曲線是表示心率正常。診斷報(bào)告頁面如圖11所示,包含ECG時(shí)長、心拍總數(shù)、平均心率和RR間期等特征,還包含深度學(xué)習(xí)模型預(yù)測的心率失常結(jié)果,圖11中的“Normal”表示心率正常。
圖6 管理系統(tǒng)登錄頁面Fig.6 The login page of management system
圖7 手機(jī)App用戶信息界面Fig.7 User information page of mobile App
圖8 管理App用戶界面Fig.8 Managing the App user page
圖9 某App用戶所有數(shù)據(jù)Fig.9 All data of an App user
圖10 分類結(jié)果界面Fig.10 The page of classification results
圖11 診斷報(bào)告內(nèi)容Fig.11 Content of diagnostic report
本文將CinC2017的數(shù)據(jù)集劃分為10 份,其中訓(xùn)練集占比為90%,測試集占比為10%,具體訓(xùn)練集有7,676 條記錄,共291,838 個(gè)樣本;剩下852 條記錄作為測試集,共有32,550 個(gè)樣本。
模型輸出結(jié)果如表1所示,四類樣本的平均F1分?jǐn)?shù)(評價(jià)分類問題的一個(gè)衡量指標(biāo))和平均準(zhǔn)確率都超過85%。準(zhǔn)確率(accuracy)定義如下:
表1 網(wǎng)絡(luò)模型結(jié)果Tab.1 Results of network model
其中,TP為陽性樣本的正確預(yù)測數(shù),TN為陰性樣本的正確預(yù)測數(shù),F(xiàn)P為陰性樣本的錯(cuò)誤預(yù)測數(shù),F(xiàn)N為陽性樣本的錯(cuò)誤預(yù)測數(shù)。F1定義如下:
precision和recall分別為精度和召回率,定義如下:
針對心率實(shí)時(shí)監(jiān)護(hù)的問題,設(shè)計(jì)開發(fā)了一個(gè)基于深度學(xué)習(xí)的心律失常分類系統(tǒng)。該系統(tǒng)采用硬件傳感器系統(tǒng)采集ECG心電信號,通過算法對實(shí)測心電數(shù)據(jù)進(jìn)行預(yù)處理、特征提取,輸入訓(xùn)練好的深度學(xué)習(xí)模型,經(jīng)由深度學(xué)習(xí)模型輸出結(jié)果,實(shí)現(xiàn)了對心電數(shù)據(jù)中心律失常的情況進(jìn)行自動(dòng)分類。系統(tǒng)基于Django框架Restful標(biāo)準(zhǔn)開發(fā),對接心貼等心電采集設(shè)備,結(jié)合心電圖QRS波群識別、ECG去噪及深度學(xué)習(xí)的心律失常診斷算法等模塊,構(gòu)建了一個(gè)實(shí)時(shí)監(jiān)護(hù)心率、對心律失常類型進(jìn)行自動(dòng)分類的系統(tǒng)。
在數(shù)據(jù)足夠的情況下,深度學(xué)習(xí)模型可以不斷迭代訓(xùn)練提高模型性能。使用訓(xùn)練好的深度學(xué)習(xí)模型自動(dòng)對ECG數(shù)據(jù)進(jìn)行心律失常識別,取代傳統(tǒng)模板匹配心律失常的方法,此方案比傳統(tǒng)方法具有更低廉的成本及更好的診斷效果的優(yōu)勢。