蒿敬波,陽廣賢,肖湘江,陶 陽
(1.南昌工學院 信息與人工智能學院,江西 南昌 330108;2.湖南超能機器人,湖南 長沙 410003;3.湖南省兒童醫院,湖南 長沙 410007)
兒童先天性心臟病(先心病)的早期篩查十分重要,但是對于醫療資源相對匱乏的偏遠地區來說實施起來卻比較困難。心音自動分析與模式識別技術[1-3]的發展,特別是深度學習方法的卓越表現,以及多種心音數據庫[4-5]的建立,為該問題的解決提供了有力支持。目前國外的3M、Eko和國內的奧圖無線等科技公司已經在心音的數字化聽診、無線數據傳輸和自動分析等方面進行了有效嘗試,展現出良好的應用前景和發展潛力。
典型的基于深度學習的心音分類過程如圖1所示,該范例從某種程度來講幾乎適用于所有的心音分類應用。受診者的心音波動可以通過電子聽診器采集并保存為數字化的心音記錄,再經過濾波、降采樣、截取、歸一化、分割等預處理操作,得到干凈規整的心音數據。針對心音數據,可以生成人工設計的心音特征表示,如時域、頻域或時頻域的特征向量、頻譜圖等。最后利用深度神經網絡提取深度語義特征,并根據提取到的特征進行心音分類。

圖1 基于深度學習的心音分類過程
心音的采集和預處理技術已經較為成熟,當前研究更多集中于心音分割與心音特征提取上面,而后者正是深度學習技術的優勢所在。心音分割旨在確定基礎心音(第1心音和第2心音)的位置,對心音特征提取方案的選擇具有重要影響。傳統的心音分類方案為保證特征提取質量,對心音分割具有較高要求。隨著深度學習技術的飛速發展和對應的特征提取能力的顯著提升,逐漸趨向于不進行心音分割,以簡化操作步驟并避免心音定位錯誤的不良影響。心音特征提取旨在從心音數據中獲取有效信息,形成具有充分表現能力的描述形式,供分類器使用并提升準確率。在分類器設計當中,傳統機器學習方法依賴人工的特征生成與特征選擇方式來確定最終分類所需特征,而深度學習方法則利用表示學習技術訓練深度學習模型,自動從較為原始或較高維度的數據中提取合適的特征。
該文以心音小波譜圖作為深度學習模型的輸入數據,充分展現了心音的深層時頻信息,同時基于最新的Transformer架構深度神經網絡,以取得最佳的組合效果。在模型的實際部署中利用了云端的強大算力,快速準確地完成異常心音識別任務,助力兒童先心病的早期篩查。
心音數據是一種非平穩時間序列,可根據實際情況采用時域、頻域或時頻分析方法進行心音數據建模,并由此決定適合提取的心音特征,具體示例如表1所示。

表1 心音特征示例
基于傳統機器學習的心音分類模型,如邏輯回歸、隨機森林和支持向量機等,通常需進行心音分割,采用壓縮的特征向量,有效信息損失較多;基于深度學習的心音分類模型,集深度特征提取與分類功能于一體,可以直接輸入原始心音數據或高分辨率的頻譜圖像,從而保留了絕大多數有效信息。
執行效率與分類準確率之間的平衡一直是基于深度學習的圖像分類應用所面臨的關鍵問題,為此發展出了一系列深度學習分類模型。
AlexNet[15]網絡是第一種為人熟知的卷積神經網絡(Convolutional Neural Network,CNN)分類模型,包含五個卷積層和三個全連接層,引入了隨機失活、修正線性單元、重疊池化和局部響應歸一化等新技術。VGG[16]網絡通過改用較小的3×3卷積核并同時增加網絡深度到最高19層,取得了明顯的性能提升。ResNet[17]網絡利用深度殘差結構克服了CNN的深度退化問題,使得網絡深度最大可以達到152層,并且引入批歸一化來加快訓練速度,獲得了里程碑式的分類效果。
近年來,Transformer模型架構在自然語言處理領域取得了巨大成功,并且開始逐漸向機器視覺領域轉移[18]。Transformer模型的兩個關鍵技術優勢在于自注意力[19]和預訓練機制,其中最為核心的自注意力機制對于機器視覺任務來說尤顯重要,特別是音頻信號這類時序數據的譜圖分析。
為了實現兼顧便利性、實時性和準確性的兒童異常心音識別,系統開發的總體流程如圖2所示。

