黃偉安,黎峰,張雨,李濟(jì)涵,高軍峰
(中南民族大學(xué)生物醫(yī)學(xué)工程學(xué)院,武漢 430074)
心率(heart rate,HR)是一種衡量人類心臟搏動能力的指標(biāo),其變化差異反映了心臟健康程度,是人體生理特征的重要參數(shù)。有研究顯示,靜息心率與心血管疾病密切相關(guān),靜息心率越快越容易引發(fā)心血管疾病[1-2]。同時,在運(yùn)動狀態(tài)下,心率更容易產(chǎn)生異常的變化,即心臟出現(xiàn)異常工作的情況,因此,心率對運(yùn)動過程產(chǎn)生的異常情況具有重要的預(yù)警作用[3]。隨著人們對自身健康的不斷重視,心率檢測已成為人們的日常需求。因此,如何加快對便捷式心率檢測技術(shù)的研究,并在醫(yī)療保健、健身運(yùn)動等各方面廣泛應(yīng)用便捷式心率檢測技術(shù)是目前的研究重點(diǎn)及難點(diǎn)。
傳統(tǒng)的心率檢測主要依靠心電圖法(electrocardiogram,ECG),雖然這種方法得到的心率是最準(zhǔn)確的,但是對于日常生活的心率檢測比較麻煩,而且其設(shè)備價格昂貴,操作復(fù)雜,無法進(jìn)行大規(guī)模應(yīng)用。因此目前的穿戴式心率檢測設(shè)備主要采用光電容積描記(photoplethysmography,PPG)技術(shù),它是當(dāng)前應(yīng)用最廣泛的心率檢測方法,但是這種方法在劇烈運(yùn)動下所采集的PPG信號存在極大的運(yùn)動偽影,這種偽影使得心率檢測的準(zhǔn)確性面臨著巨大的挑戰(zhàn)。
當(dāng)前,多種信號處理技術(shù)被提出用于去除或降低PPG信號的運(yùn)動偽影,主要有獨(dú)立成分分析(independent component analysis,ICA)[4]、奇異值分解(singular value decomposition,SVD)[5]、小波變換[6]、經(jīng)驗?zāi)B(tài)分解[7]等方法。也有其他研究通過組合兩類及多類技術(shù)去除PPG信號的運(yùn)動偽影。耿讀艷等[8]將含有噪聲的PPG信號以三軸加速度傳感器作為參考信號,通過自適應(yīng)濾波器濾除其中的運(yùn)動偽差,其次再通過經(jīng)驗?zāi)B(tài)分解得到一系列的固有模態(tài)分量,最后通過排列熵準(zhǔn)則判斷信號閾值范圍,濾除其中的高頻噪聲和基線漂移,但無法同時兼顧復(fù)雜度與準(zhǔn)確度。譚擁等[9]用三軸角速度對三軸加速度進(jìn)行卡爾曼濾波修正,并將其作為自適應(yīng)濾波器的參考信號,濾除PPG信號中的運(yùn)動偽影,最后再對處理過的信號利用譜峰追蹤估計心率,盡管提高了準(zhǔn)確率,但其使用時需要生成參考信號,無法確保參考信號的準(zhǔn)確性。
隨著深度學(xué)習(xí)在各個領(lǐng)域的不斷發(fā)展,許多研究嘗試?yán)蒙疃葘W(xué)習(xí)算法從受污染的PPG信號中測量心率。Jindal等[10]提出基于深度信念網(wǎng)絡(luò)和受限波爾茲曼機(jī)器對人體 PPG 信號識別,其輸入序列是人為提取的特定特征。在Deep PPG[11]中,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)由PPG信號和由ECG信號的真實心率標(biāo)記的加速度共同訓(xùn)練。在CorNET[12]中,神經(jīng)網(wǎng)絡(luò)模型由心電信號的真實心率值標(biāo)記的PPG信號訓(xùn)練。盡管CorNET與基于信號處理的方法具有類似的性能,但該模型必須針對每個不同的個體進(jìn)行訓(xùn)練。覃凱等[13]利用CNN結(jié)合序列到序列的注意力機(jī)制網(wǎng)絡(luò)模型對PPG信號進(jìn)行預(yù)測,但其針對某個狀態(tài)下心率測量存在局限性。目前現(xiàn)有的基于深度學(xué)習(xí)的方法大多采用分類的思想,都依賴于從心電信號中提取的HR作為標(biāo)簽。
現(xiàn)提出新的心率估計方法——LU_PPG,該方法是一種結(jié)合LSTM網(wǎng)絡(luò)和Unet模型對PPG信號進(jìn)行心率估計的方法,可對在運(yùn)動中的心率測量取得較高的精度。以單通道的PPG信號為訓(xùn)練數(shù)據(jù),將攜帶心率信息的類正弦信號為標(biāo)簽用以訓(xùn)練LSTM_Unet網(wǎng)絡(luò)模型,經(jīng)網(wǎng)絡(luò)輸出類PPG信號,最后通過頻譜分析對心率估計并進(jìn)行校正[14]。
圖1展示了LU_PPG心率測量方法的流程。包括3個階段: 預(yù)處理; 模型訓(xùn)練; 模型預(yù)測。
圖1 心率估計流程圖Fig.1 Flow chart of heart rate estimation
數(shù)據(jù)集通過腕帶設(shè)備記錄,包括一個雙通道PPG傳感器(綠色LED,波長為515 nm)和一個三軸加速度計(記錄在與PPG信號相同的位置)。此外,數(shù)據(jù)集包括同時記錄的心電信號,提供真實心率值。所有信號的采樣率為125 Hz。該數(shù)據(jù)集由12名年齡在18~35歲的黃皮膚男性的生理數(shù)據(jù)所組成,共包含12個子集[15]。
對于每個受試者,在記錄數(shù)據(jù)的過程中,都是以如下速度在跑步機(jī)上行走或跑步:以1~2 km/h的速度行走或跑步0.5 min,以6~8 km/h的速度行走或跑步1 min,以12~15 km/h的速度行走或跑步1 min,以6~8 km/h的速度行走或跑步1 min,以12~15 km/h的速度行走或跑步1 min,以1~2 km/h的速度行走或跑步0.5 min。同時,受試者被要求用手和腕帶拉衣服,擦額頭汗水,并按下跑步機(jī)上的按鈕以及自由揮桿。
心電信號包含P波、QRS波和T波等波。通過PPG信號測量心率,為獲得受污染PPG信號的心率信息,同時簡化模型復(fù)雜度和訓(xùn)練難度,僅關(guān)注ECG信號中的R峰。經(jīng)研究證明 PPG 波峰與ECG中的R峰周期一致。
采用MATLAB自帶峰值檢測函數(shù)findpeaks檢測ECG信號中R峰位置,然后根據(jù)周期ECG信號重構(gòu)成一個類正弦信號的波形,從而有別于其他研究方法所采用的方法,如圖2所示。
圖2 ECG信號與轉(zhuǎn)換后的類正弦信號對比圖Fig.2 Comparison chart of ECG signal and converted sinusoidal signal
在檢測峰值的過程中,僅僅依靠函數(shù)檢測往往會出現(xiàn)遺漏峰值點(diǎn)或標(biāo)記錯誤的峰值點(diǎn)。因此,必須對檢測過后的峰值點(diǎn)進(jìn)行檢查并糾正,以防出現(xiàn)漏峰、錯峰錯誤,影響后續(xù)模型的訓(xùn)練過程。
為了降低噪聲和干擾,采用三階巴特沃斯帶通濾波器對PPG信號進(jìn)行處理。將帶通濾波器的截止頻率設(shè)置為0.4~5 Hz,對應(yīng)24~300 次/min的心率范圍。
為了便于網(wǎng)絡(luò)訓(xùn)練,首先采用互相關(guān)分析的方法將PPG和同步的ECG的第一個波峰對齊,信號對齊結(jié)果如圖3所示。其次使用滑動窗口將信號切分為重疊幀,其中滑動窗口的長度為1 000個采樣點(diǎn),即8 s。為了生成大量的訓(xùn)練數(shù)據(jù),選擇較小的0.25 s作為滑動時間步長,測試數(shù)據(jù)集的滑動時間步長設(shè)為2 s。最后將數(shù)據(jù)歸一化處理后送入神經(jīng)網(wǎng)絡(luò)。
圖3 利用互相關(guān)方法將原信號與標(biāo)簽進(jìn)行對齊 Fig.3 Align the original signal with the label using the cross-correlation method
1.3.1 模型組成
所使用的神經(jīng)網(wǎng)絡(luò)模型是主要由CNN和循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)組成。首先,CNN能夠從大量的數(shù)據(jù)提取出適合該任務(wù)的特征數(shù)據(jù)。其次,學(xué)習(xí)基于對以往知識的理解來理解當(dāng)前的知識。然而傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)并不能將這種經(jīng)驗傳遞下去,這將丟失很多有價值的信息。RNN正是為了解決這一問題而提出來的。所使用的長短期記憶(long short-term memory,LSTM)[16]是一種特殊的RNN模型,可以學(xué)習(xí)長期依賴信息,同時不會出現(xiàn)傳統(tǒng)RNN的梯度消失和梯度爆炸的問題。
LSTM 內(nèi)部模塊由 4 個不同的門控單元以一種特殊的方式進(jìn)行交互。與RNN相比,LSTM模型增加了3個門控單元,分別為遺忘門、傳入門和輸出門。這些門的作用是控制之前隱藏狀態(tài)需要遺忘、需要記憶、需要輸出的部分。使用兩層的LSTM網(wǎng)絡(luò)構(gòu)成了基本的Seq2Seq模型,Seq2Seq 模型屬encoder-decoder 結(jié)構(gòu)中的一種。基本思想是利用兩個RNN,一個作為encoder,另一個作為decoder。
Seq2Seq網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。encoder 負(fù)責(zé)將輸入序列壓縮成指定長度的向量,這個向量包含了心率信息,采用雙向 RNN(Bi-RNN)在前向和后向讀取源序列,這個過程稱作編碼。而 decoder 則負(fù)責(zé)根據(jù)編碼向量生成指定的序列,這個過程稱作解碼。
xn為輸入序列;hn為隱藏層狀態(tài);yn為本時刻的輸入圖4 Seq2Seq模塊結(jié)構(gòu)圖Fig.4 Seq2Seq module structure diagram
1.3.2 LSTM_Unet模型結(jié)構(gòu)
Unet是一種基于CNN實現(xiàn)的語義分割網(wǎng)絡(luò)[17],首次將LSTM和Unet網(wǎng)絡(luò)相結(jié)合并應(yīng)用于心率檢測。LSTM_Unet是一種 Encoder-Decoder 結(jié)構(gòu),結(jié)構(gòu)簡單但很有效。編碼部分有兩個子模塊,每個子模塊包含兩個卷積層,每個子模塊之后有一個通過Maxpooling實現(xiàn)的下采樣層。解碼部分也包含兩個子模塊,序列長度通過上采樣操作依次上升,直到與輸入序列長度一致。該網(wǎng)絡(luò)還使用了跳躍連接,將上采樣結(jié)果與編碼器中具有相同序列長度的子模塊的輸出進(jìn)行連接,作為解碼器中下一個子模塊的輸入。Seq2Seq模塊負(fù)責(zé)將編碼的輸出序列壓縮層指定長度的向量,這個向量可以看作包含了心率信息,并根據(jù)生成的向量生成指定的序列送入到解碼部分,該模型的結(jié)構(gòu)圖如圖5所示。
圖5 LSTM_Unet 模型結(jié)構(gòu)圖Fig.5 LSTM_Unet model structure diagram
1.3.3 實驗參數(shù)設(shè)置
LSTM_Unet模型的CNN都采用一維卷積,第一個CNN塊使用16個大小為7×1的卷積核,第二個CNN塊使用8個大小為7×1的卷積核。Seq2Seq中的3個LSM網(wǎng)絡(luò)都采用8個單元的結(jié)構(gòu),并返回長短期記憶狀態(tài)。為了訓(xùn)練LSTM_Unet模型,最初使用80個epoch,批大小為128,實驗發(fā)現(xiàn)超過60個epoch后,性能沒有改善,因此將固定為60個epoch,然后作后續(xù)分析。在訓(xùn)練過程中,采用Adam優(yōu)化器進(jìn)行優(yōu)化,采用均方誤差(mean square error,MSE)作為損失函數(shù),平均絕對誤差(mean absolute error,MAE)來評估模型的性能。將IEEE數(shù)據(jù)集12個子集通過留一法訓(xùn)練和測試模型,即11條記錄用于訓(xùn)練LSTM_Unet, 1條記錄用于測試。
經(jīng)過上述步驟后,對模型預(yù)測的類PPG信號做進(jìn)一步的頻譜分析,才能得出最終的心率值。利用MATLAB提供的自回歸模型函數(shù)pyulear對預(yù)測數(shù)據(jù)集的PPG幀做功率譜分析,最終得到每一PPG幀的心率值,其心率計算公式如式(1)所示。
HR=60f
(1)
式(1)中:f為該P(yáng)PG幀的脈搏波頻率成分,bpm即每分鐘心跳次數(shù),次/min。
為了對比不同方法測量心率的優(yōu)劣性,用不同的方法處理同一批PPG數(shù)據(jù)集并計算連續(xù)心率。將LSTM_Unet模型對PPG信號進(jìn)行預(yù)測,擬合出包含心率信息的類PPG信號。圖6及圖7給出了一段受污染的PPG信號與其預(yù)測結(jié)果的示例,可以看到預(yù)測的結(jié)果波形變得更有規(guī)律了。LU_PPG方法根據(jù)輸入PPG預(yù)測出類PPG信號,并基于頻譜分析對HR進(jìn)行估計,圖8顯示的頻率成分最高峰就是心率。
圖6 原始PPG信號Fig.6 Original PPG signal
圖7 模型預(yù)測的類PPG信號Fig.7 PPG-like signals predicted by the model
圖8 頻譜分析圖Fig.8 Spectrum analysis chart
使用估計心率與真實心率的平均絕對誤差(MAE)來評估LU_PPG方法在人體心率估計方面的表現(xiàn),其公式如式(2)所示。
(2)
式(2)中:HRt(i)為第i個PPG幀的真實心率值;HRp(i)為第i個PPG幀的估計心率值;n為每個對象子集的PPG幀數(shù)。
將LU_PPG方法的性能與代表經(jīng)典信號處理方法的TROIKA、深度學(xué)習(xí)算法的Deep PPG、DeepHeart進(jìn)行了比較,表1給出了不同方法下的12個對象子集的平均絕對誤差(MAE)以及總的平均誤差(Avg)。
在表1中可以發(fā)現(xiàn)LU_PPG在絕大部分記錄中的心率估計都優(yōu)于TROIKA和Deep PPG。其中,LU_PPG的平均誤差為2.27 次/min,低于TROIKA的2.34 次/min和Deep PPG的4.00 次/min。值得注意的是DeepHeart的心率估計,盡管其心率估計平均誤差只有1.61 次/min,但其心率估計過程的復(fù)雜性也是不能忽略的。該方法需要將10個訓(xùn)練模型的輸出分量進(jìn)行加權(quán)求和才能取得較穩(wěn)定的心率估計結(jié)果,顯然這過程的工作量加大了心率估計的負(fù)擔(dān)。其與LU_PPG心率測量方法的模型復(fù)雜度對比如表2所示,可知,無論是模型參數(shù)量還是計算量來看,LU_PPG心率估計方法均小于DeepHeart,其整體模型性能更好。
表1 TROIKA, DeepHeart, Deep PPG和LU_PPG 在IEEE數(shù)據(jù)集中12個對象子集的心率估計表現(xiàn)Table 1 Performance comparison of TROIKA, DeepHeart, Deep PPG and LU-PPG on 12 records
表2 兩種模型性能對比Table 2 Comparison of the performance of the two algorithm models
為了更加直觀地觀察模型提取心率信息的性能,將真實的心率值與原PPG信號和模型預(yù)測的心率信息的心率估計值進(jìn)行比較,并計算真實心率值與心率估計值的Pearson相關(guān)系數(shù)。
圖9及圖10分別為LU_PPG方法和原PPG信號在IEEE數(shù)據(jù)集S7、S10的心率估計圖。這是LU_PPG方法在IEEE數(shù)據(jù)集心率估計誤差最小和最大的情況。同時也與對應(yīng)的真實心率值進(jìn)行了對比??梢园l(fā)現(xiàn),S10原始PPG信號估計的心率值嚴(yán)重偏離真實心率值,可知該數(shù)據(jù)子集的噪聲干擾非常嚴(yán)重。然而本文方法所得到的心率值幾乎緊跟真實心率值的變化。從中可知,無論是噪聲干擾輕的數(shù)據(jù),還是噪聲干擾嚴(yán)重的數(shù)據(jù),本文方法均能跟蹤真實心率值的變化。
圖9 S7下的心率估計對比圖Fig.9 Heart rate estimation comparison on S7
圖10 S10下的心率估計對比圖Fig.10 Heart rate estimation comparison on S10
圖11為LU_PPG在IEEE數(shù)據(jù)上的心率估計的Pearson相關(guān)性,其中Pearson相關(guān)系數(shù)為0.984 2。圖12為LU_PPG在IEEE數(shù)據(jù)上的心率估計的誤差分布情況,從中可發(fā)現(xiàn)誤差分布絕大部分位于[-5,5]次/min的區(qū)間范圍,即平均絕對誤差低于5 次/min。
圖11 皮爾遜相關(guān)系數(shù)Fig.11 Pearson correlation coefficient
圖12 心率估計誤差分布Fig.12 Distribution of heart rate estimation error
LU_PPG心率估計方法結(jié)合了深度學(xué)習(xí)與頻譜分析,同時將LSTM與經(jīng)典Unet網(wǎng)絡(luò)相結(jié)合并創(chuàng)造性地應(yīng)用在心率信息的提取上。利用IEEE SPC 2015公共數(shù)據(jù)集進(jìn)行實驗,以單通道的PPG信號為訓(xùn)練集,以心電信號的轉(zhuǎn)換形式類正弦信號為標(biāo)簽,使用LSTM_Unet模型進(jìn)行訓(xùn)練并擬合出類PPG信號,最后通過頻譜分析得到心率值。實驗結(jié)果表明,LU_PPG方法在公共數(shù)據(jù)集的大多數(shù)記錄都優(yōu)于經(jīng)典方法TROKIA和深度學(xué)習(xí)方法Deep PPG。這表明該算法在人體心率估計的有效性以及在健身活動中的實用性。
盡管已經(jīng)取得不錯的效果,但仍存在以下不足。
(1)后續(xù)將引入遷移學(xué)習(xí),由于所利用的數(shù)據(jù)集現(xiàn)實環(huán)境有限,模型的泛化能力不強(qiáng)。因此,包含的后續(xù)將各種環(huán)境下所采集到的手腕數(shù)據(jù)送入訓(xùn)練好的模型并對其進(jìn)行微調(diào),以得到一個泛化能力更強(qiáng)的深度學(xué)習(xí)模型。
(2)由于手腕部位的PPG所受到的噪聲干擾非常嚴(yán)重,后續(xù)將尋求噪聲干擾影響更小的部位(如耳垂、指尖等部位),以獲得更高準(zhǔn)確率的心率估計。
(3)由于所提出的神經(jīng)網(wǎng)絡(luò)模型所占內(nèi)存小,僅1.59M,后續(xù)將嘗試?yán)们度胧紸I測量心率。