面向可穿戴式的基于LSTM神经网络的智能心音异常诊断芯片

2024-03-15 09:22周维新高肇岗肖宛昂
电子与信息学报 2024年2期
关键词:听诊器心音诊断模型

周维新 高肇岗 肖宛昂*

①(中国科学院半导体研究所 北京 100083)

②(中国科学院大学集成电路学院 北京 100049)

③(中国农业大学 北京 100083)

1 引言

心血管疾病是全球发病率和死亡率最高的疾病之一。据世界卫生组织统计的2019年的数据,约有890万人死于心血管疾病,占全球死亡总数的16%[1]。通过早期的疾病诊断是规避病变潜在风险的有效措施之一,它有助于发现诸如心律失常、心力衰竭等多种心脏疾病。心音作为人体重要的生理信号,包含了与心血管疾病相关的多种生理信息。心音听诊在非侵入性检查和初步诊断心脏类疾病中发挥了关键的作用,已经成为一种常用的筛查诊断技术[2]。然而,心音听诊要求医生具备深厚的医学知识和临床经验。根据统计数据显示,听诊作为诊断手段,在不同医生水平下的准确率范围从20%到80%不等[3,4]。这意味着人工诊断很少能达到绝对的精确性,存在误诊和漏诊的潜在风险。

近年来,随着人工智能技术的迅速发展,出现了利用计算机分析心音以实现高准确率的听诊诊断方法。目前已有许多机器学习算法和深度学习算法应用于心音异常诊断领域。传统的机器学习算法主要采用了Artificial Neural Network (ANN)[5],Gaussian Mixture Model (GMM)[6], Random Forest (RF)[7], Support Vector Machine (SVM)[8]

以及Hidden Markov Model (HMM)[9]来对提取的心音特征进行异常诊断。在深度学习领域,Convolutional Neural Networks (CNN)[10], Convolutional Recurrent Neural Network (CRNN)[11], Recurrent Neural Network (RNN)[12], LSTM[13]等也被用于心音信号的异常诊断。上述算法的研究重点在于提高心音的诊断准确率,但往往忽略了模型的参数量与计算量,也没有考虑心音诊断模型与听诊设备的硬件实现及部署。随后,国内外有学者开始研究心音诊断系统的实现与部署。首先,数字听诊器听被研发,包括了驻极体电容式传声器(Electret Condenser Microphone, ECM)、压电式麦克风(Piezoelectric Microphones, PM)、微机电系统麦克风(MicroElectroMechanical System Microphone,MEMSM)以及光纤麦克风(Fiber Optic Microphone,FOM)[14]。这类数字听诊器为可穿戴式听诊设备奠定了心音采集的基础,催生了便携式的心音采集设备的出现[15],例如,基于物联网技术与设备来实现自动心音诊断,但是该方案面临着高功耗、大体积的问题[16]。为应对低功耗的需求,LI等人[17]提出了一个易于硬件实现的轻量级网络结构,其模型参数仅为4.29k。尽管该方法在算法层面上有所探索,但最终并未实际进行硬件实现。

长期的心脏监测有利于动态观察身体状况随心脏类疾病的变化。针对这一需求,可穿戴式智能心音异常诊断设备具有潜在的重要作用,能够为心血管疾病的预防和诊断提供关键支持。为了满足可穿戴式心音异常诊断设备对高精度和低功耗的需求,本研究设计了一种面向可穿戴式的智能心音异常诊断芯片。本文的主要贡献如下:

(1)考虑到实际采集的心音数据与开源数据集的心音数据存在差异,搭建了一套基于听诊器的心音采集FPGA系统,以采集真实心音数据作为数据集,同时还融合了PhysioNet数据集。针对数据集之间的存在的数量不平衡问题,采用了数据增强的方法进行了数据集的扩展;

(2)设计了心音异常诊断系统,包括了心音的预处理、特征提取以及异常诊断的3个步骤;

(3)基于预训练模型设计了心音异常诊断芯片,进行了FPGA原型验证,以及完成了版图设计和MPW流片,评估了功耗与面积。

本文的其余部分内容如下:第2节介绍了心音采集系统与数据集,搭建了基于听诊器的心音采集FPGA系统,并采用了数据增强技术来扩展数据集;第3节介绍了心音异常诊断系统,包括了心音的预处理,特征提取以及异常诊断3个步骤,同时提出了预训练模型;第4节介绍了心音异常诊断芯片的设计,完成了版图设计与MPW,并进行了功耗与面积的评估;第5节总结全文。

