蒿敬波,陽廣賢,肖湘江,陶 陽
(1.南昌工學(xué)院 信息與人工智能學(xué)院,江西 南昌 330108;2.湖南超能機器人,湖南 長沙 410003;3.湖南省兒童醫(yī)院,湖南 長沙 410007)
兒童先天性心臟病(先心病)的早期篩查十分重要,但是對于醫(yī)療資源相對匱乏的偏遠(yuǎn)地區(qū)來說實施起來卻比較困難。心音自動分析與模式識別技術(shù)[1-3]的發(fā)展,特別是深度學(xué)習(xí)方法的卓越表現(xiàn),以及多種心音數(shù)據(jù)庫[4-5]的建立,為該問題的解決提供了有力支持。目前國外的3M、Eko和國內(nèi)的奧圖無線等科技公司已經(jīng)在心音的數(shù)字化聽診、無線數(shù)據(jù)傳輸和自動分析等方面進(jìn)行了有效嘗試,展現(xiàn)出良好的應(yīng)用前景和發(fā)展?jié)摿Α?/p>
典型的基于深度學(xué)習(xí)的心音分類過程如圖1所示,該范例從某種程度來講幾乎適用于所有的心音分類應(yīng)用。受診者的心音波動可以通過電子聽診器采集并保存為數(shù)字化的心音記錄,再經(jīng)過濾波、降采樣、截取、歸一化、分割等預(yù)處理操作,得到干凈規(guī)整的心音數(shù)據(jù)。針對心音數(shù)據(jù),可以生成人工設(shè)計的心音特征表示,如時域、頻域或時頻域的特征向量、頻譜圖等。最后利用深度神經(jīng)網(wǎng)絡(luò)提取深度語義特征,并根據(jù)提取到的特征進(jìn)行心音分類。
圖1 基于深度學(xué)習(xí)的心音分類過程
心音的采集和預(yù)處理技術(shù)已經(jīng)較為成熟,當(dāng)前研究更多集中于心音分割與心音特征提取上面,而后者正是深度學(xué)習(xí)技術(shù)的優(yōu)勢所在。心音分割旨在確定基礎(chǔ)心音(第1心音和第2心音)的位置,對心音特征提取方案的選擇具有重要影響。傳統(tǒng)的心音分類方案為保證特征提取質(zhì)量,對心音分割具有較高要求。隨著深度學(xué)習(xí)技術(shù)的飛速發(fā)展和對應(yīng)的特征提取能力的顯著提升,逐漸趨向于不進(jìn)行心音分割,以簡化操作步驟并避免心音定位錯誤的不良影響。心音特征提取旨在從心音數(shù)據(jù)中獲取有效信息,形成具有充分表現(xiàn)能力的描述形式,供分類器使用并提升準(zhǔn)確率。在分類器設(shè)計當(dāng)中,傳統(tǒng)機器學(xué)習(xí)方法依賴人工的特征生成與特征選擇方式來確定最終分類所需特征,而深度學(xué)習(xí)方法則利用表示學(xué)習(xí)技術(shù)訓(xùn)練深度學(xué)習(xí)模型,自動從較為原始或較高維度的數(shù)據(jù)中提取合適的特征。
該文以心音小波譜圖作為深度學(xué)習(xí)模型的輸入數(shù)據(jù),充分展現(xiàn)了心音的深層時頻信息,同時基于最新的Transformer架構(gòu)深度神經(jīng)網(wǎng)絡(luò),以取得最佳的組合效果。在模型的實際部署中利用了云端的強大算力,快速準(zhǔn)確地完成異常心音識別任務(wù),助力兒童先心病的早期篩查。
心音數(shù)據(jù)是一種非平穩(wěn)時間序列,可根據(jù)實際情況采用時域、頻域或時頻分析方法進(jìn)行心音數(shù)據(jù)建模,并由此決定適合提取的心音特征,具體示例如表1所示。
表1 心音特征示例
基于傳統(tǒng)機器學(xué)習(xí)的心音分類模型,如邏輯回歸、隨機森林和支持向量機等,通常需進(jìn)行心音分割,采用壓縮的特征向量,有效信息損失較多;基于深度學(xué)習(xí)的心音分類模型,集深度特征提取與分類功能于一體,可以直接輸入原始心音數(shù)據(jù)或高分辨率的頻譜圖像,從而保留了絕大多數(shù)有效信息。
執(zhí)行效率與分類準(zhǔn)確率之間的平衡一直是基于深度學(xué)習(xí)的圖像分類應(yīng)用所面臨的關(guān)鍵問題,為此發(fā)展出了一系列深度學(xué)習(xí)分類模型。
AlexNet[15]網(wǎng)絡(luò)是第一種為人熟知的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)分類模型,包含五個卷積層和三個全連接層,引入了隨機失活、修正線性單元、重疊池化和局部響應(yīng)歸一化等新技術(shù)。VGG[16]網(wǎng)絡(luò)通過改用較小的3×3卷積核并同時增加網(wǎng)絡(luò)深度到最高19層,取得了明顯的性能提升。ResNet[17]網(wǎng)絡(luò)利用深度殘差結(jié)構(gòu)克服了CNN的深度退化問題,使得網(wǎng)絡(luò)深度最大可以達(dá)到152層,并且引入批歸一化來加快訓(xùn)練速度,獲得了里程碑式的分類效果。
近年來,Transformer模型架構(gòu)在自然語言處理領(lǐng)域取得了巨大成功,并且開始逐漸向機器視覺領(lǐng)域轉(zhuǎn)移[18]。Transformer模型的兩個關(guān)鍵技術(shù)優(yōu)勢在于自注意力[19]和預(yù)訓(xùn)練機制,其中最為核心的自注意力機制對于機器視覺任務(wù)來說尤顯重要,特別是音頻信號這類時序數(shù)據(jù)的譜圖分析。
為了實現(xiàn)兼顧便利性、實時性和準(zhǔn)確性的兒童異常心音識別,系統(tǒng)開發(fā)的總體流程如圖2所示。
圖2 總體開發(fā)流程
系統(tǒng)開發(fā)流程可以分為三個主要階段,第一階段是心音數(shù)據(jù)的處理,第二階段是心音分類模型的構(gòu)建,第三階段是應(yīng)用系統(tǒng)的部署。
臨床慣用心音聽診部位有五個,包括:二尖瓣區(qū),心尖搏動最強點,位于左鎖骨中線內(nèi)側(cè)第五肋間處;肺動脈瓣區(qū),位于胸骨左緣第二肋間;主動脈瓣區(qū),位于胸骨右緣第二肋間;主動脈瓣第二聽診區(qū),位于胸骨左緣第三肋間;三尖瓣區(qū),位于胸骨左緣第四、五肋間。不同聽診區(qū)適于不同心臟疾病的診斷,因此在進(jìn)行心音采集時,由專業(yè)醫(yī)生判定對應(yīng)的心音屬于正常還是異常心音,選定一個聽診部位,利用電子聽診器采集15~20秒左右心音信號并保存為MP3文件,形成心音數(shù)據(jù)集,按照5∶2∶3的大致比例分為訓(xùn)練集、驗證集與測試集。
讀取訓(xùn)練集和驗證集中的每個音頻文件,削平萬分之五的異常峰值。
使用3階巴特沃斯濾波器進(jìn)行帶通濾波,截止頻率分別為20 Hz和500 Hz。巴特沃斯濾波器又稱最大平坦濾波器,其特點是通頻帶內(nèi)的頻率響應(yīng)曲線最大限度平坦,而在阻頻帶則逐漸下降為零。1階巴特沃斯濾波器的衰減率為每倍頻6分貝,2階巴特沃斯濾波器的衰減率為每倍頻12分貝,3階巴特沃斯濾波器的衰減率為每倍頻18分貝,依此類推。由于該濾波器設(shè)計和實現(xiàn)簡單,性能方面又沒有明顯缺限,因而在工程領(lǐng)域得到了廣泛應(yīng)用。
使用Sinc插值方法進(jìn)行數(shù)據(jù)重采樣,將心音數(shù)據(jù)的采樣率降為2 000。Sinc插值算法是一種從離散實信號構(gòu)造時間連續(xù)帶限函數(shù)的方法,是信號處理領(lǐng)域常用的插值補間算法,廣泛用于振動信號及圖形信號的擬合。Sinc插值在頻域表現(xiàn)為一個只保留奈奎斯特頻率以下的理想低通濾波器,重建的信號更符合大部分的自然信號規(guī)律。
使用BayesShrink閾值估計方法進(jìn)行小波去噪。基于離散小波變換的去噪方法可在降低噪聲的同時較好地保持信號細(xì)節(jié),最常見的方法是閾值去噪法,而閾值估計是其中的關(guān)鍵步驟。目前常用的小波閾值包括VisuShrink閾值、SUREShrink閾值、GCV閾值和BayesShrink閾值等。BayesShrink閾值考慮了原始信號小波系數(shù)的廣義高斯分布的先驗信息,因此估計的閾值誤差更小。這里選用db6小波,不僅去噪效果良好,同時信號有效成分也可以得到最大限度的保留。
以8 000為幀長(對應(yīng)4秒時長心音片段),4 000為步長,從心音數(shù)據(jù)居中位置得到5個數(shù)據(jù)幀。全部數(shù)據(jù)幀統(tǒng)一進(jìn)行標(biāo)準(zhǔn)化處理,將數(shù)據(jù)取值限制在區(qū)間[-1,1]。
基于Hilbert變換進(jìn)行心音包絡(luò)檢查。Hilbert變換是開展信號包絡(luò)分析的常用方法,首先將原始信號轉(zhuǎn)變?yōu)閺?fù)解析信號,再將復(fù)信號的模作為信號包絡(luò)。對于每幀心音數(shù)據(jù),由上式可以得到對應(yīng)的Hilbert包絡(luò)。取每秒內(nèi)包絡(luò)峰值(共4個)平均值的40%作為心跳閾值,以1 000為窗口長度進(jìn)行移動,若窗口內(nèi)最大值超過閾值則記為一次心跳,從而可以求得每幀數(shù)據(jù)對應(yīng)的心跳數(shù),進(jìn)而可以推算出每分鐘的心率,而5個數(shù)據(jù)幀對應(yīng)的結(jié)果平均后即可作為參考心率。若得到的參考心率小于30或大于240,則認(rèn)為該數(shù)據(jù)有效,否則為無效數(shù)據(jù),以避免劣質(zhì)音頻數(shù)據(jù)的影響。
由每幀數(shù)據(jù)生成一個復(fù)Morlet小波譜圖。連續(xù)小波變換(Continuous Wavelet Transform,CWT)是刻畫心音等非平穩(wěn)信號時頻特征的有力工具,其他經(jīng)典的時頻分析工具通?;诙虝r傅里葉變換(Short-Time Fourier Transform,STFT),其時頻分析窗口大小固定,在時間分辨率與頻率分辨率上難以取得理想的平衡。小波分析將信號分解成一系列小波函數(shù)的疊加,這些小波函數(shù)是由一個母小波函數(shù)通過平移與尺度伸縮得來。利用小波函數(shù)既可以去逼近那些非穩(wěn)態(tài)信號中尖銳變化的部分,也可以去逼近離散不連續(xù)具有局部特性的信號,從而更為真實地反映原信號在某一時間尺度上的變化。實際當(dāng)中通常希望得到平滑連續(xù)的小波振幅,非正交小波函數(shù)較為合適,而要同時得到振幅和相位信息,還需選擇復(fù)數(shù)小波,因為復(fù)數(shù)小波具有虛部,可對相位進(jìn)行描述。復(fù)Morlet小波兼具以上兩種特性,故這里選用復(fù)Morlet小波。
復(fù)Morlet小波的時域表達(dá)式如下所示:
(1)
其中,fb為帶寬參數(shù),決定了波形振蕩的快慢程度,fc為中心頻率,決定了波形振蕩頻率。
針對某個模態(tài)分量fi修正后的小波的時間和頻率分辨率如下式所示,其中fs為采樣頻率。可通過調(diào)整fc與fb來改變Morlet小波變換的時頻分辨率。
這里參數(shù)選取fc=0.5,尺度規(guī)模為128,利用小波工具包PyWavelets所提供的CWT函數(shù)進(jìn)行復(fù)Morlet小波變換,然后基于時間、頻率和小波系數(shù)模值來繪制每幀心音數(shù)據(jù)對應(yīng)的等高線圖,可以得到RGB格式的小波譜圖。
心音分類模型的設(shè)計借鑒了經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)ResNet,同時為充分利用心音小波譜圖當(dāng)中的上下文信息,特別引入了Transformer架構(gòu)中的自注意力模塊[20](Self-Attention Block,SAB),其基本結(jié)構(gòu)如圖3所示。給定一個輸入特征圖X,尺寸大小為H×W×C(分別對應(yīng)高度、寬度和通道數(shù)),通過內(nèi)嵌矩陣(WK,WQ,WV),通過1×1卷積計算得到鍵K=XWK、查詢Q=XWQ和值V=XWV,可以計算得到自注意力特征圖Y=(Softmax(QKT)V)W。
圖3 自注意力模塊
完整的分類模型網(wǎng)絡(luò)結(jié)構(gòu)如表2所示,通過在經(jīng)典的殘差卷積網(wǎng)絡(luò)組件中引入自注意力模塊SAB,可以有效提升模型的特征提取能力。分類模型的輸入圖像尺寸設(shè)定為256×256。
表2 分類模型網(wǎng)絡(luò)結(jié)構(gòu)
為提供高可靠性快速響應(yīng)的心音識別服務(wù),基于XMLRPC協(xié)議和Redis隊列來實現(xiàn)并發(fā)心音識別服務(wù),其整體架構(gòu)如圖4所示。
圖4 并發(fā)心音識別服務(wù)架構(gòu)
心音識別的客戶端與服務(wù)端之間通過XMLRPC協(xié)議進(jìn)行數(shù)據(jù)通信與服務(wù)調(diào)用。XMLRPC是一個遠(yuǎn)程過程調(diào)用的分布式計算協(xié)議,通過XML格式封裝函數(shù)調(diào)用,并使用HTTP協(xié)議作為傳送機制。心音識別服務(wù)中最耗時的部分在于心音數(shù)據(jù)的處理步驟,而分類模型的推理速度在GPU環(huán)境下不足數(shù)據(jù)處理耗時的十分之一。因此可將數(shù)據(jù)處理模塊獨立封裝,以多進(jìn)程形式并發(fā)執(zhí)行,并基于Redis隊列與分類模型推理模塊進(jìn)行高速交互,可以顯著提高后臺服務(wù)的整體響應(yīng)速度。此外,數(shù)據(jù)處理模塊的進(jìn)程數(shù)量可以直接擴展,無需任何額外配置操作,部署十分方便。
訓(xùn)練集和驗證集共包含醫(yī)院現(xiàn)場采集的400余個音頻文件,正常和異常心音各半。讀取包含的全部音頻文件,利用上述數(shù)據(jù)處理操作得到對應(yīng)的小波譜圖形式的訓(xùn)練和驗證數(shù)據(jù)集,效果如圖5所示。
圖5 心音小波譜圖
測試集由200個同樣在醫(yī)院現(xiàn)場采集的,與訓(xùn)練和驗證集不存在交疊的音頻文件所組成,正常和異常心音各半。
訓(xùn)練心音分類模型時,硬件環(huán)境為NVidia GTX 1070顯卡,軟件環(huán)境為Tensorflow GPU 2.3版,模型訓(xùn)練時選取批處理尺寸為16,訓(xùn)練策略為自適應(yīng)動量估計法,損失函數(shù)為交叉熵,最大訓(xùn)練輪數(shù)為1 000,輸入圖像無需數(shù)據(jù)增強(非自然圖像),選擇驗證準(zhǔn)確率最高(100輪內(nèi)未出現(xiàn)提升)的模型為最優(yōu)分類模型。
對于心音分類模型,通常采用敏感性(Sensitivity,Se)、特異性(Specificity,Sp)和平均準(zhǔn)確率(Mean Accuracy,MAcc)等指標(biāo)進(jìn)行性能評價。這里定義TP為預(yù)測為正(P)且預(yù)測正確(T)的數(shù)目,TN為預(yù)測為負(fù)(N)且預(yù)測正確(T)的數(shù)目,FP為預(yù)測為正(P)但預(yù)測錯誤(N)的數(shù)目,FN為預(yù)測為負(fù)(N)但預(yù)測錯誤(N)的數(shù)目。
Se表示預(yù)測為正且預(yù)測正確的數(shù)目占實際正樣本總數(shù)的比例,具體如下式所示:
(3)
Sp表示預(yù)測為負(fù)且預(yù)測正確的數(shù)目占實際負(fù)樣本總數(shù)的比例,具體如下式所示:
(4)
MAcc表示所有類別的平均準(zhǔn)確率,對于二分類模型來說如下式所示:
(5)
測試結(jié)果表明,對于醫(yī)院現(xiàn)場環(huán)境下采集的心音數(shù)據(jù)測試集,Se為0.90,Sp為0.85,平均準(zhǔn)確率達(dá)到87.5%。
利用PhysioNet 2016競賽的心音數(shù)據(jù)集與競賽結(jié)果[1],與文中識別方法進(jìn)行了對比測試,測試結(jié)果如表3所示。
表3 對比測試結(jié)果
測試結(jié)果表明,文中識別方法不僅明顯優(yōu)于已有方法,同時針對現(xiàn)場復(fù)雜環(huán)境下的心音識別任務(wù),也能達(dá)到較為理想的結(jié)果。
該文提出了一種基于小波譜圖與深度神經(jīng)網(wǎng)絡(luò)的心音識別方法,主要實現(xiàn)了基于心音包絡(luò)檢查的心音數(shù)據(jù)質(zhì)量評估技術(shù)、心音數(shù)據(jù)的復(fù)Morlet小波譜圖生成技術(shù)、基于Transformer架構(gòu)的深度學(xué)習(xí)分類模型構(gòu)建技術(shù)和基于XMLRPC協(xié)議與Redis隊列的并發(fā)心音識別服務(wù)的部署技術(shù)。具備運算資源占用較少、模型迭代能力強、服務(wù)響應(yīng)時間短、可擴展性好等顯著優(yōu)點?;谠摲椒ǖ膽?yīng)用系統(tǒng)已準(zhǔn)備部署到兒童晨檢機器人產(chǎn)品上,從而真正實現(xiàn)應(yīng)用落地。在后續(xù)研究當(dāng)中,考慮心音數(shù)據(jù)采集方案的進(jìn)一步改進(jìn)和心音分類模型的繼續(xù)優(yōu)化,以便盡早實現(xiàn)兒童先心病的智能化早期篩查。