基于GoogLeNet和ResNet的深度融合神经网络在脉搏波识别中的应用①

2019-10-18 06:40胡晓娟
计算机系统应用 2019年10期
关键词:运算量脉搏残差

张 选,胡晓娟

1(中国科学技术大学 纳米技术与纳米仿生学院,合肥 230026)

2(上海中医药大学 上海中医健康服务协同创新中心,上海 201203)

1 引言

由于计算机硬件性能的提高,深度学习及其应用成为目前研究的热点,包括图像、语音等的识别.脉诊是传统中医的重要组成部分,客观化研究尚未成熟,不同经验积累的医生对于疑难病症有不同的诊断结果.深度学习用于处理医学图像、脉搏波、心电图等,有助于提升识别准确率,将推动智慧医疗的发展.

深度神经网络(Deep Neural Networks,DNN)包括卷积神经网络(Convolutional Neural Networks,CNN)、递归神经网络(Recurrent Neural Networks,RNN)和强化学习(Reinforcement Learning,RL).CNN在图像识别领域应用广泛,LeCun[1]等提出LeNet,包括卷积层、池化层、Sigmoid激活函数,多层感知机是最后的分类器,奠定了CNN的基本组成.Krizhevsky[2]等提出AlexNet,使用线性修正单元(Rectified Linear Unit,ReLU)作为激活函数,解决了网络加深时的梯度弥散问题;使用Dropout随机忽略部分神经元,避免过拟合;使用重叠的最大池化和CUDA加速.Simonyan等[3]研究了CNN深度与性能的关系,提出VGGNet,反复堆叠3×3的卷积核和2×2的最大化池化层,构建了16~19层深的CNN,初步证明网络越深,效果越好;Szegedy等[4]提出Google Inception Net (GoogLeNet),是一种模块化的高效稀疏结构,参数量和运算量比之前的神经网络少,跨通道提取特征,有利于提取多样性特征.He等[5]提出残差神经网络(Residual Neural Networks,ResNet),网络深度可达上百层,解决了网络加深时性能先升后降的退化问题,使某些重要特征可直接传输到任一模块或层.这些经典网络是CNN发展的里程碑.

Liu等[6]提出基于GoogLeNet的时序自适应神经网络,由于Inception模块中多尺度的卷积核,可用于识别视频帧之间的相关性动作,运行时间较少且鲁棒性强,表明Inception模块能较好地处理时序型数据;Khosravi[7]等提出改进的Google Inception-V3,用于识别肺癌、膀胱癌、乳腺癌的病理图,准确率分别达到100%、92%、95%,对肿瘤异质性病理图的分类性能很好,能有效识别多种特征;Vesal等[8]在ImageNet 数据集上预训练Google Inception V3 模型,识别特定领域的特征,然后,利用迁移学习,用预训练好的Google Inception V3模型识别乳腺癌病理图,测试准确率达到97.08%,结合医学专家的分析,尝试应用于临床.GoogLeNet主要有以下优势:(1)由不同的卷积层和一个池化层组成的Inception模块,构建了一种高效的稀疏结构,有利于提取丰富的纹理特征;(2)常用多种大小的卷积核,比如 1×1、3×3、5×5、7×7 等,提取不同层次的高阶特征,增加特征提取的多样性;(3)模块中有不同的分支网络,增加了网络宽度,提高了网络的鲁棒性和表达能力,使其对不同分辨率的图像有更好的泛化能力.

随着网络层数增加,CNN的性能逐渐提升,当达到一定层数时,梯度发散问题会导致性能下降.ResNet采用残差模块(Residual Modules)或跳跃连接(Skip Connection)解决了此问题(如图1),使网络层数更多,简化了网络的学习目标,不同单元及层的信号可直接正向和反向传输给任一层,加速网络训练和参数调优.Zhang等[9]提出将中心损失函数用于ResNet,在手写体汉字集ICDAR-2013上取得97.03%的准确率;Lu等[10]提出深度耦合ResNet,由一个主干网络和两个分支网络组成,主干网络用于识别不同分别率的人脸照片,两个分支网络分别训练高分辨率图片和目标图片,将其转化成特定分辨率的耦合图片.

