婴儿探测器是一款用于在小环境中感知婴儿存在的应用程序。这个想法是为了面对婴儿被遗忘在车内的问题,这可能会导致他们的死亡,尤其是在炎热的夏天。该系统的核心元件是:一个MP23ABS1模拟MEMS麦克风,能够检测这些婴儿发出的声音;一个能够处理音频数据的STM32F4微控制器和ST产品组合中的几个不同的运动/环境传感器,检查环境条件,如果过于恶劣,可能会增加婴儿的危险。

1.研究原因
1.1可用的解决方案
2.ST解决方案
2.1音频的人工智能
2.1.1数据集
2.1.2特点
2.1.3培训和分析
2.2运动的机器学习
2.3Sensortile.box:应用程序开发板
3.接下来的步骤

1.研究原因


寻找创新的新方法通常会通过我们的日常经验,这就是所描述的应用程序的情况。


在过去的20年里,全世界有600多名儿童被遗弃在车内死亡。这些主要是由中暑引起的,这是一种严重的中暑,会导致体温非常高(超过40.0°C)和意识混乱,如果不加以治疗,可能会发展为癫痫发作、肌肉崩溃和肾衰竭,最终导致受试者死亡。汽车被放在阳光下会受到温室效应的影响,温室效应会很快加热汽车内部(80%的温度上升发生在前10分钟),而车窗破裂对减缓加热过程没有多大帮助。婴儿比成年人更容易受到车内高温的影响,无论是在实际还是生物学上:对于年幼的孩子来说,如果没有任何帮助,即使不是不可能,也很难从锁着的车里跳出来,而且孩子的身体过热的速度是成年人的3-5倍。难怪90%的记录事件涉及3岁以下的婴儿(0至1岁的婴儿占55%)。
 

1.1可用的解决方案


现在市场上有各种各样的解决方案,无论有没有认证,都可以帮助父母记住他们的孩子。
这些设备中的许多是基于用作体重秤的压力传感器:例如,我的米榻榻垫是要放在婴儿座椅上的小枕头。问题是,他们可能会被座椅上另一个物体的存在所欺骗,向用户发出假警报(假阳性),或者,更糟糕的是,即使婴儿在那里,他们也会滑出位置,不发出警报(假阴性)。
例如,其他解决方案过于依赖用户而无法完全可靠贝贝护理是一种安装在婴儿座椅安全带上的装置,当婴儿在车内时,用户应启动该装置。如果成年人在没有禁用汽车的情况下远离汽车,因此忘记了婴儿,就会触发警报,但这种解决方案并非万无一失。
最后,还有一些应用程序或设备可以通过链接到车辆发动机或导航应用程序,让用户在下车时记住婴儿可以在车上。用户可以关闭它们以避免每次都感到烦恼,或者在需要时不激活它们。
需要一种不同的、更可靠的系统,父母可以在该系统上委托婴儿的生命,而ST有资源提供这种类型的设备。
 

2.ST溶液


虽然其他设备只专注于检测婴儿的存在,但了解婴儿所处的环境状态可能很有用。了解婴儿是否处于危险中几乎与了解婴儿是否在车内一样重要。为了对车内婴儿的危险程度进行分类,可以考虑两个参数:成年人的存在和环境温度。
 
  • 对于婴儿探测器的主要任务,决定使用MP23ABS1模拟麦克风检查是否有婴儿在场。考虑到处于危险中的婴儿会大声哭闹,使用深度神经网络(DNN)开发了一个人工智能(AI)驱动的婴儿哭闹检测系统,该系统运行在STM32微控制器
  • 如果一个成年人带着婴儿在车内,危险程度很低,但能够感觉到一个成年人在车内并不是一件容易的事。此功能由的机器学习核心执行6轴运动传感器LSM6DSOX:它可以检测汽车是否在移动,以便成年人驾驶汽车,控制情况。
  • 温度起着重要作用,因为如果温度在可接受的范围内,父母应该被告知婴儿的危险,但当温度升高时,一个小的延迟可能会变得至关重要,如果父母没有立即做出反应,则应通知其他接受者。
传感器融合“或”传感器融合“是基于使用传感器的优点来弥补传感器的另一个缺点的可能性。在这种情况下,麦克风可以检测到哭泣婴儿的存在,但不知道是否存在危险情况。6轴设备在温度传感器的帮助下提供的上下文识别可以提高系统的准确性。相对于加速度计或压力传感器,麦克风是一种功耗更高(高达数百uA)的传感器,但可以借助上下文识别来降低功耗:在汽车行驶时保持麦克风运行是没有用的,因此只有当加速度计检测到汽车静止时,麦克风才应该运行,并且在成年人驾驶时应远离。该系统中涉及的所有传感器必须由STM32微控制器进行管理。对于我们的应用,选择L4系列是为了表明所开发的算法的计算能力在中等级别微控制器的能力范围内。这也使得能够具有较低的电流消耗和由系统本身占用的较小面积。
这个传感器Tile.box是开发此类系统的完美平台:它具有上述所有组件,可以在ST BLE传感器应用程序上显示结果,也可以将数据发送到大数据库或其他手机。

