本次项目用 Syntiant TinyML 开发板自带的麦克风,通过 Edge Impulse 搭建机器学习模型,使板卡上的 LED 灯根据中文语音指令呈现出不同效果。一共训练了四个标签的声音数据,具体说明如下。
标签
|
关键词
|
动作
|
turn_on_blue
|
打开蓝灯
|
使板卡上的 RGB LED 灯显示蓝色
|
turn_on_green
|
打开绿灯
|
使板卡上的 RGB LED 灯显示绿色
|
turn_on_red
|
打开红灯
|
使板卡上的 RGB LED 灯显示红色
|
turn_off
|
关灯
|
关闭板卡上的 RGB LED 灯
|
Syntiant TinyML Board 是美国 AI 芯片研发商 Syntiant 推出的一款 TinyML 开发板,它配备了超低功耗 Syntiant NDP101 神经决策处理器,可以使语音和传感器应用程序分别在 140 和 100 微瓦以下运行。与基于 MCU 的传统 MCU 相比,Syntiant TinyML 板的吞吐量提高 20 倍,系统效率提高 200 倍。
Syntiant TinyML 板的尺寸非常小,仅为 24 毫米 x 28 毫米,是一个小型的独立系统。开发者可以直接通过 Micro USB 连接硬件,通过 Edge Impulse 轻松下载经过训练的模型,而无需任何专用调试硬件。
硬件组成:
-
神经决策处理器使用 NDP101,连接了两个传感器
-
BMI160 6 轴运动传感器
-
SPH0641LM4H 麦克风
-
主机处理器:SAMD21 Cortex-M0+ 32 位低功耗 48MHz ARM MCU
-
内置 256KB FLASH 和 32KB SRAM
-
5 个数字 I/O(与 Arduino MKR 系列板兼容)
-
其中包含 1 路 UART 接口和 1 路 I2C 接口(包括在数字 I/O 引脚中)
-
2MB 板载串行闪存
-
一个用户定义的 RGB LED
-
uSD 卡插槽
-
电路板可使用 5V Micro-USB 或 3.7V LiPo 电池供电
打开
studio.edgeimpulse.com
网页,创建一个新的项目,例如 Syntiant_TinyML_Voice,作为本次语音训练的项目。
创建完成后进入项目主页面,在这里可以看到训练的大致流程:选择设备、选择语音输入源、采集语音数据、创建 Impulse 模型、训练数据、生成固件、部署到硬件。
语音数据采集方面,由于我们需要采集类似“打开红灯”这样的语音,为了方便采集和训练,我们将采集时长定为 2 秒。分别为四个标签采集 20 组数据,按照 8:2 的比例分为训练集和测试集。
采集数据后记得检查一下数据的质量,在 Data acquisition 页面选中任意一条采集的语音数据,可以看到声音的波形,回放该条录音。在训练之前需要确保所有训练和测试的数据完好,否则会影响训练效果。
如果数据没问题,接下来就可以创建机器学习模型,一共分为四个模块。首先是时间窗口的设置,对于 Syntiant TinyML 语音模块,Window size 大小固定为 968 ms,Window increase 设置为 30 ms(窗口增加设置比较小有利于机器学习匹配出语音)。第二个模块选择 Syntiant audio,第三个模块选择最近邻分类器(Nearest Neighbor Classifier),最后确认输出
turn_off
、
turn_on_blue
、
turn_on_green
和
turn_on_red
四个标签。点击 Save Impulse 保存模型。
然后设置 Mel 滤波器特征参数,这里采用默认参数。
开始训练模式,训练结果准确率为 90.2%,不是特别高,但也可以测试看看。
点击左侧边栏的 Deployment,选择 Syntiant NDP101 library 下载训练好的库,将其替换到你的工程中(参考
Syntiant TinyML Board 固件下载
)。
参考
Syntiant_TinyML_Board_Demo
中的 VoiceResponding 项目,修改标签名称及其触发的动作,代码如下。
void on_classification_changed(const char *event, float confidence, float anomaly_score) {
if (strcmp(event, "turn_on_red") == 0) {
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
if (strcmp(event, "turn_on_green") == 0) {
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_RED, LOW);
if (strcmp(event, "turn_on_blue") == 0) {
digitalWrite(LED_BLUE, HIGH);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_RED, LOW);
if (strcmp(event, "turn_off") == 0) {
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
digitalWrite(LED_RED, LOW);
通过 Arduino IDE 重新编译、上传到 Syntiant TinyML Board,就可以看到效果啦!
使用deployment部署到硬件上去,我使用的是openmv,直接在上面提供的硬件中找到openmv选择build,就会在电脑上下载到一个压缩包。要配置前面两个,都选择默认带星号的,然后观察有无四个标签,有的话就是正确的,(在点击这个之前好像会跳出了一个什么东西的,那个点否,否则会清除标签好像)先在桌面新建一个文件夹,然后打开openmv ide,在上面菜单栏中选择工具—数据集编辑器—新的数据集。这边还有一个versioning,是保存版本的,上面有retrain model重新训练的,
The content of this directory is not clear what it is about as it contains several C++ files.
2. art
buildcompilerdalvikvmdex2oatdisassembleroatdumppatchoatruntimesigc
Now that you've read the overview, it's adventure time!
In this tutorial, we're going to build a Chess game with React and React DnD. I'm kidding! Wr...
本项目基于Syntiant TinyML Board,通过Edge Impulse平台,在Web端实现数据采集、网络训练、模型部署,将神经网络模型固件下载至NDP101内,实现了三种中文指令控制LED灯,闪烁、开灯、关灯。
云端AI平台EdgeImpulse,可以做什么呢?可以帮助AI算法工程师进行模型训练,目前还有比较常用的工具如Tensor flow,有时候甚至需要利用算力更快的服务器集群去训练神经网络模型。
而Edge impulse是一个免费的模型训练平台,非常便捷的使用方法,致力于实现嵌入式系统的边缘计算开发,可以上传被训练的数据、打标、NN模型训练、优化、部署。
上传数据:
Edge Impulse是一个应用于嵌入式领域的在线的机器学习网站,不仅为用户提供了一些现成的神经网络模型以供训练,还能直接将训练好的模型转换成能在单片机MCU上运行的代码,使用方便,容易上手。本文就Edge Impulse的三大模型之一的分类模型进行浅析。
针对于图像的分类识别模型,读者可参考OpenMv或树莓派等主流图像识别单片机系统的现有历程,容易上手,简单可靠。单击此处转到——星瞳科技OpenMv
所以接下来的分析主要是针对数据进行识别的分类模型。...
利用嵌入式设备的实时性和低功耗特性,可以在设备本地进行异常检测,减少对云端计算资源的依赖,提高响应速度和隐私保护。然后,使用Edge Impulse的命令行工具或API,将训练好的模型转换为适用于ESP8266的格式,并将其加载到设备中。例如,如果我们要检测温度传感器的异常行为,可以收集一段时间内正常工作时的温度数据,以及已知异常状态下的温度数据。然后,使用Edge Impulse的数据标注工具,对收集到的数据进行标注,以便训练机器学习模型。其中,异常检测是一项重要的任务,用于监测和识别系统中的异常行为。
MLOps就是在大的DevOps的框架下,针对开发ML的应用的一套流程和相应的工具链。从数据收集、模型开发、训练,一直到ML的CICD、环境部署还有监控,还有实验管理等一切的工具。
简OpenStack单点来说就是一个云,一个属于自己的云平台,openstack的原版是亚马逊云,可以说openstack就是Rackspace和NASA的抄袭产物。官方点说一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。帮助服务商和企业内部实现类似于 Amazon ec2和S3的云基础架构服务(Infrastructure as a Service)。Openstack包括两个主要模块:Nova和 Swift。前者是NASA开发的虚拟服务器部署和业务计算模块;
接下来,打开 “Sketch” 菜单并选择 “Include Library” -> “Add .ZIP Library”,然后选择并导入 ESP CAM 库文件。在本文中,我们将介绍如何使用 Edge Impulse 平台进行边缘图像分类,并将分类模型部署到 TinyML ESP CAM 上。下载完成后,解压缩该文件,并将其中的 “model-parameters” 文件夹和 “tflite-model” 文件夹复制到 TinyML ESP CAM 的开发环境中。现在,我们可以开始编写代码了。