图1 残差模块

式中,xl是 输入,w是权重,b是 偏置,yl是两个分支的和,R是ReLU函数,F(xl)表示卷积运算,h(xl)是对输入的某种简单变换,xl+1是残差模块的最终输出.ReLU是一种激活函数,如式(4),有利于梯度传播和防止梯度弥散,以防梯度在多层卷积之后而大幅衰减[2].

当x>0时,R(x)=x,其导数为1;当x≤0时,R(x)=0,其导数为0.前向计算时,只需输入值x和阈值0,即可得到输出值;反向计算时,梯度为1或0,即梯度衰减较小或不变.与Sigmoid和Tanh等函数相比,计算简单,梯度衰减较小,有利于加深网络.

研究者也探索了整合两种网络优势,以构造融合网络.Habibzadeh等[11]提出预训练的Inception-ResNet,用于四种主要白细胞的分类,Inception-V1-ResNet获得99.84%的准确率;Szegedy等[12]在Inception结构中加入残差模块,发现残差模块可以加速Inception网络训练,但不能明显提高准确率;Zhuang等[13]将Google Inception V3和不同的长短期记忆网络(Long Short Term Memory,LSTM)融合,构造 ConvDLSTM,在人群图片集上统一训练模型,将时间和空间信息统一在一个神经网络结构中,有效检测人群信息.网络结构的融合,不是简单的组合,而需要改进网络结构和参数设置等.

基于DNN的脉搏波识别,研究较少.Hu等[14]用基本的CNN(9L)识别健康和亚健康的脉搏波信号,准确率达到72.31%;Zhang等[15]用9层的CNN识别弱脉、弦脉、深脉等12种脉搏,平均准确率达到93.49%;Zhou等[16]组合DNN和规则推理,在心电图数据集MIT-BIH-AR上检测室性早搏,准确率、特异性和灵敏度分别达到99.41%、99.54%和97.59%.Jin等[17]搭建由医生监控的云计算平台,该平台嵌入深度学习、规则推理和集成学习等,辅助诊断心脏疾病,输入病人的12导联ECG数据并给出诊断报告.有关脉搏波识别存在以下问题:(1)基于深度学习的脉搏波识别研究较少,只使用一些基本的神经网络,而性能更好的ResNet、深度融合神经网络、生成对抗网络(Generative Adversarial Networks,GAN)等并未使用;(2)DNN用于脉搏波识别,需要调整网络结构、卷积核大小和数量、学习策略、损失函数等,将影响识别的准确率;(3)目前已有的脉搏波识别算法,其准确率较低,难以达到临床应用的要求;(4)脉搏波数据集缺乏标准,研究者使用不同的数据集,难以评测算法的性能.

本文提出由改进的Inception 模块、残差模块和池化模块组成的深度融合神经网络Modified Inception-ResNet (MIRNet),包括 MIRNet1和 MIRNet2,其中MIRNet2的准确率达到87.84%,性能最优,分析了MIRNet2的结构和原理.本文首先介绍数据集预处理的方法;其次,分析Inception模块和残差模块融合的原因,构建IRNet和MIRNet融合网络,探究融合网络的原理;此外,介绍参数量和运算量、准确率等网络性能评测指标.随后,介绍实验和分析结果,最后是结论与展望.

2 方法

主要阐述数据集预处理、IRNet及MIRNet的结构、参数量、运算量计算及准确率等评价指标.实验流程,如图2所示,主要分为数据集预处理、算法识别和结果分析.

图2 脉搏波识别流程

2.1 数据集获取和预处理

2.1.1 数据集获取

数据来源为上海中医药大学研发的DDMX-100脉象仪采集的1125个健康对象和1158个亚健康对象的脉搏波,采样频率为200 Hz,持续40 s,共计8000个采样点.根据世界卫生组织公布的区分健康和亚健康的20项指标,以调查问卷形式询问被调查者,得分大于80分者为健康对象,反之为亚健康对象[14].