2.1人工智能应用于音频系统


人工智能(简称AI)是指能够执行通常需要人类智能的任务的计算机系统的理论和开发。通常,在线可用的大型人工智能算法在属于开发人员的服务器上运行,但这里的额外挑战是将能够对哭泣的婴儿进行分类的深度神经网络适应STM32L4较小的内存容量。
当构建神经网络(NN)时,通常的开始阶段是创建或搜索合适的数据集,即神经网络可以从中学习的样本集合。该阶段涉及同质化的采集和正确标记
下一步是从数据集的样本中提取“特征”:这些是可以通过算法以更容易的方式识别的特定特征(均值、方差或更复杂的数据阐述)。
最后,选择所使用的神经网络类型,并开始称为训练的实际学习阶段。第一个结果通常不是很好,所以下一步是研究算法的问题,并从数据集阶段开始,以提高系统的整体精度。

 
  1. 2.1.1数据集

用于婴儿哭闹分类的神经网络的数据集显然应该由哭闹婴儿的音频样本组成。网络必须提供婴儿和非婴儿的例子,以使其能够检测到差异。这些样本必须事先根据其内容进行标记(例如,“1”代表婴儿的哭声,“2”代表“成年人的言语”,依此类推)。然而,要找到这样一个开放的数据库并不容易。。。
这个
最合适的一套是由自制的婴儿哭闹录音组成的“捐一声哭”。在分析了这个数据集后,很明显,许多样本不适用于训练阶段:其中许多样本太吵了,或者到处都是人,说话时夹杂着婴儿的哭声,甚至是明显长大的成年人假装像婴儿一样哭。作为唯一找到的基础,数据集被手动检查和细化:尽可能删除或剪切坏样本,只提供真实的哭泣样本。
由于神经网络必须能够区分哪个样本是哭声,哪个不是哭声,因此搜索了更广泛的声音集,发现了两个不同的有用数据集:Kaggle的“城市声音”和“人声”。
  • 第一个数据集由街头事件的音频样本组成,从www.freesound.org,由纽约大学音乐与音频研究实验室收藏后公开研究。它分为10个声音类别:空调、汽车喇叭、儿童玩耍、狗叫、钻孔、发动机空转、枪声、手提钻、警笛和街头音乐。我们想使用这个数据集,这样网络就能够对来自车外的声音进行分类,我们保留了原始标签,而不是在所有标签上加上“没有婴儿”标签,以更好地分析训练结果。
  • 第二个数据集来自于网址:www.kaggle.com,旨在将人类的声音分为男性和女性。我们的目标不是辨别它们,而是能够分析音调更高的女性声音。这些标签也是为这一套保留的。
在探索第一个结果时,有两个错误是显而易见的:与其他音频样本相比,关于哭泣的数据量太低了,对于长音频样本,需要考虑的时间段应该更小,而对于所有数据都是恒定的。因此,所有数据都被划分在1秒的剪辑中,以便每个样本都有相同数量的信息。此外,对于婴儿哭闹数据,它被选择为具有90%的重叠窗口。这意味着,如果样本长2秒,则将其分为10个文件,一个从0.0s开始,以1.0s结束,第二个从0.1s开始,并以1.1s结束,依此类推,直到2s时间戳。通过这种方式,获得了更多的哭泣示例,并与其他数据具有可比性。
 
  1. 2.1.2特点

在适当的数据集准备之后,样本原则上可以提供给机器学习程序。然而,从数据中选择和提取某些特征是一种很好的做法,有助于网络学习。这些特征是所观察到的现象的可测量特征,例如音频信号的快速傅立叶变换(FFT)(用于音频识别)、图像的亮度(用于白天/晚上的图像分类)或运动信号的标准偏差(用于活动识别)。更详细地说,当使用音频分类NN时,现有技术使用MFCC图音频信号。这个百万立方厘米(梅尔频率倒谱系数)是信号FFT的数学变换,在“梅尔滤波器”后获得,用于增强人耳可听到的频率,而MFCC图是MFCC图随时间变化的视觉表示,就像频谱图用于FFT一样。
考虑到神经网络必须在微控制器上运行,而不是在服务器主机上运行,我们尝试使用本应降低CPU执行的计算工作量的方法。这个想法是只利用一秒钟音频的MFCC,因为婴儿的哭声并不是几毫秒内就能出现和消失的,再加上其他一些功能。在第一次尝试中,选择了许多不同的特征(MFCC、mel光谱、色度、对比度、tonnetz、平均能量、质心和滚降频率),但继续测试,我们意识到增加MFCC和mel光谱精度(使用更高的频率分辨率)并消除其他特征效果更好。最终,由128个mel频谱样本和30个MFCC样本组成的158个特征集为该应用提供了最佳结果,证明有时计算能力不如开发背后的工作重要。
 
 
  1. 2.1.3培训和分析

