在过去的几个月中,你可能已经听说过有关TinyML的话题:以1mW的功率在Cortex-M芯片上运行机器学习模型的想法。 在本文中,我将介绍TinyML,音频识别应用程序以及它在Cortex-M4开发板上的入门。
TinyML很强大是因为它帮助微型设备基于大量数据采集制定决策方法,而不会浪费时间和精力传输数据。假设你正在追踪非洲大草原的动物行为,你想知道狮子在一天中不同时间咆哮的频率。
你可以选择以下方法收集数据:
•躲在草丛中,用记事本和铅笔记录每次听到的吼声。
•用设置好的带电池的录音机记录,每隔几星期去更换存储卡。
•通过数据连接(如蜂窝网络)传输音频。
以上所有方法都有以下缺点:
•将人员留在现场是非常昂贵的,同时还需考虑他们的安全问题
•驾车去收集存储卡需要耗费时间和钱,而且每隔几周才可以获得新数据。
•传输数据会消耗大量能量和钱,并且大部分地区的网络带宽也受到限制。 这种方法可能会更快地获得数据,但仍需定期开车去更换电池。
除了这些缺点以外,在录音中数出狮子的吼声真的很无聊,而且还需要花费宝贵的资金。训练机器学习模型来识别录音中的狮子吼声并自动计数可以减轻这一烦恼。 为此需要先收集一组带标签的数据输入到算法中,然后创建一个模型来识别音频中的吼叫声。
这将解决需要花费数小时收听Savanna音频的问题。但是这样仍然保留了上述缺点。
在过去,机器学习模型只能存在于强大的大型硬件上,导致它们大多数时候只能在实验室的服务器上运行。 但是近年来机器学习算法和低功耗硬件已经发展到可以在嵌入式设备上运行复杂模型的阶段。
如果我们采用狮吼计数模型应用在嵌入式设备中并部署到野外,我们会获得以下优势:
•我们的设备无需通过昂贵的高带宽网络来发送记录到的音频,而是可以当场计算听到的吼声数量,并发送极低功率的远程无线电,像LoRa那样。
•获得咆哮声的数量就够了,所以不需要存储音频以及收集存储卡。
•此设备很便宜且功耗极低,仅用一个电池即可运行数年。
•没有人需要听100小时的野生动植物混合录音带了。
这听起来是一个很好的解决方案。 我们解决了一些实际问题,并获得了比以前更便宜更可靠的解决方案。
但是机器学习是一个令人生畏的主题。 它技术性很强并涉及许多新概念,它也存在很多陷阱,可以很容易地训练一个看似有用但无法工作的模型。
更重要的是,在嵌入式设备上运行机器学习代码非常困难。 除了需要了解机器学习和信号处理算法的知识外,通常还会受制于硬件性能的限制,可能要运用书中的所有技巧才能发挥给定类型芯片的全部性能。
当我们写《 TinyML》这本书时,我意识到尽管任何人都可以轻松地开始学习基于嵌入式设备的机器学习。但想要构建出可用于生产的东西却会困难得多。 对于专注解决实际问题的普通工程师来说,一天中没有足够的时间来学习机器学习, 更不用说要为特定的微控制器架构优化底层ML代码了。 机器学习听起来是一个不错的解决方案,但是它需要大量的投入来学习和使用。
这就是为什么我对Edge Impulse感到非常感兴趣的原因(事实上我因为太感兴趣而加入了这个团队)。 它是一组用于处理机器学习中繁琐部分的工具,使开发人员可以专注于他们要解决的问题。 Edge Impulse让收集数据集,选择正确的机器学习算法,训练生产级模型以及测试的过程变得容易。 然后它将整个内容导出为可以轻松放入项目中的高效,高度优化的C ++库。
使用Edge Impulse创建咆哮计数模型的步骤很简单:
1.收集少量音频数据,给他们标记为“吼”或“非吼”,整个过程只需几分钟就可以完成。
2.使用Edge Impulse CLI将数据上传到Edge Impulse。
3.按照说明训练简单模型。
4.添加更多数据并调整模型的设置直到获得所需的精准度。
5.将模型导出为C ++库,并将其添加到嵌入式项目中去。
整个过程可以在几分钟内完成,你不必亲自参观非洲大草原。 相反,你可以慢慢学习这个教程,视频形式教程在此提供:Recognize sounds from audio
由于现实中没有狮子,所以本教程训练了一个可以识别家庭声音的模型:即水龙头发出的自来水声。 要训练的模型大小约为18Kb并且体积小巧,却可以运用在复杂应用的同时为应用程序代码留出大量空间。
如果你有一个基于Arm Cortex-M4的STM32 IoT Node Discovery Kit 套件开发板,就可以通过WiFi或串行捕获自己的数据集。 如果你没有或者正在等待一个板子,可以下载我从Sunnyvale公寓收集的数据集。 Edge Impulse构建了一个可以内置到任何Cortex-M或Cortex-A设备中紧凑独立的C ++库。 我们自动使用FPU,矢量扩展,CMSIS-DSP和CMSIS-NN来优化性能,并最大程度地减少RAM和闪存的使用。
除狮子和水龙头外,TinyML还有很多不同应用。 想象一下可以识别语音命令的微型设备:当机器出现故障时进行识别,根据周围的声音了解房屋中发生的活动。 它最大的优点是借助设备上的推理功能可以保护用户隐私-无需将任何音频发送到云上。
通过使用Edge Impulse任何开发人员都可以轻松构建ML应用程序,Edge Impulse为所有想把惊人想法应用在硬件领域的人实现了梦想。 我们随着技术的发展不断改进我们的平台,因此每个人都将从最新的算法和技术中受益。
成为一名嵌入式工程师是令人激动人心的事情。 我们很想听听你们打算创建什么。 试试我们的音频分类教程,在论坛和@edgeimpulse Twitter的评论中告诉我们你的想法。
作者:Mary Bennion
翻译:Khorina
原文链接: https://community.arm.com/developer/ip-products/processors/b/ml-ip-blog/posts/train-a-tinyml-model-to-recognize-sounds-that-uses-23-kb-of-ram