×

基于排气声的发动机转速识别

消耗积分:0 | 格式:zip | 大小:0.01 MB | 2022-11-04

听风说梦

分享资料个

描述

1. 问题陈述

许多人意识到温室气体排放对环境有害,但对道路车辆、发动机声音、动力传动系统、排气、轮胎、刹车、风噪声等引起的噪音污染知之甚少。想象一个车载监控系统,它可以绘制出驾驶行为和通过听排气、轮胎、风噪声的污染程度。不仅将这些信息提供给驾驶员,以提醒驾驶员如何温和的驾驶行为会降低噪音污染,而且还可以预测轮胎、动力传动系统等的磨损程度。除此之外,该车载监控系统还提供噪音污染等级评分,供地方当局或保险机构(如果驾驶员同意)给予折扣/奖励以降低噪音,因为驾驶员可以通过选择电动汽车,使用较低的噪音轮胎,更好的维护车辆状况,最关键的驾驶行为。有了这个系统,司机可以共同做出贡献,以尽量减少对环境的噪音污染以及道路上的风险。

2. 范围和假设

这里有几个过程要实现:

  • 识别声音以确定是什么事件
  • 根据识别结果对事件进行评分
  • 预测时间序列识别中的已知失败

由于多种原因,本项目的范围有限,例如:

  • 数据集仅限于一种类型的车辆(实际上只有一种车辆)
  • 仅当出于安全考虑车辆不移动时才收集数据集,因为无法同时驾驶车辆和管理项目。
  • 感官输入(音频)仅针对排气声。
  • 机器学习管道仅运行 M4 核心。
  • 由于社区帐户,SensiML 知识包的分类输出有限。
  • 由于参与者开发前端应用程序的知识有限,SensiML 开放网关将用作 GUI。

鉴于上述定义的范围,假设这是作为原型研究而不是实际用例部署,旨在使参与者能够探索在边缘设备上使用机器学习技术。

1. 提出的解决方案

该原型由几个组件组成,如图 1 所示。

  • QuickLogic 的 QuickFeather
  • NodeMCU的ESP32
  • 锂离子电池 18650

下面还有其他几个软件包。

  • QuickLogic 的 QORC-SDK
  • 乐鑫的 ESP-IDF
  • 数据采集​​实验室、Analytics Studio、SensiML 的开放式网关
pYYBAGNkcOeAE2beAACgmvTLqpI390.png
图 1:原型
 

QuickFeather 和 ESP32 之间的连接使用 UART,其简单示意图如图 2 所示。

pYYBAGNkcOqAHbs2AAAnwSufGMM698.png
图 2:连接
 

计划安装点尽量靠近排气口,不让样机暴露在排气、水溅等热源中,如图3所示。

poYBAGNkcO2AFEV1AAAzU1AVTYg566.png
图 3:安装点
 

3.1 带有测试数据集的概念验证

在构建项目之前,需要大量阅读数据表、repo、william hill官网 等内容,考虑到在完全不同平台上的新体验,这个过程并非没有挑战。首先,建立一个概念验证项目,其简单目标是识别人声,区分字符“A”、“B”、C”、“D”和不说话。音频数据集在 DCL 中收集并手动分割,长度大小固定为 8000 个数据点,字符作为标签。此外,在 Analytic Studio 中,该项目使用窗口大小为 400 的 AutoML 管道和 20 个特征级联的滑动来组装。最推荐的语音识别功能(基于互联网和william hill官网 的研究和调查)将是梅尔频率倒谱系数(MFCC)。所以,在 AutoML 设置中选择了频率功能。训练结果令人印象深刻,准确率和灵敏度均达到 99%。该管道生成4个特征,即MFCC、主频、谱熵和峰值频率。特征选择器是使用信息增益(IG)根据类之间的差异来选择特征。在特征向量最小最大尺度变换之后,管道以分层 K 折交叉验证结束。最后,下载知识包并在 QF_SSI_AI_APP 中编译并刷入 QuickFeather。特征选择器是使用信息增益(IG)根据类之间的差异来选择特征。在特征向量最小最大尺度变换之后,管道以分层 K 折交叉验证结束。最后,下载知识包并在 QF_SSI_AI_APP 中编译并刷入 QuickFeather。特征选择器是使用信息增益(IG)根据类之间的差异来选择特征。在特征向量最小最大尺度变换之后,管道以分层 K 折交叉验证结束。最后,下载知识包并在 QF_SSI_AI_APP 中编译并刷入 QuickFeather。