2 心音采集系统与数据集

2.1 心音采集系统

心音异常诊断模型需要大量的心音数据来驱动训练。在模型的训练阶段,仅仅使用开源数据集进行训练可能导致训练出的模型无法完全适应实际生活环境中的心音异常诊断需求。为了提高心音诊断的效果,本文搭建了一套基于听诊器的心音采集FPGA系统,其硬件结构如图1所示,包括了AX7A200 FPGA, ETZ-2听诊器,AN831音频模块以及SD卡。

图1 基于听诊器的心音采集FPGA系统

基于听诊器的心音采集FPGA系统的工作流程如下:

(1)配置AN831-WM8731芯片的采样频率与位宽。WM8731_lut模块为以查找表形式实现的配置参数的模块,通过I2C协议读取WM8731_lut中的配置参数lut_data来配置AN831-WM8731的采样频率与位宽;

(2)当ETZ-2听诊器实时采集心音信号时,AN831-WM8731对ETZ-2听诊器传输的心音模拟信号进行采样,实现模拟信号到数字信号的转换。其中ETZ-2听诊器与AN831-WM8731采用3.5mm的耳机接口进行连接;

(3)AN831-WM8731与Audio_receiver模块之间通过I2S协议进行心音数字信号的传输。在这个过程中,Audio_receiver模块负责解析接收到的I2S协议信号,将其转化为16位的hs_data信号,并缓存到FIFO ( First Input First Output)中;

(4) 当FIFO非空时,SDCard_write模块会从FIFO中读取心音数字信号,并通过SPI协议将心音数字信号写入到SD卡中。通过这一过程,完成了心音的采集。

2.2 心音数据集

在基于前述的采集系统进行心音采集时,本文参考了PhysioNet数据集的心音采集方式与采集部位。在安静的环境中,对20名受试者进行了心音采集,包含了主动脉区、肺区、三尖瓣区以及二尖瓣区等不同的身体部位。共采集并记录了80段心音录音,每段录音长度约为60 s,采样率为2 kHz,16位量化。本文将这个数据集命名为 Heart Sound Chip Dataset(HSCDataset)。鉴于HSCDataset数据量相对不足,本文引入了PhysioNet开源数据集的数据以增加样本数量。PhysioNet数据集包含了3 240个心音录音,由正常心音和异常心音组成,采样率均为2 kHz,数据保存为单通道的wav格式。由于PhysioNet开源数据集与HSCDataset数据集的数据量不平衡,采用了数据增强技术来扩充HSCDataset数据集。分别采用了如下技术:

(1)时间拉伸:这种技术是一种在时间维度上的尺寸变换技术,在保持频率内容不变的情况下,增加或减少音频信号的采样率。通过时间拉伸,可以改变声音的速度而不影响其音调。这种技术在数据增强中可以用来扩展样本数据,以增加训练数据集的多样性和数量。本文采用了均匀分布的随机采样率,采样率为原采样率的±5%(可调);

(2) 添加噪声:过度拟合通常发生在神经网络倾向于容易学习可能无用的高频特征时,通过添加均值为零的高斯噪声可以有效地随机化高频特性,通过添加适量的高斯噪声可以有效缓解过度拟合。此外,还可以考虑添加手动采集的外部环境噪声,以更好地模拟实际心音采集的真实环境。通过这种方式,可以提高模型的鲁棒性,使其在现实环境中更具有应用价值。参考了文献[18],本文添加了为均值为0,标准差为1的高斯白噪声来进行数据增强,同时在另一份样本中添加了外部环境噪声;

(3)音量增强:这种技术是一种通过将音频信号乘以随机幅度因子来调整音量的方法,这可以帮助模型在某种程度上保持相对于输入音频的整体增益不变。本文的音量增益是通过基于平均音量和最大瞬时音量进行数据增强的方式实现的。这意味着对于每个心音样本,可以在平均音量和最大瞬时音量的基础上引入随机性来进行音量的调整,从而增加了样本的多样性,有助于提升模型的鲁棒性和泛化能力。

采用3种数据增强后的心音如图2所示。

图2 采用数据增强技术后的心音

3 心音异常诊断系统与预训练模型

