一种基于子带谱熵法和PSO-GA-SVM的汽车鸣笛识别方法与流程

专利2022-05-09  99


本发明涉及一种汽车鸣笛识别方法,具体涉及一种基于子带谱熵法和pso-ga-svm的汽车鸣笛识别方法,属于信号处理技术领域。



背景技术:

近年来,交通噪声的关注度日益增长。鸣笛噪声是交通噪声的主要组成成分,汽车在禁鸣区违章鸣笛,会严重影响他人的生活、学习与工作。为了遏制违章鸣笛,鸣笛抓拍系统应运而生。鸣笛抓拍系统会实时检测当前的声压级,当声压级超过一定阈值时,系统启动,通过远场波束形成技术定位声源的位置并进行音视频记录。然而交通环境中声源情况非常复杂,有很多非鸣笛声也能触发鸣笛抓拍系统的阈值,只依靠声压级触发门限会出现较多误判的情况。这也是目前鸣笛抓拍系统应用较少的主要原因。因此,对鸣笛抓拍系统采集的样本进行鸣笛与非鸣笛的分类是非常有必要的。

在汽车鸣笛识别方面,目前已有许多学者进行了研究,较为常用的方法主要分为以下两类:1)阈值判断,如短时能量和短时过零率法等。该方法将特征值高于或低于一定门限的声音样本直接进行分类,其分类效果主要取决于特征和阈值的选取;2)机器学习,如卷积神经网络、隐马尔科夫模型等。该方法首先对样本提取特征,通过训练一定数量的样本得到一个模型,再通过采集的样本是否与模型相匹配来进行分类。进行阈值判断时,阈值的设置会直接影响分类结果的准确性,然而交通环境中声源情况非常复杂,会给阈值设置带来较大阻碍。机器学习虽然准确率较高,但对模型有比较高的要求。如果实测的鸣笛样本中含有较多噪声,也会对分类准确率产生很大影响。因此,现有技术中一直没有很好的解决办法。



技术实现要素:

本发明正是针对现有技术中存在的问题,提供一种基于子带谱熵法和pso-ga-svm的汽车鸣笛识别方法,该技术方案针对鸣笛抓拍系统会产生误判的问题,提出了一种基于子带谱熵法和支持向量机的汽车鸣笛识别算法,该方法首先使用子带谱熵法对声音样本进行初判,将子带谱熵高于阈值的样本直接判定为非鸣笛样本。然后对初判为鸣笛的样本中的疑似鸣笛部分进行分割,并提取mel频率倒谱系数作为声音的特征。最后使用支持向量机对分割结果进行进一步分类,并使用粒子群算法与遗传算法的融合来优化支持向量机的参数。仿真结果表明,该算法具有较好的鲁棒性。在对实际采集样本的鸣笛识别中,该算法也取得了较高的准确率。

为了实现上述目的,本发明的技术方案如下,一种基于子带谱熵法和pso-ga-svm的汽车鸣笛识别方法,所述方法包括以下步骤:

步骤1:对采集的声音样本进行预处理:

步骤2:子带谱熵法处理;

步骤3:pso-ga-svm算法处理,进行分类。

其中,步骤1:对采集的声音样本进行预处理,具体如下:带通滤波、预加重、分帧、加窗,一般汽车鸣笛的频率分布在1500-6000hz。为了保留汽车鸣笛的主要特征并去除噪声的干扰,首先对声音样本进行1500-6000hz的带通滤波。

预加重是一个一阶高通滤波器,用一阶fir滤波器表示为:

s′(n)=s(n)-as(n-1)(1)

式(1)中,a为一常数,s(n)为原始信号,s’(n)为预加重后的信号。预加重可以对信号进行高频提升,使频谱变得更平坦,减少频谱的动态范围。一般来说,0.9<a<1。本发明中a取0.9375。

分帧将一段较长声音信号分成多个小段,使每小段声音信号可以作为平稳信号来处理,为了使每一帧信号之间平滑地过渡,两个相邻帧之间需要有一些重叠区域。本发明中帧长选为50ms,帧移长度选为帧长的1/3,

