1.一种基于神经网络与特征融合的改装车识别方法,其特征在于,包括以下步骤:S1信号采集:
由30路麦克风阵列采集30路音频信号,采样频率为32k,转成数字信号以二进制形式保存为txt文本格式,计算30路信号的均值,取方差最小的一路作为样本,消除由于硬件原因所带来的干扰;
S2样本的预处理:
S2-01预加重处理,其实现方式在原信号中加一个一阶高通滤波器,设n时刻的声音信号采样值为x(n)公式如下:其中a为预加重系数,a取值为0.97;y(n)为预加重之后的声音采样值;
y(n)=x(n)-ax(n-1)S2-02信号分帧:信号y(n)经过分帧后变为yi(m),其中下标i表示分帧后的第i帧;
S3特征提取
S3-01FFT傅里叶变换:对每一帧信号进行FFT变换,从时域数据转变为频域数据:Y(i,k)=FFT[yi(m)]S3-02计算能量谱线
对每一帧FFT后的数据计算谱线能量:E(i,k)=|Y(i,k)|2
S3-03计算短时能量
依据每帧的能量谱线计算短时能量
S3-04梅尔滤波器的设计
式中fmel为感知频率,单位是Mel;fHz为实际频率,单位是Hz;在语音的频谱范围设置若干带通滤波器Hm(k),0≤m<M,M为滤波器个数,每个滤波器具有三角滤波特性,其中心频率为f(m),在Mel频率范围内,这些滤波器是等带宽的;每个带通滤波器的传递函数为:f(m)用下面的方法加以定义:
式中fl为滤波器频率范围的最低频率;fh为滤波器的频率范围的最高频率;N为FFT的长度;fs为采样频率;Fmel的逆函数为选取滤波器个数为M=26,依据香农采样定理,取fl=0,fh=fs/2=16000S3-05计算通过Mel滤波器的能量计算通过Mel滤波器的能量相当于把每帧的能量谱E(i,k)与Mel滤波器的频率响应Hm(k)相乘并相加:S3-06计算DCT倒谱
倒谱计算把MEL滤波器的能量取对数后计算DCT:式中S(i,m)为滤波器能量;m指第m个滤波器;i指第i帧;n是DCT之后的谱线S3-07升降器
添加升降器有助于提升DCT后的高频系数,升降器公式经过升降器的MFCC参数为:
mfccL(i,n)=L·mfcc(i,n)S4特征融合
mfccE(i,1)=Eni
mfccE(i,(2,3,4…n))=mfccL(i,(2,3,4…n))S401差分的求取
一阶差分,为了防止第一帧后最后一帧信息的丢失,第一帧和最一帧各自分别复制一帧插入到第一帧和最尾帧,这样新的帧数为i+2二阶差分,与一阶差分类似,第一帧和最一帧各自分别复制两帧插入到第一帧和最尾帧,这样新的帧数为i+4最后将mfccE(i,n),Δd(i,n)1,Δd(i,n)2三者特征列并列融合得到新的39维的特征Fe(i,d),这里i表示第i帧,d为特征维度S402数据归一化的处理
将训练集数据归一化,有利于消除异常样本,并加速模型收敛S5bp神经网络的训练:
S5-01激活函数为rule激活函数,激活函数的公式为S5-02:给定第一层为输入层共有39个节点,节点数等于特征数;第二层为隐藏层共有78个节点,节点数等于特征数的两倍,初始化权重和阈值,选取Feminmax作为样本输入神经网络,从第一层到第二层的过程中其传播公式为公式中的为第一层第i个节点到第二层第j个节点权重,为第一层到第二层第j个节点的阈值S5-03第三层为隐藏层共有39个节点,初始化权重和阈值第二层到第三层的传播公式为公式中的为第二层第i个节点到第三层第j个节点权重,为第二层到第三层第j个节点的阈值S5-04第四层为隐藏层共有19个节点,初始化权重和阈值第三层到第四层的传播公式为公式中的为第三层第i个节点到第四层第j个节点权重,为第三层到第四层第j个节点的阈值S5-05第五层为隐藏层共有2个节点,这层不再加激活函数,初始化权重和阈值第四层到第五层的传播公式为公式中的为第四层第i个节点到第五层第j个节点权重,为第四层到第五层第j个节点的阈值S5-06Softmax层:又称归一化指数函数,其公式为公式中j为第j类,L4(j)为第j类的网络输出,预测的标签结果就是softmax中概率值最大的一类S5-07选取交叉熵作为损失函数,交叉熵的计算公式公式中P(j)表示样本在j类上的真实预测S5-08优化器的选择:
选用Adam优化器对权重和阈值进行迭代,Adam优化器的公式为
mt=β1mt-1+(1-β1)gt公式中t表示此时刻,mt和vt分别为一阶动量项和二阶动量项;β1,β2为动力值大小;分别为各自的修正值;wt表示t时刻即第t迭代模型的参数;gt表示t次迭代代价函数关于权重的梯度大小;∈的取值为1e-8;
优化过程公式:
而后将得到的gt带入Adam优化器,完成神经网络的反向传播;迭代更新权值S5-09判断算法迭代是否结束,若没有结束,返回步骤S5-02;
算法迭代完成后,即得到所建改装车识别系统的模型;训练完成后,用测试样本对所建模型进行验证,验证该模型的准确性。