3.1 心音异常诊断系统

心音的异常诊断系统包括了心音的预处理,特征提取以及异常诊断3个步骤,如图3所示。

图3 心音异常诊断系统

如图3(a),心音采集与预处理:在这一步骤中,采集到的心音信号会经过一系列处理以去除噪音。预处理可以包括滤波、去噪、标准化等操作,以确保心音信号质量良好且适于后续处理。考虑到不同设备采集心音时的采样率有所差异,首先要对所有的心音数据进行重采样。前述在采集心音的时候参考了PhysioNet数据集的采集方式,采用了相同的采样频率和位宽,因此无需进行重采样。在采集心音的时候,外部环境的噪声会对心音造成干扰,因此采用带通滤波器来过滤环境噪声,仅保留心音的频带。同时身体内部的其余体音也会对心音产生噪声干扰,如呼吸音和心音的频带相近,无法通过简单的滤波器进行过滤。因此通过将心音分割为第1心音S1、收缩期、第2心音S2、舒张期,并基于非负矩阵分解的方法进行心肺音的分离,其分离效果图如图4所示。

图4 心肺音分离效果图

如图3(b),心音特征提取:在心音信号预处理后,会从中提取与异常诊断相关的特征。这些特征可以是时域、频域或时频域的参数,能够反映心音信号的不同方面,如节律、频率分布等。通过特征提取,将原始信号转换为更具代表性和可分辨性的特征向量。梅尔频谱是一种广泛应用于语音识别的特征,在心音诊断中也有优异的效果,因此本文提取了梅尔频谱作为特征输入。梅尔频谱的计算步骤为:通过短时傅里叶变换将心音转到时频谱上,显示了不同频率的信号随时间变化的功率或响度,其计算公式为

其中x(m) 为 心音信号,w(m)为窗函数。

人类对频率的感知不是线性的,对低频信号的感知比对高频信号的感知更敏感。因此采用梅尔尺度来对频率进行非线性变换更有利于分析,其公式为

其中f是频率,单位Hz。

如图3(c),心音异常诊断:利用从特征提取得到的特征向量,心音异常诊断系统会应用机器学习或深度学习算法来进行异常诊断预测。将提取的梅尔频谱特征作为输入层,基于神经网络对从心音中提取的特征进行异常诊断。心音作为一种有循环周期的时序序列,其所承载的生理信息不仅仅与当前时刻有关,还与过去的时刻密切有关。LSTM是一种改进的RNN结构,在结构上有多个门函数,可以在较长的时间内保留重要的特征信息,其计算公式如式(3)所示。因此,采用LSTM神经网络有助于更充分地提取其时序信息,同时也能够实现按帧进行实时诊断。LSTM神经网络在心音异常诊断中表现出色,因其作为一种时序神经网络,能够捕捉到时序数据的复杂关系。这一优势在实际硬件实现时尤为突出,因为LSTM网络的计算结构能够在不同时刻进行重复使用,从而有效地减少资源消耗。综上所述,本文选择采用LSTM神经网络与全连接层构建心音异常诊断模型。这种结构的优势在于其能够处理心音时序数据、提取关键信息、实现实时性需求,并且在硬件实现阶段具备资源节约的优势。

其中it为输入门、ft为遗忘门、gt为当前时刻记忆细胞、ot为输出门,xt为提取后的特征,作为t时刻神经元的输入,ht为t时刻的输出,ct为当前神经元的状态,Wi∗和Wh∗分别为输入层和隐藏层的权重参数,bi∗和bh∗分别为输入层和隐藏层的偏置,⊙是哈达玛积。

3.2 预训练模型

基于前述的心音异常诊断模型,本文进行了训练,并将训练参数详细列在了表1中。通过综合考虑诊断性能和硬件资源,确定了最终的诊断模型结构,包括了一层64个隐藏神经元的LSTM和一层64个神经元的全连接层。完成训练后的模型在心音异常与正常诊断中取得了98.8%的诊断准确率,训练过程如图5所示。在完成对权重参数的8位量化后,最终模型的诊断准确率为98.6%。

表1 心音诊断模型训练参数

表2 不同方法的性能对比

图5 心音异常诊断模型训练过程

4 芯片设计与实现

4.1 芯片设计

