最新发布!codeproject指南,用于构建具有云连接的支持语音的tinyMLPoC...
o 基于NXP FRDM K66F开发板
o 使用了Tenserflow Lite开发框架
o 运行 MbedOS 6
o 使用 AWS 物联网接口
o 详细指南: https://www.codeproject.com/A...
通过云连接构建支持语音的智能家居TinyML解决方案
在本文中,我们展示了可以在内存受限的超低功耗端点设备上运行的,高级的,支持AI的应用程序的创建。
在这里,我们解释了如何构建具有语音功能的智能助手,该助手可以控制房间的常用功能,例如灯光和暖气。我们的示例在运行Arm Mbed OS的Arm Cortex-M设备上将TensorFlow Lite用于微控制器。
本文在CodeProject上为我们的赞助商提供的“产品展示”部分中。这些文章旨在为您提供有关我们认为对开发人员有价值的产品和服务的信息。
嵌入式和物联网设备越来越能够执行复杂的处理和分析。我们将说明如何构建具有语音功能的智能助手,该助手可以控制房间的常用功能,例如灯光和暖气。我们的示例在运行Arm Mbed OS的Arm Cortex-M设备上将TensorFlow Lite用于微控制器。
人工智能不再是重量级硬件所独有的。微控制器的处理能力的进步以及在端点上运行的新机器学习模型的开发使直接在设备上执行深度学习推理变得可行。您现在可以在消耗数十毫瓦的Arm Cortex-M设备上运行优化的机器学习模型。欢迎来到小型机器学习:tinyML!
TinyML源于开发超低功耗嵌入式系统的社区与专注于机器学习和数据科学的社区之间的合作。它提供了通过设备上机器学习来构建令人兴奋的新应用程序的方法。
这种新范例扩展了廉价且节能的微控制器(如Arm Cortex-M微控制器)的功能,使其变得“更智能”,同时还实现了更高的响应能力,可靠性和私密性。此类终端设备可以将从各种超低功耗传感器(例如用于语音或声音,视觉,环境,运动和健康监控的传感器)收集的数据与机器智能结合起来,这些传感器是由TensorFlow Lite for Microcontrollers或µTVM等技术提供的。
在本文中,我们描述了使用语音识别和云连接的智能家居设备的tinyML元素。我们将描述一个微控制器:
用车载麦克风聆听周围的环境
使用机载机器学习模型推断命令
相应地按照这些说明进行操作
除了对语音指令的设备上响应之外,微控制器还可以利用云连接性来传递信息,例如,有关传入数据中任何明显不一致的信息,以使用户可以从远程位置对其进行操作。当长时间保持加热或照明状态,或者系统知道用户通常不在室内时,可能会发生这种情况。
TinyML智能助手的构建基块
对于微小的硬件,我们的示例使用运行Arm Mbed OS的微控制器,该微控制器受众多Arm Cortex-M设备的支持。Mbed OS是一个开放源代码的IoT操作系统,虽然很小,但在安全性,ML,连接性以及传感器和I / O设备的驱动程序方面功能齐全。
Mbed OS提供了一个抽象层,使您可以编写C / C ++应用程序并在任何启用了Mbed的设备上运行它们。os.mbed.com上有详细说明,可帮助您设置使用Mbed OS完整配置文件。
这样做的好处是,您可以首先在任何合适的低成本开发板上工作,然后再部署到生产硬件中,而无需重写代码。对于此示例,我们需要具有Arm Mbed OS功能的设备,该设备还支持TensorFlow Lite for Microcontrollers。
恩智浦FRDM K66F是一个很好的例子,它具有用于语音检测的内置麦克风(以及其他声音输入扩展)。它还支持通过以太网的互联网连接,从而允许微控制器将消息发送到云。
您可以将Arm Mbed CLI用作本地计算机上的开发软件,以使用Arm Mbed OS 6创建,导入和构建项目。安装后,该工具将使用Mbed OS源代码以及语音辅助项目代码和它的依赖项,并使用Arm编译器或GNU Arm嵌入式编译器(GCC)对其进行编译。然后,您可以使用开发板与开发机器之间的串行连接,将生成的二进制文件刷新到开发板上。
嵌入式设备的微型机器学习
对于ML组件,我们使用TensorFlow Lite for Microcontrollers,它使您可以在微控制器和其他设备上运行基本的机器学习模型。它是用C ++ 11编写的开源软件,可以部署在内存受限的低功耗设备(例如基于Arm Cortex-M处理器的设备)中,只有几千字节的内存。它是如此之小,因为它被构建为适合资源受限的设备。
TensorFlow Lite for Microcontrollers当前受多种设备支持,并提供所有TensorFlow操作的子集。对于使用TensorFlow Lite进行设备上的培训,您必须在本地构建和训练模型,然后进行转换以减小其大小并使用TensorFlow Lite功能,然后再将其传输到设备上。
本示例使用的TensorFlow Lite机器学习模型基于预训练模型,该模型可以从语音数据中识别两个关键字(“是”和“否”)。但是,您可以重新训练模型以从Google的语音命令数据集中识别其他单词。
该模型由多层卷积神经网络组成,该网络由卷积2D层,完全连接的层或MatMul层(输出:对数)和softmax层(输出:概率)组成。
请查看Notebook文件,详细了解如何在简单的语音识别中设置和训练模型,如何冻结模型以及如何将其转换为TensorFlow Lite模型。您需要进一步将其转换为C字节数组,该数组可以存储在设备的只读程序存储器中,然后由TensorFlow Lite for Microcontrollers加载并执行。
可以在此Mbed指南上找到有关将TensorFlow Lite for Microcontrollers示例移植到最新的Mbed OS 6的更多说明,该示例用于将MicroSpeech示例部署到NXP K66设备。您可以将该项目用作起点,然后集成其他代码以响应语音指令或将信息向前发送到云。
将智能设备连接到云
语音助手使用WiFi连接,以便微控制器可以将数据发送到云,例如,它可以记录指令,操作和结果。此外,当传入的数据不一致时,例如,当长时间打开暖气或照明设备时,或者当系统知道用户通常不在室内时,它可以将信息发送到云。
Mbed OS可以与AWS IoT交互以管理设备网关和消息代理,消息代理在微控制器和云之间连接和处理消息。
助手与AWS MQTT代理对接,以在云中发布和订阅消息。在您的原型代码中,您首先需要登录一个AWS账户,并使用AWS IoT控制台设置设备凭证和策略。然后,让Mbed OS知道自定义终结点名称,为您的设备命名,并设置一个AWS和您的设备均可向其发布消息的主题。
查看有关AWS云的Mbed OS示例,以了解如何执行此操作的详细信息,并以该示例为起点为语音助手配置连接解决方案。最后,您可以将示例项目文档中描述的必要的AWS配置和连接支持添加到为将TensorFlow Lite模型部署到设备而创建的Mbed项目中。
总结
正如我们在高层展示的那样,可以创建复杂的支持AI的应用程序,这些应用程序可以在内存受限的超低功耗端点设备上运行。我们带您完成了构建“始终在线”的低功耗语音助手所需的难题。助手将诸如“点亮”之类的命令与周围的背景声音和其他语音区分开。当需要警告用户时,它会推断出正确的请求并对其进行操作,或者向云发送消息。
我们的tinyML示例使用了运行Mbed OS的Arm Cortex-M微控制器,并采用了一块用于原型代码的基本板,该代码可以移入生产环境而无需重写。使用Mbed OS为您提供了用于开发和部署的抽象层,以及功能全面的嵌入式RTOS。Mbed OS在此示例中处理了很多用例,例如声音检测和WiFi连接。
语音命令的推断工作由预先训练的机器学习模型执行。TensorFlow Lite for Microcontrollers提供了此专业知识,可让您基于在设备上运行的已建立的机器学习引擎。
了解更多
有许多资源可帮助您开始使用Mbed OS的tinyML语音应用程序:
博客:tinyML概述
指南:使用Mbed OS将微语音示例部署到NXP FRDM K66F
指南:通过Mbed OS与AWS Cloud的云连接
了解有关Mbed OS的更多信息
许可证
本文以及所有相关的源代码和文件均已获得The Code Project Open License(CPOL)的许可