基于小波降噪与ResNet分类网络的异常电子蜂鸣音识别系统设计

2022-12-20 07:57温益凯富雅琼
计量学报 2022年11期
关键词:波包鸣音时频

温益凯, 陈 乐, 富雅琼

(中国计量大学 机电工程学院, 杭州 浙江 310018)

1 引 言

电子产品通常使用电子蜂鸣音作为报警提示功能。蜂鸣器凭借其结构简单,造价低廉等特点被广泛应用于电子表、电子玩具、电子体温计等多种电子产品中作为报警通知模块。电子产品在出厂前通常会进行质量检测,蜂鸣提示音检测也是检测内容之一。以电子体温计为例,对蜂鸣提示功能的检测方式一般为在工厂现场环境下进行人工耳听检测,该方式易受背景噪声与人为主观影响,亟需改善。

2 声音识别算法

声音识别技术主要是针对不同声音的特征进行特征提取,对提出的特征通过数学模型算法进行模式匹配识别的技术[1]。蜂鸣器通常是在电路设计时就预先设定好固定的频率范围与相对响度[2]。音频信号分析可以分为时域、频域、倒谱域等分析方法,其中快速傅里叶变换(FFT)是最常用的时域分析方法。

将目标蜂鸣音信号进行FFT分析后,只需要在对应的频谱图中查看目标频率是否出现波峰即可识别。但是单纯的FFT方法仅能适用于不存在环境噪音或者目标声音特征大于环境噪音的情况。然而引文中提到蜂鸣音是在工厂环境下进行检测的,但工厂现场存在着各类设备与人工作业时所发出的噪声,该噪声分贝为70~90 dB,频围在0~10 kHz,具有频带宽、响度大等特点,影响蜂鸣音的检测结果。

工厂环境下电子产品出厂前质量检测环节中为了检测蜂鸣提示功能是否合格,采用小波降噪结合ResNet网络分类技术进行蜂鸣音检测。小波变换是一种信号的时频域分析方法,具备多分辨率分析特点,并且可以很好地表征信号在时频两域地局部特征[3,4]。利用小波变换可以得到蜂鸣音信号的时频特征图,再将时频图交由训练好的ResNet网络模型进行模式匹配识别,从而完成对蜂鸣音信号的在线检测。

如图1是蜂鸣音检测系统流程图,图2是检测系统界面图。

图1 蜂鸣音检测流程图Fig.1 Flow chart of beep detection

图2 蜂鸣音检测系统界面Fig.2 Ui interfacem of beep detection system

3 蜂鸣音检测系统设计

3.1 信号处理

小波(wavelet),是指在有限间隔内且平均值为零的一种函数。设Ψ(t)∈L2(R),其傅里叶变换为Ψ(ω),当满足条件式(1)时,则Ψ(t)被称为基本小波或母小波[5]。

(1)

母小波Ψ(t)经过平移和伸缩,就可以得到一个小波序列,式(2)为连续情况的小波序列。

(2)

式中:Ψa,b(t)为小波基函数;a为伸缩因子;b为位移因子。针对信号∀f(t)∈L2(R)的连续小波变换[6]为:

Wf(a,b)=〈f(t),Ψ(a,b)(t)〉

(3)

小波降噪中最常见的方式为阈值降噪,其原理主要是将带噪信号进行小波分解得到一系列小波系数,小波系数中包含信号的特征信息,通常有效信号的小波系数大于噪声的小波系数,此时选择适合的阈值,保留大于阈值的小波系数而抛弃小于阈值的,再将保留的系数进行小波重构,最终得到降噪后的信号[7,8]。降噪流程如图3所示。

图3 小波降噪流程图Fig.3 Flow chart of wavelet denoising

小波变换只对信号的低频部分做分解,而小波包不仅对信号的低频部分做分解,同样也分解高频部分。因此小波包具有更好的时频局部化特性。

针对蜂鸣音信号f(t),进行n层小波包分解,得到2n个子信号。假设小波包分解的低通、高通滤波系数分别为ak-2l,bk-2l,则n层小波包分解算法为:

