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