***这篇博客的所有内容都是约翰·马尔姆写的,博士。 约翰D.是数值分析和算法开发的专家。 他在Imagimob公司担任机器学习开发人员***
我们生活在一个数据世界里。 几乎每个人都在谈论数据和我们可以从中提取的潜在价值。 大量的原始数据对我们来说是复杂和难以解释的,在过去的几年里,机器学习技术使我们有可能更好地理解这些数据,并利用来造福我们。 到目前为止,大部分价值都是由在线企业实现的,但现在价值也开始扩散到由传感器生成数据的物理世界。 然而,对于许多人来说,从传感器数据到嵌入式AI模型的路径似乎几乎是不可克服的。
Writing embedded software is notoriously time-consuming, and is known to take at least 10-20 times longer than desktop software 被发展的状态开发区 [1]. It does not have to be that way. Here, we will walk you through a real AI project—from to embedded application—using our efficient, time-saving method.
机器学习的边缘
今天,处理和解释传感器数据的绝大多数软件都是基于传统的方法:变换、滤波、统计分析等。 这些方法是由一个人设计的,他参考他们的个人领域知识,在数据中寻找某种“指纹。 通常,这种指纹是数据中事件的复杂组合,需要机器学习才能成功地解决问题。
To be able to process sensor data in real-time, the machine learning model needs to run locally on the chip, close to the sensor itself—usually called “the edge.” Here, we explain how a machine learning application can be created, from the initial data collection phase to the final embedded application. As an example, we look at a project we at Imagimob carried out together with the radar manufacturer Acconeer.
嵌入式AI项目:手势识别
(左)Acconeer生产世界上最小、最节能的产品雷达系统。
在2019年,Imagimob与Acconeer合作,创建了一个带有手势识别的嵌入式应用程序。 两家公司都专注于为小型电池供电设备提供解决方案,对能源效率、处理能力和BOM成本提出了极端要求。 我们的目标硬件包含一个基于ArmCortex-M0-M4架构的MCU,它提供了市场上最节能的平台。 对于我们Imagimob来说,边缘计算几乎已经成为最小ArmCortexM系列MCU上的高级计算的同义词。 重要的是,能够运行我们的应用程序在下端的ArmCortexM系列MCU,因为它向世界表明,我们正在瞄准地球上最小的设备。 这就是我们希望从市场角度出发的地方。
Acconeer生产世界上最小、最节能的雷达系统。 数据包含大量信息,对于手势控制等高级用例,需要复杂的解释。 在数据输出流的顶部运行机器学习软件对这些案例有很大的好处。 因此,Imagimob-Aconeer协作在创建全新的和创造性的嵌入式应用程序方面是一个很好的匹配。
我们与Acconeer的项目的目标是创建一个嵌入式应用程序,该应用程序可以使用雷达数据实时分类五种不同的手势(包括用于唤醒应用程序的一个手势)。 由于雷达体积小,可以放置在一对耳机中,手势将作为虚拟按钮来引导功能,通常被编程成物理按钮。 该项目的最终产品被确定为一个运行在ArmCortex-M4架构上的C库,该库于2020年1月在拉斯维加斯的CES上被展示为一个健壮的现场演示。 对于演示,我们使用耳朵耳机。 然而,我们的长期产品目标是在耳内耳机中使用这项技术。 我们认为,手势检测特别会改变耳内耳机的可用性,因为它们的面积有限,这使得物理按钮的放置变得困难。
从数据收集到嵌入式C库
在其核心,(监督)机器学习是关于找到一个函数(F),根据y=f(X)将一些输入数据(X)映射到一些输出数据(Y)。 该函数或“模型”是通过处理许多不同的输入/输出对(x,y)和“学习”它们之间的关系来找到的。 如果y是一个连续的值,那么这个问题被称为回归问题。 但如果y取离散值,则被认为是一个分类问题。 因此,机器学习项目的第一步是收集这些数据对。 模型构建是第二步。 嵌入式项目的最后一步是在目标平台上部署模型。 下面,我们以手势识别项目为指导示例,通过这些步骤。
机器学习项目的第一步是收集数据对。 模型构建是第二步,a嵌入式项目的最后一步是在目标平台上部署模型。
1.数据收集
(左)我们为初始阶段建造了一个粗糙的试验台data collectionwhich 由雷达传感器组成 安装在上面development 板和放置在一个 一对耳机。
从表面上看,数据收集似乎不是一项艰巨的任务。 但这一步通常被低估了,根据我们的经验,这是大部分时间都花在这里的。 首先要考虑的是如何从传感器中物理地获取数据。 许多传感器带有一个开发板,可以从中提取数据,通常是通过某种电缆连接到PC机。 对于手势识别项目,我们搭建了一个粗糙的试验台,用于初始数据采集,由安装在开发板上的雷达传感器组成,放置在一对耳机上,如下图所示。 在这种情况下,我们使用了AcconeerXM112雷达传感器和XB112突破板。
接下来要考虑的是如何有效地标记数据。 换句话说,你需要弄清楚如何为每个“x”标记适当的“y”。这可能看起来很琐碎,但当涉及到最小化这一步所需的人工工作量时,这是至关重要的。 考虑到大量的数据,如果您不能正确地理解这一点,它将成为一项非常耗时的任务。 对于传感器时间序列数据,通常不可能仅仅通过查看数据来标记数据,否则,例如图像数据可能是可能的。
帮助标记过程的一种方法是将视频记录附加到数据中。 ImagimobCapture是一个Android应用程序,它将同步视频记录附加到每个传感器数据流中。 标签可以直接在应用程序中完成,也可以在桌面应用程序ImagimobStudio中完成。 在我们的雷达手势识别项目中,数据流看起来如下:
雷达手势识别项目中的数据流。
在这里,数据从传感器,带有USB串口,发送到PC。 在PC上,服务器运行并将数据发送到手机上的ImagimobCapture,而手势则被视频记录。 标记的数据,连同其视频记录,然后发送回PC,或云存储,如果数据是远程收集。 从存储中,数据可以下载到ImagimobStudio,当它是建模阶段的时候。
我们定义了以下一组手势(“覆盖传感器”仅用于唤醒应用程序),并记录了大约七个不同的人的数据。
从七个不同的人记录了上述一组手势的数据。
数据收集过程的一个例子如下图所示。 手势识别模型仅限于特定的手势,但可以很容易地用其他手势进行再训练。
手势数据采集过程的一个例子。
2. 建模
一旦数据到位并贴上标签,就该建立机器学习模型了。 通常,人们开始建立模型只是为了很快意识到他们需要调整一些标签。 你是做什么的? 手动进入并编辑文本文件和更新数据是很麻烦的,这是我们都希望尽可能避免的。 相反,图形工具是可取的。 Imagimob Studio将数据与视频记录一起加载,并允许用户以图形方式拖动和修剪标签。 一个例子,以一个记录的手势,显示在下面的图像。 视频与绿色数据一起可见。 在底部,蓝色的标签显示出来,我们可以看到它们紧紧地放在手势周围(非零数据)。
Imagimob Studio将数据与视频记录一起加载,并允许用户以图形方式拖动和修剪标签。 这是一个有记录的手势的例子。
如果数据已经在ImagimobCapture中预先标记,那么通过文件并确保数据是正确的,并且标签已经到位,这是一个相对较小的任务。 没有正确标记的数据,很难找到一个好的模型。 找到一个高精度的好模型通常需要多次迭代和实验。 首先要决定使用什么机器学习技术,例如随机森林、支持向量机或人工神经网络等。 在过去的几年里,深度学习由于具有原始数据的令人印象深刻的学习能力而受到欢迎。 深度学习的主要吸引力之一是它排除了手动查找功能的需要,这是更传统的机器学习方法所需要的。 它具有提高精度和消除大量手工工作的潜力。 然而,仍有许多所谓的超参数有待选择,例如网络的体系结构、所谓的学习率和许多其他参数。
在ImagimobStudio中,用户经历了构建深度神经网络的过程。 用户定义要试用多少种不同类型的超参数,然后程序自动搜索所有组合并保存最佳模型。
在ImagimobStudio中,用户被引导通过构建深度神经网络的过程。 用户定义要试用多少种不同类型的超参数,然后程序自动搜索所有组合并保存最佳模型。
一旦您对模型的健壮性感到满意,就该是过程中的最后一步了:将模型导出到C代码并为嵌入式硬件构建库。
3. 部署
当从PC环境中的高级语言软件开发到微控制器(MCU)上的低级编程时,复杂性急剧增加。 发育时间增加的因子为10-20并不少见[1]。 例如,障碍可能包括更难的内存和处理限制,更长的调试周期,以及更难找到的更糟糕的错误类型。
在ImagimobStudio中,以.h5文件形式训练的模型很容易转换为特定硬件类型的C代码,如“Edge”选项卡所示。
在ImagimobStudio中,以.h5文件形式(用于从Tensorflow、Keras和其他深度学习框架导出模型权重和体系结构的通用格式)的经过训练的模型可以很容易地转换为特定硬件类型的C代码,如上一幅图像中的“Edge”选项卡所示。
然后编译C代码并将其闪烁到硬件上。 我们通常构建一个库,可以集成到C应用程序中。 右边,可以看到现场演示的嵌入式版本。它有一个电池驱动的Acconeer物联网模块XM122与蓝牙连接。 人工智能应用程序运行在XM122模块上,其中包括来自北欧半导体的NRF52840SoC,该模块基于ArmCortexM4MCU。
现场演示的嵌入式版本。
在这里,你可以看看最后的演示:
Imagimob手势检测库规范
图像手势检测库的核心是针对时间序列数据的人工神经网络。 它是专门设计的,脑海中有一个小的记忆足迹。 库用C编写并在静态库中编译,然后与主AcconeerC应用程序一起编译。
· The Gesture detection library uses radar data from the Acconeer XM122 IoT Module as input
· The memory footprint of the gesture library is approximately 80 kB RAM
· The library runs on a 32-bit 64 MHz Arm Cortex M4 MCU with 1 MB Flash and 256 kB RAM
· The library processes roughly 30 kB of data per second
· The execution time of the AI model is roughly 70 ms which means that it predicts a gesture at approximately 14.3 Hz
下一步:手势控制的内置耳机
在2020年6月,由Imagimob、Acconeer和Flexworks组成的一个财团从瑞典Vinnova获得了价值45万$的赠款,以采取下一步建设gesturhe控制的耳内耳机。 Acconeer将覆盖传感部分,Flexworks将负责硬件和力学,我们在Imagimob将开发手势检测应用程序。 在这个项目中,我们不仅将建立第一个手势控制的耳内耳机,而且我们还将致力于一个硬件加速系统的机器学习代码在单片机上。 我们将继续使用ArmCortexM系列,并受益于Arm提供的先进解决方案。
约翰·马尔姆博士。 D.是数值分析和算法开发的专家。 他在Imagimob担任机器学习开发人员。
证明书(帮助或意见的)征求
[1]McConnell,史蒂夫,软件估计,神秘的黑色艺术,微软出版社,2006年
评论
查看更多