加窗避免因信号两端出现不连续的情况而导致的频谱泄漏,本发明选用汉明窗作为窗函数,共有n个采样点,第n个采样点的窗函数公式如下:

步骤2:子带谱熵法处理,具体如下:针对预处理后数据,计算子带谱线能量和子带谱熵,进行双门限分割;

子带谱熵的思想是将每一帧的频谱分成若干个子带,这样就消除了每一条谱线受噪声影响的问题。设每个子带由4条谱线组成,共有nb个子带,第i帧中的第n个子带的谱线能量为:

式(3)中,yi(k)为傅里叶变换后的谱线能量,子带谱线能量的概率分布式为:

引入一个正常量k到式(4)中,得到新的子带谱线能量的概率分布式:

可推导证明,在噪声环境下,引入正常量k后,分割的准确度能得到提高,本发明中k取0.1,子带谱熵的公式为:

使用子带谱熵法可以将子带谱熵高于阈值的样本直接判为非鸣笛样本。然而在实际交通环境中也存在一些非鸣笛声(如汽车转向提示声、公交车报站声、警笛声等),由于具有一定的谐波特征,产生了分割结果,会被子带谱熵法误判为鸣笛声。因此,我们需要对子带谱熵法的分割结果进行进一步的分类,来消除此类误判。

步骤3:pso-ga-svm算法处理,进行分类,具体如下:

步骤31:对训练集进行k折交叉验证,

步骤32:初始化n个粒子,计算初始适应度,将搜索空间中每一个c和g可能的解编码为染色体,随机选择n个染色体来形成初始种群,并初始化粒子速度。计算每一个粒子的适应度,求出pbest和gbest。

步骤33:更新每一个粒子的速度和位置;

步骤34:按照适应度选出n-1个粒子,对它们进行交叉、变异操作,再与上一代的最优粒子组合成新的n个粒子,计算每一个粒子的适应度,更新pbest和gbest,

步骤35:转步骤33,直到满足一定迭代次数为止;

步骤36:输出最优c和g;

步骤37:将最优c和g代入svm的c和g参数中,对测试集进行分类。

相对于现有技术,本发明具有如下优点,该技术方案能够准确地识别出汽车鸣笛声,结合鸣笛抓拍系统记录违章鸣笛,为交警执法提供依据。本发明通过子带谱熵法分割出疑似的鸣笛部分,大幅减少了噪声对分类器模型造成的影响,并且鸣笛识别的准确率较高。此外本发明提取的特征维数较低,运行速度快,可以满足鸣笛抓拍系统实时检测的要求。

附图说明

图1为算法总流程;

图2为子带谱熵法流程图;

图3pso-ga-svm流程。

具体实施方式:

为了加深对本发明的理解,下面结合附图对本实施例做详细的说明。

实施例1:参见图1,一种基于子带谱熵法和pso-ga-svm的汽车鸣笛识别方法,所述方法包括以下步骤:

步骤1:对采集的声音样本进行预处理:

步骤2:子带谱熵法处理;

步骤3:pso-ga-svm算法处理,进行分类。

其中,步骤1:对采集的声音样本进行预处理,具体如下:带通滤波、预加重、分帧、加窗,一般汽车鸣笛的频率分布在1500-6000hz。为了保留汽车鸣笛的主要特征并去除噪声的干扰,首先对声音样本进行1500-6000hz的带通滤波。

预加重是一个一阶高通滤波器,用一阶fir滤波器表示为:

s′(n)=s(n)-as(n-1)(1)

式(1)中,a为一常数,s(n)为原始信号,s’(n)为预加重后的信号。预加重可以对信号进行高频提升,使频谱变得更平坦,减少频谱的动态范围。一般来说,0.9<a<1。本发明a取0.9375。

分帧将一段较长声音信号分成多个小段,使每小段声音信号可以作为平稳信号来处理,为了使每一帧信号之间平滑地过渡,两个相邻帧之间需要有一些重叠区域。本发明中帧长选为50ms,帧移长度选为帧长的1/3,

