隔离,流行病和社交距离对无论是否感染得每个人来说都很艰难。在Zoom上社交和在现实中并不完全相同,我对每周进行的DS9观看派对也失去了一些动力,但我们还要继续前进。
我的工作也一样。通常情况下我喜欢工作并且解决在我周围发现的问题,但这些天我的工作环境受到严重限制(见下图)。他们说现在是写小说的好时机,但我并不擅长写作,我宁愿创造些什么。我早上需要参加很多会议,然后下午开始工作。
最近我一直想建立一个新项目,但一直没有时间。我有很多有趣的项目都归功于一些新的硬件,而最近我还没有拿到任何一个。 我可以很轻松的构建分类器,因为现在的我只有一个状态:在这个房间,坐着,工作。 除了风扇的声音和狗狗在我脚下打鼾的声音外,我周围没有什么其他声响了。
如果太无聊该怎么办?
那就开始用Edge Impulse吧!
https://edgeimpulse.com/
Edge Impulse是一家新公司,为人们提供在嵌入式设备上实现ML更容易的解决方案。 如果您有ML的经验,那就更不用担心了,它将训练模型和测试的过程分为几个离散的步骤。这些被称为Impulses的东西实际上是具有预处理选项的模型组合。最重要的是它可以实现自动训练。 它可以被视为迈向全自动机器学习的下一步。 如果您不知道如何训练模型,请不要担心。 如果您知道如何训练模型,则可以切换到类似Jupyter的完整开发模式。如果您很熟悉Keras,那么会是一个很好的开始。
Edge Impulse在Tensorflow Lite Micro内部运行,因此它仅适用于少数应用和少数开发板上,但是仍保留很多其他应用的机会。 如果您想对振动或声音进行分类,此应用模型和Impulses自Edge Impulse推出以来就已经存在使用,从上周开始计算机视觉对对象进行简单分类的功能也已经在使用了。
上周,我有幸与Arm Innovator和OpenMV联合创始人Kwabena Agyeman一起参加了Innovation Coffee的活动,他宣布了OpenMV 和Edge Impulse的集成。 这为OpenMV添加了更多工具也为Edge Impulse添加了更多硬件支持,两者的结合意味着可以更容易地为计算机视觉应用开发TinyML。
我已经与他们互动了一段时间,因为他们是我们的AI合作伙伴,但是我作为传播者的工作却疏忽了…直到现在。
Edge Impulse的技术文档是经过缜密的工作才完成的,并附带一些教程,其中还提供了音频分类的教程,使Edge Impulse变得非常容易上手使用。它甚至可以把智能手机当作捕获设备,这意味着可以很快完成原型制作。唯一剩下的问题是在自己有限的环境下如何进行分类?
这只狗狗叫Porkchop,除了扮可爱和打鼾他几乎不做任何事情。上一张关于我办公坏境的照片可以证明(我们甚至看不见她的身影),她几乎无时无刻都在睡觉。所以是时候对她睡觉时的鼾声进行分类了。Edge Impulse使数据获取以及模型训练都变得容易。通过网络工具,可以使用智能手机或终端设备来收集数据。 我坚持选在使用手机。那么步骤列举如下:
1.捕获数据
2.确认数据无差错
3.设计你的Impulse
4.训练模型
5.测试并部署
可以用以前的数据或使用Edge
Impulse
我真正遇到的问题地方是我的数据。 在本文发布时,Edge Impulse还是没有任何数据编辑工具。 但是Edge Impulse是一个全新的工具,他的团队一直在忙于推出新功能,因此请期待这种情况会改变。 也可以随时在Edge Impulse论坛上提出新功能请求。
数据的问题是这样的:通常不同类别之间需要很明确的界限。 考虑到我用了自然捕获声音的方法(手机录制了30至60秒狗狗打鼾的声音),这些声音穿插着沉默或“背景音”。 这意味着我的“打鼾”数据与我的“背景音”数据大致有50%至70%相同。 这是一个常见的数据问题,有时某些应用是没办法收集到理想状态下的数据的。
解决这个问题的方法很简单:将背景噪音编辑去除,让“鼾声”数据只包含鼾声。幸运的是,在可视化和编辑音频数据方面有很多python库可以使用,最受欢迎的是librosa和pydub。用这两种方法我可以轻松去除所有我不需要的空洞噪音,并获得完整的鼾声样本。可以在这里查看相关笔记。
还有其他一些方法我没有尝试过:K-Means方法可以把把鼾声分离出来并放大。我还手动编辑了第一个来检查音频是否可以得到一个尖峰。
如果你对K-means音频功能感兴趣,可以阅读这篇论文
Edge pulse的最佳功能是易于部署。你可以将构建的Impulse导出为C++、ARDUNO或Cube.AI CMSIS-PACK的二进制库,也可以将它导出为能在浏览器中运行的WebAssembly包。这意味着支持大多数基于Arm Cortex M和Cortex A的硬件,仅需简导入一个库就可以了。
为了更方便地部署,Edge Impulse还致力于扩展固件库,这样可以支持在开发板上的直接部署。目前,Edge Impulse支持的设备包括ST IoT Discovery Kit、Arduino Nano 33BLE和Eta Compute ECM3532 AI传感器。
我下一步要做的是把它部署到Arduino Nano上,然后把它做成项圈。 那么你的下一步是什么呢?
作者:Karl Fezer
翻译:Khorina
原文链接:https://community.arm.com/innovation/b/blog/posts/edge-impulse-updates-provide-relief-to-bored-developers