基于前述的心音异常诊断模型,设计了心音异常诊断芯片,芯片的架构如图6所示。该芯片的主要构成包括主状态机模块(FSM_MAIN)、特征提取模块(FEATURE_EXTRACTION)、诊断模型模块(DIAGNOSTIC_MODEL)以及串口模块(Universal Asynchronous Receiver/Transmitter,UART)组成。这些模块采用Verilog HDL (Hardware Description Language)实现,模块之间以流水的形式进行工作,同时设计中采用了门控时钟、操作数隔离、状态机编码等低功耗技术。

图6 心音异常诊断芯片架构

芯片的工作流程如下:

(1)当芯片上电,通过片外提供的时钟信号(8.192 MHz)与复位信号来初始化芯片状态;

(2)通过串口,对诊断模型模块中的权重参数存储器进行参数配置。通过串口配置参数的方式,可以减少一个参数存储器的硬件资源开销;

(3)完成参数配置后,主控制模块发出诊断启动信号,此时芯片准备开始执行心音异常诊断任务;

(4)片外提供采样后的心音数据,特征提取模块以流水的方式执行短时傅里叶变换、基4-FFT和梅尔滤波来计算特征;

(5)在完成一帧的特征计算与缓存后,诊断模型模块以流水的方式执行LSTM、全连接层以及分类诊断的计算;

(6)最终,诊断的结果通过串口输出,将诊断结果传送给外部设备。

此外,芯片还支持通过串口方式对权重参数存储器进行配置,也可以通过串口来配置异常诊断模型中的神经元数量以及梅尔频谱特征点数目。这种设计方式增加了芯片的灵活性,使其能够适应不同应用场景下的性能和功耗需求。

基于上述描述,心音异常诊断芯片具备以下特性:

(1)实时心音异常诊断:诊断周期约5 s(诊断周期包含5~10个心音周期较为合理),每次诊断包含78帧,每帧持续64 ms;

(2)基于LSTM神经网络:基于LSTM与全连接层,隐藏神经元数目支持16, 32, 64可配置;

(3)可配置特征点:采用梅尔频谱作为特征,支持配置4, 8, 16, 32个特征点;

(4)异常诊断准确率:在训练和量化后,实现了98.6%的异常诊断准确率;

(5)时钟频率:8.192 MHz;

(6)工艺:SMIC 180 nm CMOS Mixed Signal;

(7)Die尺寸:3.06 mm × 2.45 mm;

(8)封装:采用LQFP64封装方式(后续可以去除测试管脚)。

诊断模型模块作为芯片中的核心部分,其电路设计的思路如下:

(1)LSTM的电路设计:基于前述LSTM的计算过程,完成了LSTM的电路设计,如图7(a)所示。在电路设计方面,以下是设计的要点:

图7 诊断模型的电路设计

(a)并行计算设计:在LSTM的设计中,采用了4个门单元的并行计算。为了在一个时钟周期内完成这4个门的计算,采用了宽度为32位的权重参数存储器。这个设计方案实现了在一个时钟周期内读取32位的权重参数,将其划分为对应的4个门的8位权重参数,并通过采用4个乘法器,实现了并行计算;

(b)激活函数的查找表实现:为了降低功耗和设计复杂度,LSTM中的激活函数Sigmoid和Tanh采用了查找表的方式来实现,每个查找表包含1 024个数据,每个数据的宽度为8位,该参数下的所实现的查找表精度损失在可接受范围内,同时硬件资源也在可接受范围内。

(c)隐藏状态和单元状态的缓存:由于LSTM中的隐藏状态和单元状态需要使用先前时刻的隐藏单元的数据进行计算,因此额外添加了存储器来进行数据缓存;

(d)输出至全连接层:在完成一轮计算后,存储器中的数据会被输出到全连接层进行进一步的计算。

(2)全连接层的电路设计:全连接层的电路设计如图7(b)所示,主要计算为权重参数与输入特征的乘累加计算。在全连接的设计中,同样也采用了4个乘法器并行计算来提高推断速度。

(3)分类器的电路设计:为了降低功耗,在对分类器模块进行硬件设计时并未采用算法层面使用的Softmax。本文是对心音进行正常或异常的二分类诊断,因此只需要比较全连接层的计算结果的大小。分类器模块的电路设计如图7(c)所示,采用了计数器与比较器来筛选出最大值,计数器的索引即为最终的诊断结果。

4.2 芯片FPGA验证