加窗避免因信号两端出现不连续的情况而导致的频谱泄漏,本发明选用汉明窗作为窗函数,共有n个采样点,第n个采样点的窗函公式如下:

步骤2:子带谱熵法的主要流程如图2所示:

子带谱熵法处理,具体如下:针对预处理后数据,计算子带谱线能量和子带谱熵,进行双门限分割;

子带谱熵的思想是将每一帧的频谱分成若干个子带,这样就消除了每一条谱线受噪声影响的问题。设每个子带由4条谱线组成,共有nb个子带,第i帧中的第n个子带的谱线能量为:

式(3)中,yi(k)为傅里叶变换后的谱线能量,子带谱线能量的概率分布式为:

引入一个正常量k到式(4)中,得到新的子带谱线能量的概率分布式:

可推导证明,在噪声环境下,引入正常量k后,分割的准确度能得到提高,本发明中k取0.1,子带谱熵的公式为:

双门限分割的主要步骤为:

步骤21在信号的子带谱线能量包络线上选取一个较高的阈值eth2,包络线与eth2相交于左右两个点a和b。认定高于eth2的部分一定是鸣笛,而鸣笛的起止点应该在ab段之外。再在信号的子带谱线能量包络线上选取一个较低的阈值eth1,从a点向左、从b点向右搜索,分别找到包络线与eth1相交的左右两个点c和d。cd段即为基于子带谱线能量门限分割的鸣笛部分。

步骤22在对应的子带谱熵包络线上,从c点向右、从d点向左进行更加细致的分割,找到子带谱熵低于阈值eth3的左右两个点e和f。ef段即为基于子带谱线能量和子带谱熵双门限分割的鸣笛部分。

使用子带谱熵法可以将子带谱熵高于阈值的样本直接判为非鸣笛样本,然而在实际交通环境中也存在一些非鸣笛声(如汽车转向提示声、公交车报站声、警笛声等),由于具有一定的谐波特征,产生了分割结果,会被子带谱熵法误判为鸣笛声。因此,我们需要对子带谱熵法的分割结果进行进一步的分类,来消除此类误判。

步骤3:pso-ga-svm算法处理,进行分类;

svm是一种二分类模型。设样本集为(xi,yi),其中xi为样本特征,yi为类别符号。svm的目标是寻找一个分类面ωtx b=0将样本正确地分成两类,且使||ω2||最小。在样本集线性不可分时,需要引入惩罚因子c和核函数k(xi,xj)来进行分析。核函数可以将低维向量内积的结果转化为高维向量内积的结果,但不需要在高维中进行计算。本发明选用的的核函数为径向基核函数,公式如下:

惩罚因子c和核函数参数g对svm的分类性能有很大的影响。本发明使用pso-ga来优化c和g参数。

pso将粒子i在搜索空间中的飞行速度表示为向量vi,位置表示为向量xi。在每一次迭代中,计算每个粒子的适应度,通过个体极值(pbest)和全局极值(gbest)来更新每一个粒子的速度和位置,如下两式所示:

xi=xi vi(9)

式(8)中,r为均匀分布在(0,1)之间的随机数,k由下式表示:

本发明中取4.1,则k取0.730。

ga将搜索空间中每一个可能的解编码为染色体,随机选择一组染色体来形成初始群体。在每一次迭代中,计算每个粒子的适应度,按照适应度大小的顺序来选择个体,进行交叉、变异等操作。反复执行遗传操作,直到满足终止条件为止。

1.4.2算法流程

pso-ga-svm主要流程如图3所示,其主要步骤如下:

步骤31:对训练集进行k折交叉验证,本发明中k取5。

步骤32:初始化n个粒子,计算初始适应度,将搜索空间中每一个c和g可能的解编码为染色体,随机选择n个染色体来形成初始种群,并初始化粒子速度。计算每一个粒子的适应度,求出pbest和gbest。

步骤33:按照式(8)和式(9)更新每一个粒子的速度和位置;

步骤34:按照适应度选出n-1个粒子,对它们进行交叉、变异操作,再与上一代的最优粒子组合成新的n个粒子,计算每一个粒子的适应度,更新pbest和gbest,