2.1.2 主波提取

基于香农能量和希尔伯特变换的脉搏波主波提取算法过程:脉搏波原始信号首先经过带通滤波去除高频噪声(工频噪声)和低频噪声(基线漂移);然后,进行幅值归一化;归一化后的脉搏波再进行香农能量变换,经过低通平滑滤波得到香农能量包络线;包络线在希尔伯特变换之后减去均值,滤除信号因突变产生的干扰,在此基础上,找出香农能量包络线的峰值点.对比和分析大量的香农能量包络线峰值点和只经过带通滤波的脉搏波峰值点,发现二者的出现时间相差0~0.25秒.因此,香农能量包络线的峰值点的位置前后约0.25秒的范围对应着脉搏波主波位置所在的时间范围.在此范围内,可以找到脉搏波真正的主波位置[14].

2.1.3 划分周期

为了保证每个分段至少包含一个完整的脉搏波周期,其周期是1.25秒,因此选择250个点作为一个周期,以主波位置为基准,向前取99个点,向后取150个点,即可作为一个周期,如图3所示[14].每条数据增加一列标签,0和1分别代表健康和亚健康.共计118 800条 1×250周期,加标签 0或 1后,变为 1×251,随机选择60%的数据为训练集,即71 280条,40%为测试集,也是评价集,即47 520条.

图3 脉搏波信号

由图3可知,(1)脉搏波信号是典型的时间序列数据,前后文相关性很大.(2)升支、主波、重波前波、降中峡等是脉搏波具有生理意义的重要特征,是脉诊的主要依据,比如升支反映了心室收缩、快速射血、主动脉血量增加,此时动脉血压升高,出现陡峭而平滑的脉搏波曲线,继而出现主波,主波峰值点对应收缩压,即收缩期的最高血压[14].但它们在各自周期内的波幅、出现时间(或出现位置点)等均不同.(3)存在噪声,比如在每个周期将结束时,有轻微波动.因此,需要针对脉搏波数据的自身特征,构建合适的网络结构.

2.1.4 制作hdf5数据集

Caffe作为深度学习的平台,处理脉搏波数据时,需将数据集转化成Caffe可读的hdf5格式的数据集.

2.2 IRNet及MIRNet的结构和原理

2.2.1 网络融合的原因

GoogLeNet中的Inception模块及其变种存在缺点:(1)基本的Inception模块,对网络性能提升的作用有限,其变种则过于复杂,参数量和运算量成为负担,过拟合现象频发;(2)网络宽度较宽,深度不足,宽度与深度失衡,参数运算效率低.ResNet中的残差模块亦有不足:(1)虽然加深了网络,提升了网络的分类准确率,但参数量和运算量却快速增长,比Inception模块及其变种增长快;(2)网络结构加深,但宽度较窄,深度与宽度失衡,特征提取的多样性比Inception模块差;(3)如果残差模块过于复杂,则跳跃连接带来的训练加速作用弱于参数量和运算量急剧增加带来的训练减速作用,易导致训练中断或梯度爆炸.在一定程度上,Inception模块和残差模块可以优势互补.

此外,根据脉搏波的特点:(1)残差模块中的跳跃连接,可认为是没有门机制的LSTM,门机制允许一部分数据经过简单特征提取后直接进入下一层;然而,LSTM结构不能加深,单个模块的性能优于简单的CNN,但其性能低于适当加深的ResNet和GoogLeNet.跳跃连接基本适合于脉搏波的第一个特点.(2)Inception模块各分支的特征提取,能获得多样的特征,此基本适合于脉搏波的第二个特征.

鉴于以上初步分析,提出由Inception模块和残差模块组成的融合网络Inception-ResNet (IRNet).