FPGA原型验证是利用可编程器件来模拟目标设计从而实现物理原型验证,以便在流片前最大限度地模拟真实的电路场景,降低芯片研发风险。本文的FPGA原型验证方案如图8所示,通过对比算法层面与硬件层面的诊断结果来对设计的电路进行验证。在算法层面,首先对预训练模型进行量化,然后利用量化后的模型对测试集进行诊断,并将诊断结果保存。在硬件层面,将预处理后的测试集预先存储在SD卡中,通过读取模块读取测试集并输入到待验证电路中进行诊断,诊断的结果通过串口打印到上位机,同时与算法层面的诊断结果进行对比。通过该验证方案完成了对心音异常诊断芯片的FPGA原型验证。FPGA综合后的硬件资源情况为:4 317个LUT、348个LUTRAM、1 074个FF、10.50个BRAM、35个DSP、118个IO、以及2个BUFG。

图8 FPGA原型验证方案

4.3 芯片版图与性能评估

为了对设计的智能心音异常诊断芯片进行功耗与面积的评估,基于SMIC 180 nm CMOS混合工艺完成了版图设计,版图如图9所示。后仿真的结果显示,在8.192MHz的主频下,Typical-Typical工艺角下,芯片的后仿真功耗为762 μW,面积为7.50 mm2(3.06 mm ×2.45 mm)。

图9 心音异常诊断芯片的版图

4.4 性能对比

于诊断心脏类疾病的准确率为97.7%;文献[19]提出了一种应用于心音诊断的方法,并取得了97.9的准确率。与文献[18]与文献[19]的工作相比较,本项目的在心音异常诊断中取得了98.6%的准确率,实现了更优的效果。文献[20]所提出的心音异常诊断模型实现了98.3%的准确率,这是因为参考文献[20]提出了一种CRNN的模型,模型规模十分庞大,而本文提出了一种轻量级的模型,模型规模小,同时在量化之后,会损失一些精度。目前尚未有心音异常诊断芯片设计相关的工作,因此在功耗与面积的对比上,选取了RNN硬件实现的相关工作。文献[21]提出了一种用于边缘侧推断的DNN神经网络加速器,基于TSMC 40 nm CMOS工艺进行了综合,综合后的仿真功耗为12.6 mW。文献[22]提出了一种RNN神经网络加速器,在65 nm CMOS工艺下,在400 MHz/1.2 V下功耗为155 mW,在20 MHz/0.8V下功耗为6.6 mW。与这两篇论文的工作相比较,本论文在设计时采用了流水线设计,采用了门控时钟,操作数隔离,状态机编码等低功耗技术,同时芯片的时钟频率为8.192 MHz,这几方面的因素使得本论文的工作在功耗方面具有优势。本文的设计后续会采用更先进的工艺进行流片,能够达到更低的功耗与更小的面积。

5 结束语

本文设计了面向可穿戴式的智能心音异常诊断芯片。构建了基于听诊器的心音采集FPGA系统与采用了数据增强技术扩展心音数据集,并设计了完整的心音异常诊断模型,包括心音的预处理、特征提取以及异常诊断。基于预训练模型,研发了智能心音异常诊断芯片,并通过FPGA原型验证与完成了版图。后仿真结果表明,智能心音异常诊断芯片的诊断准确率为98.6%,功耗为762 μW,面积为7.50 mm2,满足了可穿戴式心音异常诊断设备的高性能与低功耗的需求,为心血管疾病的早期预防和诊断提供了坚实的技术支持,有望在临床实践中产生积极影响。目前芯片已经投片,并计划采用LQFP64封装方式,期待回片测试的结果。后续智能心音异常诊断芯片会集成蓝牙等通信模块,实现便捷的无线数据传输功能。这将使得心音异常诊断的结果能够迅速而方便地传输至手机等设备,从而实现对心脏状况的长期监测。

猜你喜欢
听诊器心音诊断模型
CD4细胞计数联合IGRA预测AIDS/Ⅲ型TB影像诊断模型分析
杀死细菌与病毒—UV紫外线听诊器设计
听诊器
基于双阈值的心音快速分段算法及其应用研究
双声道心音能量熵比的提取与识别研究
听诊器
基于香农熵的心音信号检测方法研究
对于电站锅炉燃烧经济性诊断模型的研究
二维心音图特征提取与识别方法的研究
听诊器:小纸筒的大用处