(4)

(5)

图4 f1,f2信号小波系数方差值及二者方差偏差值Fig.4 Variance value of wavelet coefficients of f1,f2 signals and variance deviation value between f1,f2

已知某公司生产的DT-01B电子体温计蜂鸣音频率为6.1 kHz左右。将低噪声(50 dB左右)环境标记为H,设H背景音信号为f1,H下的蜂鸣音信号为f2。设置声卡采样频率为44.1 kHz,对f1与f2分别以demy小波基进行5层小波包分解,计算二者的小波系数方差,经过对比得知第43号节点的方差偏值最大,说明蜂鸣音信号特征主要集中在第43号节点系数中(图4),则结合该节点进行小波包重构得到降噪后的信号f3。

对信号f3进行小波变换得到信号时频特征图p(图5)。

图5 小波包尺度比对法降噪后信号时频图Fig.5 Time-frequency diagram of signal which denoised by wavelet packet scale comparison method

3.2 信号识别

Kaiming He提出的深度残差网络(deep residual networks,ResNet),首次在网络结构中引入了残差单元,优化了传统神经网络深层堆叠所造成的梯度爆炸与退化问题[10,11]。如图6所示为残差单元示意图(图中右侧分支称为shortcut连接)。

图6 残差单元示意图Fig.6 Schematic diagram of residual block

ResNet网络将残差单元映射的每组网络设为一个构造块,构造块的定义如下:

y=F(x,{Wi})+x

(6)

式中:x,y分别为当前构造块的输入、输出向量;F(x,{Wi})是需要训练的残差映射,并且式(6)中的x与F维度需相同[12,13]。如果维度不同则需要在shortcut连接中增加线性映射来实现维度匹配:

y=F(x,{Wi})+Wsx

(7)

本文采用的ResNet34结构为常见的ResNet网络结构之一,由33个卷积层与1个全连接层构成。其网络参数如表1所示。

前面提到,将预处理后的蜂鸣音信号进行小波变换从而得到其时频图,则该图即为ResNet34网络的输入向量。以5 s采样时间,5个采样对象的混合信号(蜂鸣音与噪音)为例,进行信号降噪与小波变换处理,信号处理过程如图7。

表1 ResNet34网络参数Tab.1 Network parameters of ResNet34

图7 信号处理Fig.7 Signal process

由小波特性可知,信号携带的能量与其小波系数成正比关系,映射至时频图中则决定相关区域颜色深浅。此外,结合目标蜂鸣音的时频区间便可以判断该蜂鸣音是否合格。结果分类共有25=32种,例如“00100”为第3号蜂鸣音合格,其余不合格(从左到右1~5号排序,0为不合格,1为合格)。

深度学习模型若要具备良好的分类能力,往往需经大量的数据集训练,这个过程需要耗费大量的时间与内存资源,迁移学习(transfer learing)概念的提出正是为了解决这个问题[14]。迁移学习流程通常是将模型置于包含足够数据量的源域中预训练,然后在数据量较少的目标域中微调参数,从而达到降低训练量、提高模型泛化能力的目的[15]。

本文在windows10操作系统下使用Pycharm开发平台,采用Pytorch深度学习框架训练模型,并利用GPU模块优化模型训练效率。共采集3 200组蜂鸣音数据作为数据集,每种分类情况为100组数据,其中采用随机采样方式分割数据集,比例为70%作为训练集,30%作为验证集。另外采集不同工厂噪音背景下的蜂鸣音数据共640组,每种分类情况20组,作为测试集。选择ImageNet数据集下的ResNet34模型实现迁移学习训练,将预训练模型载入,利用上文所述数据集进行训练,选择冻结全连接层前的网络层参数权重,仅训练全连接层参数,将全连接层输出维度修改为32通道并通过Softmax层,设置交叉熵(cross entropy)损失函数以及Adam梯度优化方式训练模型,并设置学习率为0.0001,batchSize为32,epoch为200,模型训练如图8所示。

图8 ResNet34模型训练损失函数与准确率Fig.8 The loss function and accuracy of ResNet34 model training

