littlebot
Published on 2025-04-11 / 1 Visits
0

【源码】基于C++语言和Edge Impulse框架的TI设备机器学习推理项目

项目简介

本项目提供了将Edge Impulse与德州仪器(TI)Code Composer项目集成的代码片段和操作指南。借助Edge Impulse的开源C++库,可将训练好的学习算法部署到所有德州仪器的SimpleLink设备上。项目重点在于指导用户把Edge Impulse SDK集成到现有的Code Composer Studio项目中,实现嵌入式设备上的机器学习模型推理,适用于加速度计数据分类、语音识别等多种场景。

项目的主要特性和功能

  1. 集成便捷:提供将Edge Impulse库集成到TI Code Composer Studio项目的详细步骤,方便用于自定义硬件设计。
  2. 多场景支持:包含加速度计数据分类和语音识别等示例,适用于不同类型的传感器数据处理。
  3. 代码质量高:代码遵循良好编程习惯和规范,函数和变量命名清晰,结构易懂,可复用性好。

安装使用步骤

前提条件

集成Edge Impulse库到项目

  1. 将Edge Impulse项目部署为C++库并解压下载的存档,得到edge-impulse-sdktflite-modelmodel-parameters三个目录。
  2. 将上述三个目录复制到Code Composer项目的根目录。
  3. 添加所需的包含路径到项目,复制以下路径并粘贴到Project -> Properties -> Build -> Arm Compiler -> Include Options${PROJECT_ROOT}/edge-impulse-sdk/porting ${PROJECT_ROOT}/edge-impulse-sdk/dsp ${PROJECT_ROOT}/edge-impulse-sdk/classifier ${PROJECT_ROOT}/edge-impulse-sdk/CMSIS/DSP/Include/
  4. 对于使用SimpleLink™ CC13x2_26x2 SDK的设备,启用Edge Impulse SDK中内置的TI移植功能。复制以下定义并粘贴到Project -> Properties -> Build -> ARM Compiler -> Predefined SymbolsEI_PORTING_TI=1
  5. 很多项目需要修改堆栈和堆配置,确保Edge Impulse SDK运行时有足够内存:
    • 运行推理时调用堆栈深度通常比标准物联网库和应用程序大,执行Edge Impulse SDK的线程、进程或堆栈至少应有2kb可用空间。
    • Edge Impulse Studio的Deployment选项卡会显示项目所需的堆使用量,建议将堆大小配置为至少两倍于Edge Impulse所需的大小。

应用解决方法

根据使用的平台和工具链版本,应用相关的解决方法: - 若使用SIMPLELINK-CC13XX-CC26XX-SDK 5.40.00.40/6.10.00.00TIRTOSTICLANG 1.30 LTS时出现"error: use of undeclared identifier E*"错误,可将Simplelink SDK版本回退到5.20(或更早),或修改<SDK>\source\ti\posix\ticlang\errno.h文件,在文件末尾找到#endif /* ti_posix_ticlang_errno__include */并修改为: ```

include_next

endif / ti_posix_ticlang_errno__include /

`` - 若在Windows系统的Code Composer中出现"filename or extension is too long"错误,可将项目移动到C:/`下的新CCS工作区,并使用简短的工作区和项目名称。

后续步骤

集成库后,应用代码需要从传感器输入获取格式化的样本缓冲区,确定何时对数据进行分类,并根据结果执行相应操作。可参考以下示例: - ble_accelerometer:加速度计数据分类示例,适用于BLE互操作性和低频时间序列传感器。 - voice_recognition:语音识别示例,包含处理高频音频数据的必要优化。 - sdk文档:提供了Edge Impulse SDK的数据结构、例程和使用的详细文档。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】