另外,研究了 CNN9、CNN16、VGGNet、ResNet及GoogLeNet等网络用于脉搏波识别.CNN9和CNN16,包含卷积层、池化层、全连接层及Dropout层,共计9层和16层,每个卷积层都有BatchNorm、Scale、ReLU等.VGGNet中池化层数量少于CNN16,但总层数相近.ResNet1 和ResNet2使用不同的残差模块,卷积核大小和数量也不同,ResNet1由残差模块res2(a,b)、res3(a,b)、res4(a,b)和 res5(a,b)组成;ResNet2 由残差模块res2(a,b,c)、res3(a,b,c,d)和res4(a,b,c,d,e)组成.GoogLeNet1、GoogLeNet2和GoogLeNet3分别由1、2、3个Inception模块组成.

2.2.2 IRNet结构

IRNet是由基本的Inception模块和残差模块构成,包括三个网络,依次命名为IRNet1、IRNet2和IRNet3,主要思路是构建Inception模块和残差模块融合的神经网络,经过实验,调整各模块的排列顺序、连接方式和模块中的组成单元,比如模块中的卷积层数量、池化层数量、卷积核大小、通道数量等.三个融合网络的共同点是:(1)网络中,很多卷积层都包括BatchNorm(BN)、ReLU(R)和Scale(S).BN是一种有效的正则化方法,加速大规模神经网络的训练,一般和Scale同时使用[18];(2)网络的起始部分,都用卷积核较大的卷积层,降低参数量和运算量,网络中的全连接层,都用到Dropout层,避免过拟合.

在实验中,当两个Inception模块直接相连时,网络的分类性能会下降;当三个Inception模块直接相连时,训练时会发生梯度爆炸.如果残差模块过于复杂,也会发生梯度爆炸.IRNet1由一个Inception模块(first Inception Module,IM1)和一个残差模块[res3(a,b,c,d)]构成;IRNet2由两个Inception模块(IM1和Second Inception Module,IM2)和一个残差模块[res3(a,b,c,d)]构成;IRNet3由两个Inception模块(IM1和IM2)和两个残差模块[res3(a,b,c,d)和res4(a,b,c)]构成.当第二个残差模块为res4(a,b,c,d,e)时,IRNet3训练发生中断;当继续增加Inception模块和残差模块数量,网络的分类性能会反而下降.残差模块res3(a,b,c,d)如图4所示,IM2_output、res3a等表示层或模块的名称,(1×4+2)表示卷积核是1×4和步长是2,256、512等表示输出通道数,1和0表示填充零和不填充零,R表示ReLU层,Eltwise/SUM表示特征拼接方式.IM1如图5所示,pool1、IM1_output、IM1_conv3_1等表示该层名称,8、16、32等表示通道数,Concat表示另一种特征拼接方式.Eltwise/SUM是在分辨率层面拼接,输入维度(batch_size,channel,w,h)必须相同,增加算法耗时;Concat在通道数(channel)层面拼接,计算相对简单.

图4 res3(a,b,c,d)的结构图.res4(a,b,c)和res3的结构相似,但 res4 不含在虚线框中的”res3d”,即,没有 res4d

图5 IM1,和IM2结构相似,区别在于卷积核大小和个数不同

在IRNet中,IRNet3有更好的分类性能,网络结构如图6,BN和S表示BatchNorm层和Scale层,fc7和fc8表示全连接层(fully-connected layer),drop表示Dropout层,随机丢弃50%的连接,IP表示全连接层的通道数,loss表示SoftmaxWithLoss 层.

图6 IRNet3的结构图

2.2.3 MIRNet的结构和原理

2.2.3.1 MIRNet结构

在实验中,IRNet3的识别准确率与ResNet2相近,但是ResNet2的参数量和运算量更大,其残差模块res2(a,b,c)、res3(a,b,c,d)和res4(a,b,c,d,e)是参数量和运算量急剧增长的主要因素.在IRNet3基础上,提出由改进的Inception模块、残差模块和池化模块组成的融合网络MIRNet,主要思路是:(1)根据脉搏波第一特点,残差模块的跳跃连接不可缺少,但是要降低模块复杂度,特征拼接方式由Eltwise/SUM改为Concat,弱化其带来的参数量和运算量增加等负作用.(2)根据脉搏波的第二特点,Inception模块应更丰富,增加模块中的分支,使用较小的卷积核,但是要保持高效的稀疏结构.特征拼接方式为Concat,增加更多的特征表示,保持相对较小的运算量.这些改进有助于提取不同阶的抽象特征,增强模块的表达能力.(3)根据脉搏波第三特点,在改进模块的分支网络中,最后一层是ReLU,可以认为是加入特征提取权重,随着网络的训练而自动调节各分支网络提取的特征;(4)取消单独使用的池化层,改为池化模块,源于(2)的分析,但和改进Inception模块不同的是,其减小了特征面,起到池化层的作用.