由图8可知,准确率最终仅收敛在0.3左右,而损失函数收敛在1.7左右,说明模型训练效果十分差。进一步分析发现32种分类太多,并且每种分类非常类似,且每种分类仅100张造成数据集不足,因此模型在训练中受到的干扰非常大。其实可以发现,32种分类实质上是每个时间区域的二分类即合格或不合格,那么可以选择将5 s的时频图进行图像分割,得到5份1 s的时频图,再将分割后的图输入模型,这样训练过程中的干扰项则会大大降低。此外,针对二分类来说,ResNet34的模型深度过大,容易造成训练过拟合,因此将模型改为ResNet18网络,网络参数如表2。

设置学习率0.0001,batchSize为4,epoch为100,训练过程如图9,可以发现随着epoch次数的增加,模型的损失函数在下降,准确率在上升,最终验证集准确率收敛于93.91%。

表2 ResNet18网络参数Tab.2 Network parameters of ResNet18

图9 ResNet18模型训练损失函数与准确率Fig.9 The loss function and accuracy of ResNet18 model training

3.3 其他功能

PyQt是Qt专门为Python提供的GUI拓展,由一系列Python模块组成。本文选择在Pycharm开发平台基础上,辅以QtDesig-ner、PyUIC拓展工具完成整套检测系统的开发设计[16]。分别使用PyWavelet模块实现信号的小波变换预处理,torch及torchvision模块实现深度学习,matplotlib模块实现信号特征的显示。本系统其他功能如下。

3.3.1 数据通讯与信号采集设置

上下位机间的数据通讯采用的是串口通信方式,其中波特率、停止位、数据位等串口参数皆可从QcomBox(组合框)中选择预设值进行设置。数据传输间的通信协议采用自定义协议,当且仅当每次传输的数据满足如下格式才记为正确数据。自定义协议格式为:帧头+传输数据+crc校验码+帧尾。

声音的采集是基于PC声卡与收音麦克风实现。声音采集参数设置包含采样频率、采样通道、采样时间等。

检测流程的开启可以选择人工点击“开始采样”按钮,或者当串口接收到正确的启动指令实现自动检测。

3.3.2 结果显示与数据持久化

当获取到声音信号识别结果后,首先会在结果显示区域显示当前识别对象的检测批次以及各对象的识别结果。其次会进行检测结果持久化操作即检测结果会写入本地MySql数据库,所存信息包含该对象的编号、批次、检测结果、检测时间。此外,本系统可以查询识别对象的合格率(当日开始检测时间至查询时间),也可以根据批次号查询结果并列表显示,并具备数据(今日数据或全部数据)导出excel功能。

4 实验结果

在测试集中通过式(8)、式(9)、式(10)分别计算每种分类结果的召回率DRecall、精确率DPrecision与准确率DAccuracy:

(8)

(9)

(10)

式中:TP为真正例(TruePositive);FN为假反例(FalseNegative);FP为假正例(FalsePositive);TN为真反例(TrueNegative)。经计算测试集召回率为95.2%,精确率为95.2%,准确率为97.5%,说明模型分类效果良好。

5 结 论

针对工厂背景噪声环境下的蜂鸣音检测问题,提出一种基于小波降噪和ResNet18网络分类模型的检测识别方法,该方法效果良好,准确率达97.5%;并且采用PyQt5编写检测平台Ui,该平台操作简单、功能丰富,具有良好的人机交互体验。

猜你喜欢
波包鸣音时频
肠鸣音监测仪在临床诊断学教学中的应用
基于支持向量机和小波包变换的EOG信号睡眠分期
基于小波包分解和K最近邻算法的轴承故障诊断方法
肚子为什么会“咕噜”响?
肚子“唱歌”,可能是消化不良
分辨肚子咕噜声
基于稀疏时频分解的空中目标微动特征分析
基于小波包变换的乐音时—频综合分析程序的开发
基于时频分析的逆合成孔径雷达成像技术
双线性时频分布交叉项提取及损伤识别应用