网络开发及其培训使用Keras工具(基于Python),在这个过程中它们会发生很多变化:每次训练步骤结束时,都会借助“混淆矩阵”对结果进行分析,这是一种知道哪些类别与哪些类别错误的方法,是衡量类别之间“串扰”(假阳性和假阴性)的一种方法。在当前的应用案例中,混淆矩阵显示了婴儿哭被误认为狗叫或男人说话被误认为婴儿的次数和百分比。

经验教训表明,该矩阵导致了对不同错误的识别:上述“非婴儿”数据量过高,训练阶段使用了错误的参数,节点数量增加对某些类别没有帮助,最重要的是,不同的特征有助于识别不同的类别,因此,例如,如果说tonnetz在对街头音乐进行更高精度的分类方面具有优势,那么另一方面,更高的复杂性给婴儿哭声的识别带来了问题。A.最初,线性网络与神经网络一起进行了测试,以比较结果,看看它是否能够获得良好的精度,但这还不够,因此重点转移到了深度前馈神经网络上。然后,使用不同的网络结构进行了几项测试:改变隐藏层的数量及其神经元,以及激活函数,以获得尽可能高的准确性。最后,发现准确度和复杂性之间的最佳权衡是一个具有两个隐藏层的神经网络,每个层有100个神经元。
对于训练和交叉验证结果,最终网络在整个数据集上的总体准确率现在为85%,在婴儿哭闹类别上的准确率几乎为90%。这个结果在理论上是好的,但当网络分析真实数据时,会考虑一组全新的变量,结果的准确性可能会略低。
 


 

2.2机器学习在运动上下文识别中的应用


由于该应用程序还旨在识别上下文,而不仅仅是监测婴儿的状况,因此使用了-轴(加速度计和陀螺仪)运动传感器LSM6DSOX,利用其嵌入式机器学习功能,能够在不使用微控制器资源的情况下提供分类。它的机器学习核心(MLC)就是设计用来处理其电路内部的数据。MLC有一个相对简单的决策树逻辑,即一个由一系列可配置节点组成的数学工具,每个节点都有一个“if-then-else”条件(针对阈值的输入信号)。你可以在这个链接
 

你也可以在Github上找到许多关于MLC使用的例子(链接)。
 

2.3应用开发板

 
当为微控制器应用移植神经网络时,STM32CubeMX.AI包被热烈建议转换网络。T该软件中嵌入的人工智能工具可以将大多数神经网络结构文件转换为C代码,并在固件项目中导入所有能够在微控制器上使用的库。STM32CubeMX.AI还可以检查对象中的神经网络是否符合所选微控制器的功能。在我们的情况下,网络结构相对于STM32L4R9存储器的大小非常小。
在转换了特征提取算法之后,该应用程序终于可以进行测试了。选择的平台是SensorTile.box,因为它是一块已经可用的板,将MEMS麦克风、LSM6DSOX和连接到MCU(STM32L4R9)的温度传感器封装在一起。这个演示板还可以连接到手机应用程序(ST BLE传感器)以向用户提供图形反馈。这允许在同一页面上显示NN和MLC网络,第三个图标仅在婴儿哭泣且车辆静止时提醒用户。这种情况非常危险的温度阈值尚未决定,因此没有实施,但系统也准备导入该功能。
 
      

 

3.接下来的步骤

 
下一步的第一步是在真实世界的数据上测试应用程序的性能。到目前为止,这些测试都是在一小部分婴儿身上进行的(没有采取危险的方法让他们哭),改变测试对象可能会带来一些问题。如果婴儿哭闹探测器要用作安全装置,即使系统精度略有下降,也要进行调查和纠正。
应该进行研究,以确定婴儿处于危险中的温度范围,并决定在系统中实施哪个阈值。这项研究还应该让医务人员参与,以确保安全水平尽可能保持在最高标准。
此外,该演示应用程序已准备好在ST BLE Sensor应用程序上使用,但该应用程序旨在向所有人展示ST环境的功能,它无法在后台运行并向用户发送通知。因此,必须开发一个自定义应用程序,以便通过美国使用的基于e-911的系统将结果快速传达给家长,甚至指定的机构。