MIRNet主要有两个改进网络,MIRNet1和MIRNet2,MIRNet1主要作用是研究改进模块组成融合网络的可行性,MIRNet2是主要改进的融合网络.改进模块:(1)利用残差模块的原理,构造pool3/conv3,使池化层pool3和卷积层conv3并列为网络的两个分支;构造conv4_1~conv4_5等模块,精简原有的残差模块,拼接方式改为Concat,主要是减少参数量和运算量.(2)在改进的Inception模块(Modified Inception Modules,MIM1和MIM2)中,使用 1×1、1×2、1×3 等较小卷积核,有利于提取更精细的特征.1×1卷积核改变层间连接数量,对输出通道升维或降维,增加特征的非线性变换,提高网络的泛化能力,有侧重地保留不同层次的高阶特征[19];(3)池化模块(Reduction Modules,RM),改变以往使用单一池化层的方式,包含三个分支,一支是池化层,另外两支是卷积层,使特征面分别池化和卷积,减小特征面,保证提取特征的多样性.MIRNet1由MIM1和RM1组成,MIRNet2在MIRNet1可行的基础上增加MIM2和RM2.MIM2和RM2分别如图7和图8所示,RM1_concat、RM2_pool1、MIM2_conv3_3等表示该层的名称,连接方式为Concat.图9是性能更优的MIRNet2的结构.

2.2.3.2 MIRNet的原理

根据MIRNet的构造思路和网络结构,模块是网络的主要组成,均可抽象成由不同的特征提取过程组成的特征提取模块.

图7 MIM2,与MIM1相比,有两个分MIM2_conv3_2和MIM2_conv3_3,而MIM1只有一个分支MIM1_conv3_2,二者的卷积核大小和数量不同.

由式 (1)、(2)、(3)可得,在特征拼接时,去掉ReLU函数,即

h(xl)替换为卷积、ReLU等操作函数,即增加分支,可得

L表示某模块,xL表示某模块的输出,xl表示某模块的输入,R11和R12表示第1个分支中的两个卷积和ReLU操作,同理R21和R22表示第2个分支中的两个卷积和ReLU操作,w和b分别表示权重和偏置.

假设,某模块有n个分支,每个分支中有m个卷积和ReLU函数,则

反向传播时,损失函数S的导数,由链式求导原则得

由式(8)得:

MIRNet2模块的分支数量多为2、3、5个,比如pool3/conv3、conv4_1~conv4_5、RM2和 MIM2等,分支中的单元含1、2、3个卷积和ReLU等操作,模块深度适当.训练过程中,ReLU自动调节梯度衰减,当遇到脉搏波次要特征和噪声时,导数为0,梯度不变,损失函数未减小,继续寻找使损失函数减小的梯度下降路径;当遇到重要特征,导数为1,梯度减小,损失函数减小,准确率增大,学习到重要特征.弱化噪声和次要特征,使分支网络提取到重要特征.各改进模块对特征进行不同程度地变换,提取不同层次的高阶特征和前后文的相关性特征,保持较低的参数量和运算量.但是,模块中的分支也不应过多,网络宽度和深度应平衡.

2.3 参数量和运算量计算

网络中,池化层、BN、ReLU、Concat等参数量和运算量很小,相对于卷积层,可忽略不计.某卷积层的参数量P:

某卷积层的运算量OP:

