呂 杭,李 楊,張鞠成,王志康,蔣明峰
(1.浙江理工大學計算機科學與技術學院,浙江 杭州 310018;2.浙江大學醫學院附屬第二醫院,浙江 杭州 310009)
隨著社會的發展,人口老齡化問題越來越突出,我國普通民眾面臨的健康壓力空前巨大。我國60 歲及以上的老年人口將從2010 年的1.68 億(占總人口的12.4%)增長到2040 年的4.02 億(占總人口的28%)[1],尤其需要關注的是我國將在2050 年進入深度老齡化社會[2]。而老年人是心血管疾病的潛在人群,心血管疾病已成為目前全球非傳染性疾病的主要致死風險[3]。心血管疾病主要表現為心律失常,具有隱蔽、突發、致死率高等特點。心電圖(Electrocardiogram,ECG)的日常監測是診斷心血管疾病一個有效的方法,因此長時間的心電監護對盡早發現心血管疾病具有重要的研究意義[4]。
隨著科技的迅猛發展[5],人工智能和ECG大數據結合的智慧醫療應運而生,它借助穿戴式心電采集設備,使實時監測和分析ECG數據成為可能[6]。同時,隨著傳輸技術的日益成熟,將移動終端應用于人體健康監護悄然興起。
AXISA等[7]提出了一種能實時監護人群健康狀態的Web服務平臺雛形,該平臺通過穿戴式設備實時采集腦電信號、心電信號等反映人體狀態的數據,同時借助移動終端實現體征信息的顯示、分析和存儲,并能上傳數據到監護中心,實現對人群的身體風險篩查和健康管理。胡文博[8]將訓練好的深度學習模型部署到Web平臺中,構建了Restful(基于HTTP協議的網絡應用程序設計格式的Web服務)標準的應用編程接口,通過對接ECG采集設備,結合心電圖R波識別、ECG預處理、ECG分類等算法模塊,提供心電診斷功能。MAJUMDER等[9]提出基于電容耦合電極的可穿戴無線心電監護系統,該系統可以透過人體身上不同類型的紡織材料,在身體運動的情況下完成心電圖數據采集。
針對長時間的心電監護,開發一個基于深度學習方法實現心律失常實時監測、智能診斷的系統。系統通過Django(由Python寫成的開放源代碼Web應用)框架開發,同時使用MySQL數據庫和Nginx部署在阿里云服務器上。該系統首先通過硬件傳感器采集ECG心電信號,其次對數據進行預處理、特征提取,最后通過訓練好的深度學習網絡模型實現了ECG心律失常的自動診斷和實時動態心電數據監測。
系統架構如圖1所示,主要分為硬件采集端、移動端和云端服務器三個部分。硬件采集端主要負責采集ECG數據;移動端包括手機App軟件和PC(個人計算機),主要負責上傳數據和可視化實時監護及管理用戶數據。

圖1 系統架構Fig.1 System architecture
系統運作流程為心電數據采集設備采集數據上傳到移動端,移動端可視化數據并上傳到云端服務器,云端服務器處理數據,然后調用部署的深度學習模型,將模型的輸出生成檢查報告反饋給移動端。
本系統的ECG數據上傳到云端服務器主要有兩個方法:通過藍牙將ECG數據傳到手機App,然后上傳到云端服務器;將采集設備存儲模塊存儲的數據直接導入PC端,然后上傳到云端服務器。前面的方法適用于手機,而后面的方法適用于管理員,通過PC端后臺管理系統直接上傳數據到云端服務器。
隨著云計算技術的快速進步,以阿里云、華為云為代表的公司紛紛推出自己的云服務器,方便用戶開發,不再需要購買昂貴的服務器硬件設備,也不需要安裝操作系統及搭建開發環境,只需在云服務器進行簡單操作就能快速搭建適合自己的應用開發環境。本系統的云端服務器是使用阿里云的ECS輕量服務器,足以支持系統目前的訪問量[10]。
云服務器處理數據流程如圖2所示,用戶將訓練好的模型文件部署到云端后,系統即可工作。在確定該用戶有ECG數據后,首先進入數據預處理階段,包括對ECG數據進行去噪和分割,得到統計學上的信息;然后將預處理后的數據輸入深度學習模型,模型會輸出每個心拍的預測標簽,即診斷結果。

圖2 云服務器Fig.2 Cloud server
心律失常分類系統的診斷性能主要取決于深度學習模型的性能。一般來說,深度神經網絡層數越深,網絡模型準確度越高,但是對資源的要求也更高。所以,研究人員根據識別心律失常種類的要求,提前訓練符合要求的深度學習模型。云端服務器不訓練模型,只運行訓練好的模型,可以節省大量服務器資源。
云端平臺存放的深度學習模型,是根據文獻[11]中提出的方法訓練模型,該模型是基于目前權威的深度殘差網絡構建的[12],網絡結構如圖3所示,該架構中主要有16 個殘差塊[13]。為了進一步提升網絡性能,研究人員在殘差塊中構建了批歸一化、激活函數及隨機權重丟棄層。

圖3 深度學習模型結構[11]Fig.3 Structure of deep learning model
本文采用2017心臟病學挑戰賽(The physionet computing in cardiology challenge 2017,CinC2017)提供的數據對模型進行訓練、測試;該數據集包含正常心律、房顫心律、其他和噪聲四類ECG數據;該數據集總共有8,528 條單導聯ECG記錄,每條記錄長度在9—61 s,采樣頻率為300 Hz。
管理系統基于Django框架[14]開發,系統總體功能結構如圖4所示。系統功能主要包含ECG診斷、診斷信息管理和用戶管理等。