圖2 總體開發流程
系統開發流程可以分為三個主要階段,第一階段是心音數據的處理,第二階段是心音分類模型的構建,第三階段是應用系統的部署。
臨床慣用心音聽診部位有五個,包括:二尖瓣區,心尖搏動最強點,位于左鎖骨中線內側第五肋間處;肺動脈瓣區,位于胸骨左緣第二肋間;主動脈瓣區,位于胸骨右緣第二肋間;主動脈瓣第二聽診區,位于胸骨左緣第三肋間;三尖瓣區,位于胸骨左緣第四、五肋間。不同聽診區適于不同心臟疾病的診斷,因此在進行心音采集時,由專業醫生判定對應的心音屬于正常還是異常心音,選定一個聽診部位,利用電子聽診器采集15~20秒左右心音信號并保存為MP3文件,形成心音數據集,按照5∶2∶3的大致比例分為訓練集、驗證集與測試集。
讀取訓練集和驗證集中的每個音頻文件,削平萬分之五的異常峰值。
使用3階巴特沃斯濾波器進行帶通濾波,截止頻率分別為20 Hz和500 Hz。巴特沃斯濾波器又稱最大平坦濾波器,其特點是通頻帶內的頻率響應曲線最大限度平坦,而在阻頻帶則逐漸下降為零。1階巴特沃斯濾波器的衰減率為每倍頻6分貝,2階巴特沃斯濾波器的衰減率為每倍頻12分貝,3階巴特沃斯濾波器的衰減率為每倍頻18分貝,依此類推。由于該濾波器設計和實現簡單,性能方面又沒有明顯缺限,因而在工程領域得到了廣泛應用。
使用Sinc插值方法進行數據重采樣,將心音數據的采樣率降為2 000。Sinc插值算法是一種從離散實信號構造時間連續帶限函數的方法,是信號處理領域常用的插值補間算法,廣泛用于振動信號及圖形信號的擬合。Sinc插值在頻域表現為一個只保留奈奎斯特頻率以下的理想低通濾波器,重建的信號更符合大部分的自然信號規律。
使用BayesShrink閾值估計方法進行小波去噪。基于離散小波變換的去噪方法可在降低噪聲的同時較好地保持信號細節,最常見的方法是閾值去噪法,而閾值估計是其中的關鍵步驟。目前常用的小波閾值包括VisuShrink閾值、SUREShrink閾值、GCV閾值和BayesShrink閾值等。BayesShrink閾值考慮了原始信號小波系數的廣義高斯分布的先驗信息,因此估計的閾值誤差更小。這里選用db6小波,不僅去噪效果良好,同時信號有效成分也可以得到最大限度的保留。
以8 000為幀長(對應4秒時長心音片段),4 000為步長,從心音數據居中位置得到5個數據幀。全部數據幀統一進行標準化處理,將數據取值限制在區間[-1,1]。
基于Hilbert變換進行心音包絡檢查。Hilbert變換是開展信號包絡分析的常用方法,首先將原始信號轉變為復解析信號,再將復信號的模作為信號包絡。對于每幀心音數據,由上式可以得到對應的Hilbert包絡。取每秒內包絡峰值(共4個)平均值的40%作為心跳閾值,以1 000為窗口長度進行移動,若窗口內最大值超過閾值則記為一次心跳,從而可以求得每幀數據對應的心跳數,進而可以推算出每分鐘的心率,而5個數據幀對應的結果平均后即可作為參考心率。若得到的參考心率小于30或大于240,則認為該數據有效,否則為無效數據,以避免劣質音頻數據的影響。
由每幀數據生成一個復Morlet小波譜圖。連續小波變換(Continuous Wavelet Transform,CWT)是刻畫心音等非平穩信號時頻特征的有力工具,其他經典的時頻分析工具通常基于短時傅里葉變換(Short-Time Fourier Transform,STFT),其時頻分析窗口大小固定,在時間分辨率與頻率分辨率上難以取得理想的平衡。小波分析將信號分解成一系列小波函數的疊加,這些小波函數是由一個母小波函數通過平移與尺度伸縮得來。利用小波函數既可以去逼近那些非穩態信號中尖銳變化的部分,也可以去逼近離散不連續具有局部特性的信號,從而更為真實地反映原信號在某一時間尺度上的變化。實際當中通常希望得到平滑連續的小波振幅,非正交小波函數較為合適,而要同時得到振幅和相位信息,還需選擇復數小波,因為復數小波具有虛部,可對相位進行描述。復Morlet小波兼具以上兩種特性,故這里選用復Morlet小波。
復Morlet小波的時域表達式如下所示:
(1)
其中,fb為帶寬參數,決定了波形振蕩的快慢程度,fc為中心頻率,決定了波形振蕩頻率。
針對某個模態分量fi修正后的小波的時間和頻率分辨率如下式所示,其中fs為采樣頻率。可通過調整fc與fb來改變Morlet小波變換的時頻分辨率。
這里參數選取fc=0.5,尺度規模為128,利用小波工具包PyWavelets所提供的CWT函數進行復Morlet小波變換,然后基于時間、頻率和小波系數模值來繪制每幀心音數據對應的等高線圖,可以得到RGB格式的小波譜圖。
心音分類模型的設計借鑒了經典的卷積神經網絡ResNet,同時為充分利用心音小波譜圖當中的上下文信息,特別引入了Transformer架構中的自注意力模塊[20](Self-Attention Block,SAB),其基本結構如圖3所示。給定一個輸入特征圖X,尺寸大小為H×W×C(分別對應高度、寬度和通道數),通過內嵌矩陣(WK,WQ,WV),通過1×1卷積計算得到鍵K=XWK、查詢Q=XWQ和值V=XWV,可以計算得到自注意力特征圖Y=(Softmax(QKT)V)W。