嘉庆忧心不已。为了扭转这种局面,他煞费苦心,花了好几天时间,写成了一篇鸿文《宗室训》,发给每个宗室。和以前一样,皇帝的这篇教育文章不过是重复了一系列道德教条。这一教育运动的开展经历了很长时间,宗室风气竟无一点好转。嘉庆皇帝很奇怪,有一天特意召见散秩大臣、宗室中的奕颢、成秀和敬叙三人,问他们学习《宗室训》的心得。不想这三人瞠目结舌,居然不知道有学习《宗室训》一事,更没读过一个字!嘉庆大吃一惊,感觉“实出意想之外”。然而除了痛骂宗人府官员“丧尽天良”之外,他再也不知道该做什么了。

式中,C是该卷积层的通道数,C1、C2是上下层的通道数;K1、K2是卷积核大小,1表示一个偏置;W和H是特征面的宽和高.

由式(10)和式(11)可知,参数量取决于通道数量和卷积核大小;运算量取决于上下层的通道数量、卷积核大小和特征面大小.

2.4 性能评价

CNN的分类性能通过准确率(Accuracy,ACC)、特异性(Specificity,SP)、灵敏度(Sensitivity,SE)和约登指数(Youden’s index,γ)等评价.ACC表示算法识别的准确率,是算法分类性能的综合指标;SP表示算法检测出阴性样本(健康)的能力;SE表示算法检测出阳性样本(亚健康)的能力;γ表示算法避免失败的能力,其值越大表明算法避免失败的能力越强.定义和计算如下:

真阳性(True Positive,TP):算法检测正确的阳性样本数量;

真阴性(True Negative,TN):算法检测正确的阴性样本数量;

假阳性(False Positive,FP):算法检测错误的阳性样本数量;

假阴性(False Negative,FN):算法检测错误的阴性样本数量.

3 实验与结果分析

本节介绍了实验环境、网络参数和训练参数,重点阐述实验结果与分析等.

3.1 实验环境和参数设置

3.1.1 实验环境

实验环境如表1所示.

表1 实验环境

3.1.2 参数设置

网络参数:(1)使用较小的卷积核,kernel_h为1,kernel_w为1、3、5等,步长stride_h为1,stride_w为1或2.随着卷积层数的增加,通道数和层间连接数也会增加.全连接层,一般不应超过1024个连接节点,否则会梯度爆炸.(2)网络中的卷积层:convolution_param 的 weight和 bias初始化为“msra”和“false”.BatchNorm层中,batch_norm_param {use_global_stats:false};Scale层中,scale_param{bias_term:false},初始化为false,方可在训练中不断优化batch_norm_param和scale_param的值,初始化为True,则不会优化.全连接层inner_product_param中weight_filler和bias_filler分别初始化为“Xavier”和“constant”.

训练参数:batch_size设为10,test_iter设为500,test_interval设为400,称为一代(epoch),Max_iter设为35 000,完成对测试集所有数据8~9次的测试,共87 代.经实验分析,学习策略 lr_policy 设为“inv”,gamma是10-3,power是0.75,base_lr是10-5,momentum是0.9,weight_decay是5×10-6,这组训练参数更适于改进后的网络.

式(16)中,lr是学习率,base_lr是初始学习率,gamma是lr的衰减系数,iter是迭代次数,power是指数.代入参数,简化可得:

学习率与迭代次数的图像如图10.

图10 学习率与迭代次数曲线

由图10可知,lr随iter减小,斜率先大后小,lr先快速减小,随后缓慢减小.Loss随着学习率的减少而减小,先快速找到极小值点,再缓慢减小学习率找到最小值点,即找到准确率最优点.经过实验,base_lr设为10-5,准确率随着迭代次数增大而增大,大于10-5时,准确率较低且难以找到最优解,此设置将更节省计算资源.

3.2 结果与分析

经过实验,各网络测试结果如表2所示,选取相似网络中性能较好的CNN9、CNN16、ResNet2、GoogLeNet2、IRNet3、MIRNet2等,绘制其训练过程中的测试准确率曲线,如图11、图12和图13所示.