圖4 系統總體功能結構Fig.4 Overall functional structure of the system
(1)ECG診斷。診斷ECG數據為本系統的核心功能,負責為用戶提供實時心電圖診斷服務。用戶通過移動端向系統發送請求,系統收到請求后,接收數據、處理數據后調用ECG深度學習模型進行自動分類,并將分類結果返回。移動端經過可視化處理生成報告呈現給用戶,報告包含診斷結果、心電圖、心拍數、RR間期、心率變異性(HRV)等心電指標信息。
(2)診斷信息管理。醫生和系統管理員可以查看診斷信息,但是操作權限不同,醫生可以查看自己的診斷信息和刪除自己的診斷信息;系統管理員能查看所有醫生的診斷信息,也能刪除本賬戶中任何一條診斷信息。診斷信息主要包含醫生上傳的數據,例如醫生上傳的心電原始數據、采樣率等信息,也包含ECG診斷結果,例如心拍的分類結果和診斷報告等。
(3)用戶管理。用戶管理主要是對用戶信息的“增、刪、改、查”操作。在本系統中,用戶分為Admin(系統管理員)和User(醫生)兩種角色。系統管理員擁有對所有用戶“增、刪、改、查”的權限,醫生只能修改自己的信息,但是不能修改自己的用戶名。系統管理員可以修改所有醫生的密碼而無須醫生設定的當前密碼,醫生修改自己的密碼時需要提供當前密碼及新密碼。
Django框架對數據庫有比較好的封裝,通過對象關系映射(Object_Relational Mapping,ORM)綁定數據模型與數據庫表。在Django框架中,User表繼承于Django的AbstractUser類,針對系統需求對用戶表進行自定義設計。本系統在model層設計3 個表,分別是用戶表、患者信息表和心電數據表。根據這幾個主要模型,創建實體關系圖(Entity Relationship Diagram),用于表示各個模型之間的關系,如圖5所示。

圖5 數據模型ER圖Fig.5 ER diagram of data model
管理系統實現如下功能:(1)用戶注冊登錄;(2)管理移動端用戶;(3)管理移動端ECG數據;(4)診斷心律失常;(5)生成診斷報告;(6)自動收集存儲ECG數據,為優化深度學習模型提供數據。
管理系統登錄頁面如圖6所示,管理員通過手機號或電子郵箱注冊,注冊后即可登錄,同時具備查看用戶信息及管理該賬號下的移動端信息。登錄后顯示的頁面如圖7所示,該界面可以查看移動端的心電記錄,可以管理移動端用戶。管理用戶界面如圖8所示,可以選擇添加用戶或者退出編輯返回圖7的界面。進入某用戶信息界面中,可以查看該用戶上傳的所有ECG記錄和對應的分析結果,若有未分析的ECG數據,也可以手動激活深度學習模型進行分析,如圖9所示。在用戶信息界面中,可以對該用戶的數據進行管理,包括增加、修改和刪除信息,如果想查看某一段心電記錄經過深度學習模型分析的結果,也是從該頁面跳轉。如圖10所示為深度學習模型分析的結果以及根據心電數據繪制的心電圖,數據以單個心拍為單位,不同顏色的心電圖表示深度學習模型對單個心拍預測的結果,例如黑色的心率變化曲線是表示心率正常。診斷報告頁面如圖11所示,包含ECG時長、心拍總數、平均心率和RR間期等特征,還包含深度學習模型預測的心率失常結果,圖11中的“Normal”表示心率正常。

圖6 管理系統登錄頁面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用戶所有數據Fig.9 All data of an App user

圖10 分類結果界面Fig.10 The page of classification results

圖11 診斷報告內容Fig.11 Content of diagnostic report
本文將CinC2017的數據集劃分為10 份,其中訓練集占比為90%,測試集占比為10%,具體訓練集有7,676 條記錄,共291,838 個樣本;剩下852 條記錄作為測試集,共有32,550 個樣本。
模型輸出結果如表1所示,四類樣本的平均F1分數(評價分類問題的一個衡量指標)和平均準確率都超過85%。準確率(accuracy)定義如下:

表1 網絡模型結果Tab.1 Results of network model

其中,TP為陽性樣本的正確預測數,TN為陰性樣本的正確預測數,FP為陰性樣本的錯誤預測數,FN為陽性樣本的錯誤預測數。F1定義如下:

precision和recall分別為精度和召回率,定義如下:

針對心率實時監護的問題,設計開發了一個基于深度學習的心律失常分類系統。該系統采用硬件傳感器系統采集ECG心電信號,通過算法對實測心電數據進行預處理、特征提取,輸入訓練好的深度學習模型,經由深度學習模型輸出結果,實現了對心電數據中心律失常的情況進行自動分類。系統基于Django框架Restful標準開發,對接心貼等心電采集設備,結合心電圖QRS波群識別、ECG去噪及深度學習的心律失常診斷算法等模塊,構建了一個實時監護心率、對心律失常類型進行自動分類的系統。
在數據足夠的情況下,深度學習模型可以不斷迭代訓練提高模型性能。使用訓練好的深度學習模型自動對ECG數據進行心律失常識別,取代傳統模板匹配心律失常的方法,此方案比傳統方法具有更低廉的成本及更好的診斷效果的優勢。