资料介绍
描述
介绍
在这个项目中,我围绕一个训练识别单词left 、right 、up和down的模型构建了一个应用程序。它所做的只是捕获和处理音频,将其输入 TensorFlow Lite 模型,然后在 OLED 显示器上显示输出。我将介绍如何使用 i.MXR1010 评估套件在边缘设置和进行机器学习。
设置开发环境
任何机器学习和嵌入式电子项目都需要许多硬件和软件才能使用。我正在使用 MacOS 进行开发。由于 Nvidia GPU 不支持 MacOS,所以我使用 Linux 桌面进行训练和模型生成。
安装 MCUExpresso IDE
下载 SDK 后,我们需要将下载的包拖放到 MCUExpresso IDE Installed SDKs区域,如下所示(红色框)。
我们可以从 Quickstart Panel > New Project 创建一个新项目,它会显示一个向导,我们可以在其中选择 IMXRT1010 作为开发板。我们可以使用此向导配置所需的驱动程序/组件,如下所示。添加/删除驱动程序和其他组件可以在此期间完成。发展。由于我们将使用 TensorFlow C++ 库,所以我选择了C++ Project 。
为微控制器安装 TensorFlow Lite
用于微控制器的 TensorFlow Lite 能够生成包含所有必要源文件的独立项目。我的 MCUXpresso IDE 工作区位于 ~/Documents/MCUXpressoIDE_11.1.0/workspace/。您可能需要根据您的目录结构更改路径。我们还需要制作3.82 或更高版本。MacOS Catalina 上捆绑的make版本为 3.81。我们可以使用安装所需的版本
brew install make
并且可以使用gmake命令运行它。
cd ~
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
gmake -f tensorflow/lite/micro/tools/make/Makefile generate_projects
cp -r tensorflow/lite/micro/tools/make/gen/osx_x86_64/prj/micro_speech/make/* ~/Documents/MCUXpressoIDE_11.1.0/workspace/IMXRT1010_Speech_Recognition/source
复制后,我们将拥有 TensorFlow C++ 库以及其他一些用于音频处理的第三方库。我们需要使用Quickstart Panel > Edit Project Settings > C/C++ build > Settings > MCU C++ Compiler > Includes为不属于 SDK 的库(在下面的屏幕截图中突出显示)设置包含路径。
应用程序将捕获的音频数据保存在运行时创建的缓冲区中,因此我们需要将默认堆大小(仅 2KB)调整为 14 KB。此外,一些缓冲区数据需要是不可缓存的。我们可以利用 i.MXRT1010 的FlexRAM功能。堆栈/堆大小和不可缓存数据可以使用Quickstart Panel > Edit Project Settings > C/C++ build > Settings > MCU C++ Linker > Managed Linker Script进行配置。
i.MXRT1010 具有有限的 128 KB 内存,分为 32 KB 库。由于内存溢出,编译失败。
section `.heap' will not fit in region `SRAM_DTC'
arm-none-eabi/bin/ld: region `SRAM_DTC' overflowed by 15920 bytes
Memory region Used Size Region Size %age Used
BOARD_FLASH: 215432 B 16 MB 1.28%
SRAM_DTC: 48688 B 32 KB 148.58%
SRAM_ITC: 0 GB 32 KB 0.00%
SRAM_OC: 0 GB 32 KB 0.00%
NCACHE_REGION: 4748 B 32 KB 14.49%
多亏了FlexRAM ,我们可以使用下面的代码配置变量声明以选择内存库。__DATA(RAM3)用于告诉编译器将大约 16 KB 的变量g_audio_capture_buffer保存到 FlexRAM 的 OCRAM 部分 (SRAM_OC) 中。
__DATA(RAM3) int16_t g_audio_capture_buffer[kAudioCaptureBufferSize];
编译后,我们可以在下面看到内存分配的编译器输出。
Memory region Used Size Region Size %age Used
BOARD_FLASH: 231432 B 16 MB 1.38%
SRAM_DTC: 32688 B 32 KB 99.76%
SRAM_ITC: 0 GB 32 KB 0.00%
SRAM_OC: 16000 B 32 KB 48.83%
NCACHE_REGION: 4748 B 32 KB 14.49%
训练数据集和模型生成
我们使用的模型是使用 TensorFlow Simple Audio Recognition 脚本训练的,这是一个示例脚本,旨在演示如何使用 TensorFlow 构建和训练音频识别模型。该模型在带有 eGPU(Nvidia 1080 Ti)的 Linux 桌面上进行了训练,其中包含“上”、“下”、“左”、“右”四个词。数据集中的其他词被用作“未知”。将创建的模型转换为 TensorFlow Lite 模型,并将转换后的模型转换为 C 数组文件,以便与推理代码一起部署。TensorFlow Lite Micro SDK 用于在设备上运行推理。卷积神经网络用于模型创建。
设备端推理
使用带有增强型直接内存访问 (eDMA) 控制器的同步音频接口 (SAI) 捕获音频。该过程首先为给定的时间片生成快速傅立叶变换 (FFT),在本例中为 30 ms 的捕获音频数据。TensorFlow Lite 模型不接收原始音频样本数据。相反,它适用于频谱图,频谱图是由频率信息切片组成的二维数组,每个切片取自不同的时间窗口。我们可以将频谱图视为输入模型进行推理的图像数据。OLED 显示器通过 I2C 连接到 i.MXRT1010 EVK。The
预测的单词显示在 OLED 显示屏上。
构建和调试
可以分别使用 MCUExpresso IDE Quickstart Panel > Build和Quickstart Panel > Debug来构建和调试项目。使用菜单ConfigTools > Pins将 UART 引脚配置为在调试期间重定向打印。
在 MacOS 上可以使用以下命令查看调试打印:
screen /dev/cu.usbmodem14202 115200
板载 LED 也配置为在推理时闪烁。
演示视频
现场演示如下。它并不完美,但有效。
改进范围
如果使用 8 位量化模型,可以提高推理率。目前,TensorFlow Lite Micro SDK 中缺少一些操作,这些操作不允许将 Conv 2D 转换为量化版本。目前,由于音频数据中的口音或噪音,有时会漏掉一些单词。如果使用迁移学习使用更多自己的语音数据进行训练,则可以提高模型的准确性。此外,板载麦克风数据有一些噪音,可以使用某些设置进行修复,或者可以使用外部数字麦克风以获得更好的性能。
此应用程序的 MCUExpresso 项目可以在代码部分提到的 Github 存储库中找到。
- Helping Finger开源硬件
- 颜色循环开源硬件
- 开源硬件-警灯
- AirBits开源硬件
- 闪烁的LED开源硬件
- 智能积木开源硬件
- 可识别额外乘客设备的开源硬件
- 音箱开源硬件分享
- HBus开源硬件
- 门铃开源硬件
- 开源硬件之语音控制LED
- Arduino手表开源硬件
- 机械臂开源硬件
- 基于Arduino硬件光控灯制作资料 6次下载
- 主流的开源硬件有哪些详细资料说明
- 用小安派开源硬件制作一个桌面天气站 809次阅读
- 寻找开源硬件成功的触发器 636次阅读
- 当语音控制和语音接口开始渗透到所有消费类边缘设备 1673次阅读
- dfrobot语音识别控制板 介绍 2972次阅读
- 源创通信BPI-M1+ 开源硬件开发板介绍 2648次阅读
- 语音识别系统功能_语音识别系统的应用 5549次阅读
- 语音识别芯片的原理_语音识别芯片有哪些 5171次阅读
- 利用语音识别技术和嵌入式系统交叉研究是语音识别的一个重要研究方向 1445次阅读
- 语音识别技术的发展历程,语音识别是如何工作的?语音识别资料概述 1w次阅读
- 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi 6363次阅读
- 语音识别技术是什么_语音识别技术应用领域介绍 1.6w次阅读
- 从应用、算法、芯片角度了解语音识别技术 7723次阅读
- 开源硬件究竟有多“Open”?看完这个你就清楚了 6939次阅读
- 语音识别技术原理全面解析 1.2w次阅读
- 语音识别技术的应用及发展 2318次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多