使用 SensiML 开放网关验证结果如图 4 所示。识别结果,但实际上不如训练结果。灵敏度很好,而准确度大概在 50% 到 80% 之间。这有几个可能的原因,背景声音/噪声影响识别,数据集欠拟合/过拟合,模型未优化,以及许多其他事情可能出错。其中一个疑点是,当一个字符长时间发音时,音频波形可能会呈现出相似的形状、模式和频率,例如“B”和“D”。也许有一些更好的技术可以捕捉到这一点,这将是未来 KIV 研究的主题。

poYBAGNkcO-AXJMYAACMVcpU3ts751.png
图 4:概念验证测试
 

备注:由于社区账号,分类输出限制为每上电1000个输出。音频传感器配置为 16 kHz,滑动窗口大小为 8000 个数据点,仅需 500 秒即可达到最大输出限制。

3.2 真实数据集的实际运行

真实数据集被分割并使用表 2 中列出的以下条件进行标记。

pYYBAGNkcPOAJCg9AACfNGJ2cv4288.png
表 2:分类
 

类似的方法用于构建此管道。窗口大小设置为 400 和 10 个特征级联,并选择频率作为 AutoML 管道中的特征生成器。尽管数据集中存在一些异常值,但训练结果似乎可以接受,如图 5 所示。

poYBAGNkcPaABUgrAABp513tVRk880.png
图 5:训练结果
 

一些类之间存在一些混淆,“EngIdle_AC_OFF”、“Eng1k”和“Ramp_DOWN”。此外,“Ramp_DOWN”和“Ramp_UP”也存在精度较低的问题,如图 6 所示。

pYYBAGNkcPmAN0lYAACCnNrA7_k228.png
图 6:混淆矩阵
 

该管道使用 MFCC 和 Spectral Entropy 作为特征生成器,使用 IG 作为特征选择器,其中在将其输入模型之前将应用 Min Max Scale 变换。该模型使用模式匹配引擎 (PME) 分类器,并通过层次聚类和神经元优化进行优化,如图 7 所示。

poYBAGNkcPuAGEFoAAAvS_uSJBc003.png
图 7:模型摘要
 

最后,知识包使用 QF_SSI_AI_APP 编译并加载到 QuickFeather 并通过 ESP32 流式传输到开放网关。原型的位置如图 3 所示,分类结果正在通过稳定的脚控制油门踏板传输到驾驶座的笔记本电脑。分类输出主要显示如图 8 所示发动机怠速(约 800 rpm)时的“EngIDL_AC_OFF”和“Eng1K”。可能的原因之一是 800 rpm 和 1000 rpm 之间的排气声音非常相似。

pYYBAGNkcP6AHDGsAAB7Xo3Eatc735.png
图 8:发动机怠速时的分类
 

尽管如此,发动机转速高于 1000 rpm 的分类令人印象深刻,如图 9 所示。当发动机以恒定转速悬停时,它可以识别正确的发动机转速。这展示了使用 SensiML 知识包闪烁的边缘设备 (QuickFeather) 的功能。最好的是,知识包是由 AutoML 管道构建的,没有太多的代码破解或数据科学方面的密集知识。

poYBAGNkcQGATDrbAACxVHGTQPE010.png
图 9:发动机在恒定转速下的分类
 

发动机加速或减速时的识别是非常随机的。这可能与数据集有关。数据集是在车库环境中收集的,如果有更好的资源和环境,例如由 ECU 控制的发动机以执行预设的速度曲线,数据集将非常干净并显着改进模型。

4。结论

该项目是一个半成品,因为它只实现了部分目标,即识别道路车辆引起的噪声污染并向用户提供反馈。尽管范围没有最初计划那么大,但识别部分已经完成,还检测动力传动系统、风噪声等。它需要多学科的技能和资源,如电子设计、脚本编码等来完成整个项目,这是一个写作时的时间和知识方面的限制。因此,该项目正在结束,以记录整个过程中的所有努力和研究。最后,尽管学习曲线陡峭,但这个项目非常有趣,真正令人兴奋的是,QuickFeather 和 SensiML 的存在为业余爱好者和


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'基于排气声的发动机转速识别',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);