CNN9:CNN(9L)是Hu提出的网络模型,用于脉搏波识别,但是其只使用了基本的卷积层、池化层和全连接层.CNN9相比于CNN(9L),每个卷积层中,包含BatchNorm、Scale和ReLU,并在全连接层中含有Dropout层,准确率提升了10.8%.其中,BatchNorm和Scale的主要作用是加速网络训练,Dropout 的主要作用是避免过拟合,ReLU有助于提升准确率.在训练过程中,ReLU通过调节梯度衰减,突出脉搏波重要特征、次要特征和噪声之间的差别,增强重要特征在分类中的影响,弱化次要特征和噪声,提高了脉搏波识别的准确率.在此过程中,未损害重要特征的完整性,只是增加对重要特征的高阶变换,使其在高维空间线性可分.

表2 各网络的分类性能

图11 CNN9、CNN16、IRNet3和MIRNet2测试准确率曲线

图12 ResNet2、GoogLeNet2和IRNet3测试准确率曲线

CNN16和VGGNet:相比于CNN9,CNN16结构更深,准确率提高了1.83%,而VGGNet仅提升了0.2%.CNN16比VGGNet的准确率高出1.63%,γ高出7.9%,避免失败的能力提高.图11所示,训练过程中,CNN9比CNN16更快达到稳定,加深网络使训练速度减小,但对网络分类性能的提升作用明显.CNN16有更多的通道数、更小的卷积核,网络结构和参数设置也优于VGGNet.

图13 ResNet2、GoogLeNet2和MIRNet2测试准确率曲线

ResNet:相比于CNN16,ResNet1由4个简单的残差模块组成,网络层数更深,准确率高出0.59%,γ高出0.84%.相比于ResNet1,ResNet2由3个复杂的残差模块组成,跳跃连接的作用更明显,加深网络,并未使网络臃肿,准确率高出1.44%,γ高出3.81%,算法避免失败的能力更高,对阴性样本和阳性样本的测试性能更好.但是,在实验中,继续增加残差模块,使网络更深,则导致网络训练中断.

GoogLeNet:3个改进网络,分别是GoogLeNet1、GoogLeNet2和GoogLeNet3,依次使用了1、2、3个Inception模块.表2中,GoogLeNet1和GoogLeNet3的准确率都低于CNN16,仅GoogLeNet2的准确率高于CNN16,对比图11和图12,GoogLeNet2准确率达到稳定的时间快于CNN16,表明在网络深度接近时,加宽能改善网络性能.由表2和图12可知,ResNet1和ResNet2的准确率都高于GoogLeNet2,尤其是ResNet2比GoogLeNet2高出1.52%,但其准确率达到稳定状态的速度慢于GoogLeNet2.ResNet2的网络结构更深,残差模块的作用更明显,加深比加宽对网络性能的提升作用更明显.当两个以上的Inception模块直接相连时,对脉搏波的分类准确率反而下降.

IRNet:相比于ResNet1和GoogLeNet2,IRNet1和IRNet2的分类性能更优,表明网络融合可以吸收各网络的优势.IRNet之间,IRNet3最优,准确率是86.98%,接近ResNet2的准确率,但γ高出了0.97%,避免识别失败的能力较好.图12中,对比ResNet2、GoogLeNet2和IRNet3,ResNet2是三者中最深且复杂的,准确率达到稳定状态的时间较长;GoogLeNet2的结构相对简单,特征提取效果在开始时优于ResNet2,但稳定后的准确率低于ResNet2;IRNet3,较快达到稳定的准确率,得益于Inception模块的高效稀疏结构,减少了参数量和运算量,保证了特征提取的多样性.如表3所示,res3(a,b,c,d)和res4(a,b,c)是参数量和运算量增加的主要模块.二者在稳定状态的准确率接近,但IRNet3对样本的测试准确率较稳定,提高了融合网络的鲁棒性.当继续增加Inception 模块和残差模块时,训练发生中断.

表3 IRNet3的参数量和运算量