圖3 自注意力模塊
完整的分類模型網絡結構如表2所示,通過在經典的殘差卷積網絡組件中引入自注意力模塊SAB,可以有效提升模型的特征提取能力。分類模型的輸入圖像尺寸設定為256×256。

表2 分類模型網絡結構
為提供高可靠性快速響應的心音識別服務,基于XMLRPC協議和Redis隊列來實現并發心音識別服務,其整體架構如圖4所示。

圖4 并發心音識別服務架構
心音識別的客戶端與服務端之間通過XMLRPC協議進行數據通信與服務調用。XMLRPC是一個遠程過程調用的分布式計算協議,通過XML格式封裝函數調用,并使用HTTP協議作為傳送機制。心音識別服務中最耗時的部分在于心音數據的處理步驟,而分類模型的推理速度在GPU環境下不足數據處理耗時的十分之一。因此可將數據處理模塊獨立封裝,以多進程形式并發執行,并基于Redis隊列與分類模型推理模塊進行高速交互,可以顯著提高后臺服務的整體響應速度。此外,數據處理模塊的進程數量可以直接擴展,無需任何額外配置操作,部署十分方便。
訓練集和驗證集共包含醫院現場采集的400余個音頻文件,正常和異常心音各半。讀取包含的全部音頻文件,利用上述數據處理操作得到對應的小波譜圖形式的訓練和驗證數據集,效果如圖5所示。

圖5 心音小波譜圖
測試集由200個同樣在醫院現場采集的,與訓練和驗證集不存在交疊的音頻文件所組成,正常和異常心音各半。
訓練心音分類模型時,硬件環境為NVidia GTX 1070顯卡,軟件環境為Tensorflow GPU 2.3版,模型訓練時選取批處理尺寸為16,訓練策略為自適應動量估計法,損失函數為交叉熵,最大訓練輪數為1 000,輸入圖像無需數據增強(非自然圖像),選擇驗證準確率最高(100輪內未出現提升)的模型為最優分類模型。
對于心音分類模型,通常采用敏感性(Sensitivity,Se)、特異性(Specificity,Sp)和平均準確率(Mean Accuracy,MAcc)等指標進行性能評價。這里定義TP為預測為正(P)且預測正確(T)的數目,TN為預測為負(N)且預測正確(T)的數目,FP為預測為正(P)但預測錯誤(N)的數目,FN為預測為負(N)但預測錯誤(N)的數目。
Se表示預測為正且預測正確的數目占實際正樣本總數的比例,具體如下式所示:
(3)
Sp表示預測為負且預測正確的數目占實際負樣本總數的比例,具體如下式所示:

(4)
MAcc表示所有類別的平均準確率,對于二分類模型來說如下式所示:

(5)
測試結果表明,對于醫院現場環境下采集的心音數據測試集,Se為0.90,Sp為0.85,平均準確率達到87.5%。
利用PhysioNet 2016競賽的心音數據集與競賽結果[1],與文中識別方法進行了對比測試,測試結果如表3所示。

表3 對比測試結果
測試結果表明,文中識別方法不僅明顯優于已有方法,同時針對現場復雜環境下的心音識別任務,也能達到較為理想的結果。
該文提出了一種基于小波譜圖與深度神經網絡的心音識別方法,主要實現了基于心音包絡檢查的心音數據質量評估技術、心音數據的復Morlet小波譜圖生成技術、基于Transformer架構的深度學習分類模型構建技術和基于XMLRPC協議與Redis隊列的并發心音識別服務的部署技術。具備運算資源占用較少、模型迭代能力強、服務響應時間短、可擴展性好等顯著優點。基于該方法的應用系統已準備部署到兒童晨檢機器人產品上,從而真正實現應用落地。在后續研究當中,考慮心音數據采集方案的進一步改進和心音分類模型的繼續優化,以便盡早實現兒童先心病的智能化早期篩查。