步骤35:转步骤33,直到满足一定迭代次数为止;

步骤36:输出最优c和g;

步骤37:将最优c和g代入svm的c和g参数中,对测试集进行分类。

需要说明的是上述实施例,并非用来限定本发明的保护范围,在上述技术方案的基础上所作出的等同变换或替代均落入本发明权利要求所保护的范围。


技术特征:

1.一种基于子带谱熵法和pso-ga-svm的汽车鸣笛识别方法,其特征在于,所述方法包括以下步骤:

步骤1:对采集的声音样本进行预处理,

步骤2:子带谱熵法处理,

步骤3:pso-ga-svm算法处理,进行分类。

2.根据权利要求1所述的基于子带谱熵法和pso-ga-svm的汽车鸣笛识别方法,其特征在于,步骤1:对采集的声音样本进行预处理,具体如下:带通滤波、预加重、分帧、加窗,

预加重是一个一阶高通滤波器,用一阶fir滤波器表示为:

s′(n)=s(n)-as(n-1)(1)

式(1)中,a为一常数,s(n)为原始信号,s’(n)为预加重后的信号,预加重可以对信号进行高频提升,使频谱变得更平坦,减少频谱的动态范围;

分帧将一段较长声音信号分成多个小段,使每小段声音信号可以作为平稳信号来处理,帧长选为50ms,帧移长度选为帧长的1/3,

加窗避免因信号两端出现不连续的情况而导致的频谱泄漏,本发明选用汉明窗作为窗函数,共有n个采样点,第n个采样点的窗函数公式如下:

3.根据权利要求2所述的基于子带谱熵法和pso-ga-svm的汽车鸣笛识别方法,其特征在于,步骤2:子带谱熵法处理,具体如下:针对预处理后数据,计算子带谱线能量和子带谱熵,进行双门限分割;

设每个子带由4条谱线组成,共有nb个子带,第i帧中的第n个子带的谱线能量为:

式(3)中,yi(k)为傅里叶变换后的谱线能量,子带谱线能量的概率分布式为:

引入一个正常量k到式(4)中,得到新的子带谱线能量的概率分布式:

可推导证明,在噪声环境下,引入正常量k后,分割的准确度能得到提高,本发明中k取0.1,子带谱熵的公式为:

使用子带谱熵法可以将子带谱熵高于阈值的样本直接判为非鸣笛样本;然而在实际交通环境中也存在一些非鸣笛声,由于具有一定的谐波特征,产生了分割结果,会被子带谱熵法误判为鸣笛声;因此,我们需要对子带谱熵法的分割结果进行进一步的分类,来消除此类误判。

4.根据权利要求3所述的基于子带谱熵法和pso-ga-svm的汽车鸣笛识别方法,其特征在于,步骤3:pso-ga-svm算法处理,进行分类,具体如下:

步骤31:对训练集进行k折交叉验证,

步骤32:初始化n个粒子,计算初始适应度,

步骤33:更新每一个粒子的速度和位置;

步骤34:按照适应度选出n-1个粒子,对它们进行交叉、变异操作,再与上一代的最优粒子组合成新的n个粒子,计算每一个粒子的适应度,更新pbest和gbest,

步骤35:转步骤33,直到满足一定迭代次数为止;

步骤36:输出最优c和g;

步骤37:将最优c和g代入svm的c和g参数中,对测试集进行分类。

技术总结
本发明涉及一种基于子带谱熵法和PSO‑GA‑SVM的汽车鸣笛识别方法,所述方法包括以下步骤:步骤1:对采集的声音样本进行预处理:步骤2:子带谱熵法处理;步骤3:PSO‑GA‑SVM算法处理,进行分类。该算法具有较好的鲁棒性。在对实际采集样本的鸣笛识别中,该算法也取得了较高的准确率。

技术研发人员:李晨;余凌浩;陆铁文;曾毓敏
受保护的技术使用者:南京师范大学
技术研发日:2021.05.08
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-5160.html

最新回复(0)