MIRNet:主要有两个改进网络MIRNet1和MIRNet2.如表3、表4、图14和图15所示,IRNet3前4个层或模块的参数量和运算量分别是2096个和13.1235 MFLOPs,MIRNet2前4个层或模块的参数量和运算量分别是3136个和14.9935 MFLOPs,均大于IRNet3,是因为MIRNet2使用的卷积核比IRNet3更大,这使得MIRNet2后面的层或模块的输入特征面减小,为网络总参数量和总运算量降低奠定了基础.MIRNet2的总参数量和总运算量分别是IRNet3的0.483倍和0.230倍,残差模块是IRNet3参数量和运算量增大的主要原因.然而,这并未影响网络的分类性能,如图11所示,在训练起始阶段,MIRNet2的准确率上升快于IRNet3,归因于改进模块pool3/conv3和conv4_1~conv4_5等极大地减少了参数量和运算量;在整个训练过程中,MIRNet2的准确率高于IRNet3,只在部分区域接近,得益于改进的Inception模块(MIM1和MIM2)及池化模块(RM1和RM2).表2中,MIRNet2的准确率是87.84%,分别比IRNet3和ResNet2高出0.86%和0.87%,γ分别比IRNet3和ResNet2高出1.01%和1.98%,算法避免失败的能力有所提高,测试性能更加稳定.综合分析图11和图13,MIRNet2的准确率优于ResNet2和GoogLeNet2,表明改进的融合网络比使用单一核心模块的网络性能更优;MIRNet2的准确率高于IRNet3,表明改进模块对提升融合网络的性能很重要,网络融合不能仅借鉴原有的残差模块和Inception模块,需要改进核心模块、网络结构等,否则并不能充分发挥网络融合的优势.改进的Inception模块及池化模块,能提取不同层次的高阶特征和前后文的相关性特征,保持了较少的参数量和运算量;ReLU是改进模块中每个分支的最后一层,训练中自动调节梯度衰减,进而影响各分支网络的特征提取,增加对特征的高阶变换,而不损害重要特征的完整性,使更多在低维空间线性不可分的特征在高维空间线性可分.这些提高了融合网络对脉搏波的分类性能.

表4 MIRNet2的参数量和运算量

图14 各模块或层的参数量

4 结论与展望

为推动计算机辅助脉诊的临床应用,需要提高脉搏波识别的准确率.通过主波提取、划分周期和制作hdf5数据集,获得Caffe可处理的hdf5格式的脉搏波数据集.研究了 CNN9、CNN16、ResNet1、ResNet2、GoogLeNet1、GoogLeNet2、GoogLeNet 3及深度融合神经网络IRNet1、IRNet2、IRNet3和MIRNet1等,根据脉搏波数据特点和其他网络的实验分析,提出MIRNet2,其分类性能最优,准确率和约登指数分别是87.84%和75.90%,改造的残差模块pool3/conv3和conv4_1~conv4_5大幅减少了参数量和运算量,改进的Inception模块和池化模块,能提取不同层次的高阶特征和前后文的相关性特征,是MIRNet2性能提升的关键.当网络加深时,跳跃连接和层间稀疏连接有利于加速网络训练和避免梯度爆炸;当网络层数接近时,适当加宽网络,有利于提取更丰富的特征.但是,要防止过多的层间连接和多个复杂模块直接相连,否则将梯度爆炸或训练中断.MIRNet2的分类性能优于现有的脉搏波识别方法,相比于Hu提出的CNN(9L)的准确率和约登指数,分别高出15.53%和31.27%,有较大提升,将MIRNet2嵌入到云计算平台来识别健康和亚健康的脉搏波,这是一个可行的应用场景[17].然而,关于脉搏波标准数据集构建、GAN及其融合网络用于脉搏波识别等问题尚未解决,这些是未来需要深入研究的方向.

图15 各模块或层的运算量

猜你喜欢
运算量脉搏残差
基于残差-注意力和LSTM的心律失常心拍分类方法研究
融合上下文的残差门卷积实体抽取
基于残差学习的自适应无人机目标跟踪算法
基于深度卷积的残差三生网络研究与应用
用平面几何知识解平面解析几何题
用心感受狗狗的脉搏
减少运算量的途径
让抛物线动起来吧,为运算量“瘦身”
脉搏的检查及与脉搏异常相关的疾病