Zing-X / Rural-Healthcare-Mobile-Device-Based-Measurement-of-ECG-Parameters

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rural-Healthcare-Mobile-Device-Based-Measurement-of-ECG-Parameters

檔案太大,許多資料夾內容無法上傳,目前只放上程式碼的部分,詳情直接到 https://drive.google.com/drive/folders/1VbpEjsmLg7rFKwn1iOpJIYXDui7L_XRw?usp=sharing 直接下載壓縮檔

前言

都市和鄉村地區,醫療和經濟的窘迫互為因果,偏鄉地區經濟發展低、人口減少,醫療投資誘因不足;而醫療提供受影響,造成偏鄉民眾就醫成本提高、就醫意願降低,醫療品質及健康保護下降。因此,近年來政府投注大量經費和人力,大力推廣偏鄉和遠距醫療。 本計劃的主要目的便是希望能夠透過智慧型手機的鏡頭拍攝手指血流影像,利用訊號處理技術和深度學習技術計算出心律和血壓等生理數值,方便醫院蒐集偏鄉居民的生理資料,以便後續診斷及追蹤。

系統功能簡介

我們以網頁平台來呈現我們的專題成果,首先使用者可以於平台註冊及登入。在心律及血壓檢測的介面可上傳已錄製好的影片並計算用戶的心律以及血壓,並記錄於資料庫中。最後在一週紀錄的介面中,可以查看一週的心律及血壓紀錄,該紀錄使用表格及折線圖的方式呈現,方便用戶紀錄及追蹤該週的生理狀態。

開發工具與技術

(一) 光體積變化描圖法

利用光感測元件吸收光線能量的原理,紀錄光線的變化而得到的信號。也就是說當心臟脈動時,血管內單位面積的血流量也會有週期性的變化,因而使得光感測元件隨著血液體積變化而產生不同的感應電壓,所以光體積變化信號的振幅會與血液進出組織量呈現正相關變化。 根據光體積變化訊號與ECG個別的生理特徵,我們可以發現ECG的峰值來自於心室的收縮,而光體積變化訊號的峰值則是因為血管收縮所造成的,因此我們可以得到血液自心臟送出後到達量測部位的傳輸時間,脈搏傳遞的速度與血壓是直接相關的,血壓高時,脈搏波傳遞快,反之則慢。 這裡我們利用手機的鏡頭及閃光燈光源來實踐如何採集信號,以錄影的方式記錄從閃光燈光源照進指尖反射回來的信號。

(二) 訓練資料集

為了提供我們深度學習訓練資料,我們選擇使用經過Kachue等人從MIMIC-III初步處理後的資料集,該資料集目前儲存在UCI Machine Learning Repository,MIMIC-III是來自PhysioNet的重症監護多參數智能監測的數據集,該數據庫提供隨機挑選100位成年患者在2001~2012年期間,入住波士頓Beth Israel Deaconess醫療中心的加護病房的多導聯心電訊號、光電容積描記訊號、有創動脈血壓訊號、呼吸訊號等。從該資料庫中只提取了多導聯心電訊號、光體積描述法訊號和有創動脈血壓,所有訊號採樣率皆為125赫茲,總時長約為741.53小時。 觀察MIMIC-III資料集提取出的訊號,透過Pearson相關係數可以發現,光體積變化訊號與血壓的平均相關係數高達0.84,通過使用深度學習的方式來預測人體脈搏的收縮壓與舒張壓,可實現無創連續血壓測量。

(三) 訊號提取與雜訊處理

我們會請使用者將手指按壓在手機鏡頭上,並打開閃光燈進行錄影,影片規格為125幀,再進行數值量化,將每一幀的像素亮度取平均;接著將原始訊號與其移動平均值相減,得到消除上下起伏波動的訊號,再透過濾波器移除頻率過高的訊號,避免訊號有極端值,但因為開頭和結尾的時候需要點螢幕開始與結束錄影,所以會產生劇烈的晃動,需要將影片開頭與結尾去除,以避免蒐集到品質差的訊號。

(四) U-Net深度學習模型

U-Net是一種基於卷積神經網路的模型,其架構可以看作為自動編碼器(Auto Encoder)的變形(如下圖),其特點是不需要大量的訓練資料,就能擁有高精確度。雖然訊號通常要考慮前後關係,以免斷章取義,但是血壓的前後關係並不會產生太大的影響(例:十分鐘前的血壓並不會影響十分鐘後的血壓),通過Pearson相關係數可以得知光體積訊號與血壓波形有著高度正相關。 本計畫針對擁有優異特徵提取能力的U-Net進行改良,因為原始的U-Net是用來做醫療影像分割,影像是屬於二維資料,而我們的目標是通過光體積訊號來預測血壓,訊號是屬於一維資料,所以需要將二維的卷積層、池化層和上採樣層替換成相對應的一維layer,最後我們將訓練出的U-Net模型通過網站呈現,即可用來提供使用者即時量測血壓。

image

(五) 網站技術

最終結果將以網站的方式呈現,我們使用HTML、CSS、Java Script編寫網頁架構,並用python的Flask套件架設模型API。本系統由前端接收測試者錄製好的指尖檢測影片傳至後端分析並儲存數據,最終將數據結果傳至前端呈現給測試者。

About


Languages

Language:Python 100.0%