1.本发明涉及语音信号识别技术领域,特别是涉及一种基于特征预训练的深度学习分类的声音数据分类方法。
背景技术:2.根据p通道均匀圆阵采集的车辆声音数据来对野外车辆目标进行识别,传统的模式识别一般分为两个步骤:首先提取声音传感器采集到的声信号的特征;其次设计分类器以得到判别结果。常用的声信号特征为梅尔倒谱系数(mel
‑
frequency cepstral coefficient,mfcc),被广泛用于语种识别、说话人识别、声纹识别等领域,近年来被成功应用于车辆目标的分类识别。
3.传统的将mfcc特征送入深度学习网络,但是在恶劣的环境中模型的识别率并不高。
4.传统的识别模式在野外车辆识别时,若是风噪过大,其分类结果有限,并不能达到预期的效果,随着深度学习的快速发展,考虑用深度学习来进行分类识别,但深度学习需要大量的数据,而工程上数据有限,因此需要构建合理的数据集,并且该数据集能够使得后期训练好的网络有较为准确的识别率。
技术实现要素:5.本发明所要解决的技术问题是提供一种基于特征预训练的深度学习分类的声音数据分类方法,通过构建合适的数据集来对卷积神经网络进行两次训练,并且训练好的卷积神经网络能够对输入的声音信号类别进行有效分类。
6.本发明解决其技术问题所采用的技术方案是:提供一种基于特征预训练的深度学习分类的声音数据分类方法,包括:
7.步骤(1):获取p通道的声音数据,按帧长l将所述p通道的声音数据截取为若干段声音样本,每段所述声音样本包括帧长为l的p通道声音样本数据和截取数据的分类类别;对所述帧长为l的p通道声音样本数据进行k倍降采样,得到l/k个点的p通道声音样本;
8.步骤(2):按帧长l提取所述p通道的声音数据的mfcc特征;
9.步骤(3):构建卷积神经网络,通过所述若干段声音样本和p通道的声音数据的mfcc特征来对所述卷积神经网络进行两次训练,得到训练好的卷积神经网络;
10.步骤(4):通过训练好的卷积神经网络来识别输入声音信号的类别。
11.所述步骤(2)具体为:对所述p通道的声音数据进行预处理,再按帧长l同时提取预处理后的p通道的声音数据的mfcc特征;其中,所述预处理包括预加重、分帧和加窗。
12.所述步骤(3)中的卷积神经网络包括m层卷积层、第一全连接层和第二全连接层;
13.所述第一全连接层的输入为所述截取的l/k个点的p通道声音样本数据,并将所述p通道的声音数据的mfcc特征作为标签,输出为p通道乘以mfcc特征维数;
14.所述第二全连接层的输入为截取的l/k个点的p通道声音样本数据,并将所述截取
数据的分类类别作为标签,输出为声音样本的分类类别。
15.所述卷积神经网络采用卷积核为a、步长b的第一卷积,以及卷积核为c、步长为d的第二卷积交替组成m层卷积层,并在每层卷积层后依次连接批标准化batchnorm1d、激活函数tanh和最大池化maxpool1d。
16.所述步骤(3)中通过所述l/k个点的p通道声音样本和p通道的声音数据的mfcc特征来训练所述卷积神经网络,在训练时包括第一次mfcc预训练和第二次训练,并且在所述第二次训练之前,将所述第一次mfcc预训练的参数作为第二次训练时的初始化状态。
17.所述第一次mfcc预训练的损失包括预训练损失和分类损失,当处于所述第一次mfcc预训练时,将所述分类损失乘以0,只保留预训练损失。
18.所述第二次训练的损失包括预训练损失和分类损失,当处于所述第二次训练时,将所述预训练损失乘以0,只保留分类损失。
19.所述第二次训练时的卷积神经网络的学习率为所述第一次mfcc预训练的1/10。
20.有益效果
21.由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明将mfcc特征和数据结合起来对卷积神经网络进行两次训练,并且训练好的卷积神经网络能够对输入的声音信号类别进行有效分类,进而识别出不同的车辆类型;本发明能够在车辆声音数据集较小时,兼顾深度学习的分类效果而不过拟合,并提高车辆声音数据分类的识别率和鲁棒性;本发明在网络训练时不采用随机初始化,通过mfcc预训练约束网络初始化的方式,提升实测时的效果,获得更好的鲁棒性,提高抗噪能力。
附图说明
22.图1是本发明实施方式的方法流程图。
23.图2是本发明实施方式的神经网络结构图。
具体实施方式
24.下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本技术所附权利要求书所限定的范围。
25.本发明的实施方式涉及一种基于特征预训练的深度学习分类的声音数据分类方法,特别适用于车辆声音数据,请参阅图1,包括:
26.步骤s1:对p通道均匀圆阵采集的车辆声音数据按帧长l截取为若干段声音样本,得到截取后的声音样本和数据样本标签,将截取数据的分类类别作为数据样本标签,再对截取后的声音样本进行k倍降采样,后续送入深度学习网络(卷积神经网络)的车辆声音数据为l/k个点的p通道车辆声音样本。
27.步骤s2:按帧长l对p通道匀圆阵采集的车辆声音数据进行预处理,并提取p通道车辆声音数据的mfcc特征。
28.步骤s3:将l/k个点的p通道车辆声音样本送入m层卷积层加2层全连接层的网络中,第一全连接层的输入为p通道l/k个点的车辆声音样本,输出为p通道乘以mfcc特征维
数,并且第一次mfcc预训练的损失为:
29.loss1=0*f.nll_loss(output,target,weight=variable(torch.tensor([1.0,2.73,1.63,1.95]+f.nll_loss(pred_mfcc,mfcc_data,weight=variable(torch.tensor([1.0,2.73,1.63,1.95])))
[0030]
步骤s4:当第一次mfcc训练模型收敛时,暂停模型,并将第二次训练网络将损失改为:
[0031]
loss2=f.nll_loss(output,target,weight=variable(torch.tensor([1.0,2.73,1.63,1.95])))+0*f.nll_loss(pred_mfcc,mfcc_data,weight=variable(torch.tensor([1.0,2.73,1.63,1.95])))
[0032]
加载第一次mfcc预训练模型保存的参数继续训练网络,第二全连接层的输入是拟合的mfcc特征,即第二次全连接层的输入是第一次mfcc预训练模型的输出,即拟合的mfcc特征pred_mfcc(相当于p通道乘以mfcc特征维数)。输出为车辆声音样本的分类类别数,模型收敛时,得到最终的训练结果。
[0033]
步骤s5:通过训练好的卷积神经网络来识别输入的车辆声音信号类别。
[0034]
以下对上述各步骤进行详细描述:
[0035]
所述步骤s1中p通道均匀圆阵采集的车辆声音数据按帧长l截取为若干段声音样本,是保留p通道间的关系,横向截取,即截取完的数据为l行乘以p列的数据为一帧,而不是不考虑通道间的关系进行竖向截取,即截取完的数据不是l行乘以1列的数据为一帧,再乘以p的数据为p帧。还可以通俗理解为:截取完的数据不是一个通道一个通道的处理数据,截取完的数据不是单通道处理数据。同理,k倍降采样也是保留p通道间的关系,对p个通道同时进行的。
[0036]
进一步地,对p通道均匀圆阵采集的车辆声音数据按帧长l截取为若干段声音样本,这里通过实验验证单通道效果有限,而多通道表现优良。这是由于单通道车辆声音信号受风噪影响较大,单通道的降噪算法在降低风噪的同时,对目标信号在幅频或者相频上或多或少存在一定的损失,从而导致单通道降噪后的识别率不升反降,所以单通道降噪对提高声音目标信号识别效果的方案行不通。多通道虽然目标信号比较相似,但p个方向的风噪信号并不相同,对于风噪而言是在p个不同层面的信号,所以通过卷积神经网络,多通道可以降低风噪影响,提高识别效果,所以本实施方式采取p通道车辆声音信号输入方式。
[0037]
进一步地,步骤s2中按帧长l对p通道匀圆阵采集的车辆声音数据进行预处理,其中预处理包括预加重、分帧以及加窗。
[0038]
所述步骤s2中提取p通道车辆声音数据的mfcc特征,是同时对p个通道提取mfcc特征,保证与步骤s1中按帧长l截取的若干段声音样本一一对应。
[0039]
进一步地,所述步骤s3中的网络结构为m层卷积神经网络加2层全连接网络,卷积核为a,步长b的第一卷积,卷积核为c,步长为d的第二卷积交替组成m层卷积层,在每层卷积层后依次连接批标准化batchnorm1d、激活函数tanh、最大池化maxpool1d。最后一层采用1*1的卷积核,可以实现跨通道信息交互(channel的变换),详见图2。
[0040]
进一步地,所述步骤s3中的损失分为预训练损失和分类损失(请见上述公式loss1),第一次mfcc预训练的损失将分类损失乘以0,并保留预训练损失,使得网络中间输出拟合mfcc特征。
[0041]
进一步地,所述步骤s3中的第一次mfcc预训练时,输入截取后的语音样本,把mfcc特征作为第一层全连接层的训练标签,在训练中只训练第一层全连接及之前的网络,(共有两层全连接层,第二全连接层不参与第一次训练,分类损失不参与第一次训练的反向传播)截取后的语音样本送入网络做第一次mfcc预训练,使得网络中间输出拟合mfcc特征。
[0042]
所述步骤s3中的2层全连接网络结构为:第二全连接层的输入为拟合后的mfcc特征,即第二次全连接层的输入是第一次mfcc预训练模型的输出,即拟合的mfcc特征pred_mfcc(相当于p通道乘以mfcc特征维数)。即mfcc特征维数乘以p的输入,输出为n;第二全连接层的输入为n,输出为分类类别数目。
[0043]
进一步地,所述步骤s3中的预训练完成,是指损失震荡降到一个相对平稳的时候,同时分类精度曲线震荡上升趋于稳定,输出的混淆矩阵相对稳定,停止网络训练,并将网络参数保存下来。
[0044]
进一步地,所述步骤s4中在网络进行第二次训练之前,网络不采用随机初始化参数,而是将第一次mfcc预训练保存下来的参数当作模型第二次训练的初始化状态。即第一次训练为第二次的mfcc预训练模型。
[0045]
所述步骤s4中在网络进行第二次训练之时,调整第二次训练网络的学习率,调整为第一次的1/10,即第二次训练调小学习率,使得第二次训练在原有基础上微调,在已学习到的网络参数上进行精细化调整。
[0046]
进一步地。所述步骤s4中的损失也分为预训练损失和分类损失(请见上述公式loss2),第二次训练的损失保留分类损失,将预训练损失乘以0,待模型损失下降到一定的值并趋于稳定,停止网络训练,将网络参数保存下来,作为最终的训练结果。
[0047]
为进一步理解本实施方式,以下将步骤s3和步骤s4的具体网络结构设置再次进行描述:
[0048]
(1)第一次mfcc预训练时,网络正常初始化,即采用随机初始化网络参数。
[0049]
(2)第一次mfcc预训练时,输入截取后的语音样本,把mfcc特征作为第一层全连接层的训练标签,在训练中只训练第一层全连接及之前的网络,(共有两层全连接层,第二全连接层不参与第一次训练,分类损失不参与第一次训练的反向传播)截取后的语音样本送入网络做第一次mfcc预训练,使得网络中间输出拟合mfcc特征。
[0050]
(3)第一次mfcc预训练时,待网络损失下降到一定的值并趋于稳定,停止网络训练,将网络参数保存下来。
[0051]
(4)第二次训练时,输入截取后的语音样本,并增加第二全连接层,把分类类别作为标签,送入网络进行第二次训练。
[0052]
(5)在网络第二次训练之前,网络不采用随机初始化参数,而是将第一次mfcc预训练保存下来的参数当作第二次模型的初始化状态。即第一次训练为第二次的mfcc预训练模型。
[0053]
(6)调整第二次训练网络的学习率,调整为第一次的1/10,使得第二次训练在原有基础上微调。
[0054]
(7)待模型损失下降到一定的值并趋于稳定,停止网络训练,将网络参数保存下来,作为最终的训练结果。
[0055]
由此可见,本实施方式将mfcc特征和截取的p通道的声音数据综合考虑,一起送入
深度学习网络,最后取得了良好的效果,不仅通过声音对车辆的识别较好,鲁棒性也较好。