欢迎光临散文网 会员登陆 & 注册

ESP32-S3 边缘人工智能|使用加速度计数据和 ESP-DL 识别人体活动

2023-06-09 11:45 作者:乐鑫信息科技  | 我要投稿

边缘计算是一种分布式计算范例,指在更靠近设备的地方进行数据存储和计算。边缘人工智能(边缘 AI)是边缘计算中一项振奋人心的成果,可以令传统技术更高效地运行,在降低功耗的同时又有更好的性能。训练好的神经网络可以在小型设备上进行推理。边缘 AI 的潜在应用领域包括制造业、医疗保健、零售业、监控、智能家居和金融银行业。 

乐鑫提供的 ESP-DL 框架可用于在 ESP32-S3 上部署高性能深度学习模型。

本文将介绍如何读取传感器数据,并使用 ESP-DL 在  ESP32-S3 上部署深度学习模型。 

本文分为以下四个部分 :
1. 部署模型 
2. 定义模型 
3. 运行模型 
4. 结论


ESP-DL 的使用前提】在深入了解 ESP-DL 之前,读者需要: 

  • 构建和训练神经网络的相关知识(查看深度学习的基础知识

  • ESP-IDF release/v4.4 环境(更多信息,请参考设置 ESP-IDF 环境或 ESP-IDF 工具链) 

  • 基础的 C 和 C++ 语言应用知识 

  • 转换成 ESP-DL 格式的模型 

1. 部署模型

使用加速度计数据设计卷积神经网络,识别人类活动。 
*本文不会重点介绍神经网络的开发和 ESP-DL 格式转换。 

1.1 ESP-IDF 项目结构

部署模型的步骤如下: 

  1. 首先,根据 ESP-IDF 标准在 VS Code 中创建一个新项目。有关如何在 VS Code 中创建 ESP32 项目,请参考 ESP-IDF 快速入门。 

  2. 模型转换成 ESP-DL 格式时生成的 .cpp 和 .hpp 文件需放置到当前工作目录中。 

  3. 将所有依赖组件添加到工作目录的 components 文件夹中。 

  4. 添加 ESP-WHO 示例的默认配置 sdkconfig 文件。sdkconfig 文件也可在 GitHub 找到。 

项目目录应如下所示: 

2. 定义模型

按下列步骤和步骤说明在 ‘model_define.hpp’ 中定义模型。在 Netron 中打开模型,会出现图 1 所示内容。 

可视化优化模型

2.1 导入库

导入所有相关库。请查看 ESP-DL 当前支持的库。 

2.2 声明层

下一步是声明每个层。 

  • 输入不算是层,因此不在此处定义。 

  • 除了输出层之外,其他所有层都声明为私有层。 

2.3 初始化层

声明层之后,初始化每个层的权重、偏差、激活函数和形状。 

2.4 构建层

下一步是构建每个层。有关构建层的更多信息,请查看每个层的构建函数。 

2.5 调用层

最后,将层连接起来,通过调用函数一一调用。有关调用层的更多信息,请查看每个层调用函数。 

3. 运行模型

构建好模型后,在 ‘app_main.cpp’ 文件中声明模型输入,并在 ESP32-S3 上运行模型。 

3.1 导入库

3.2 声明输入

神经网络的输入来自 MPU6050 加速度传感器。读取实时的传感器数据需使用乐鑫的  MPU6050 驱动。每四秒钟,传感器数据便会存储在一个数组中,输入到神经网络中进行预测。 

3.3 设置输入形状

设置张量中的数据,输入到神经网络。

3.4 调用模型

通过调用 forward 方法、传递输入调用模型。使用延迟来计算 ESP32-S3 运行神经网络所需的时间。 

3.5 监控输出

输出来自公共层,即 l6。结果可以在终端中打印出来。 

4. 结论

总之,这个项目可以给各种应用带更多可能,比如在工业领域开展预测性维护,在运动领域使用加速度计识别拳击中的出拳,在医疗保健领域进行跌倒检测。这只是一部分可以进一步探索的领域。如果想查看源代码,可前往 GitHub 仓库。


相关链接

  1. Github 仓库

    https://github.com/alibukharai/Blogs/tree/main/Activity_detection

  2. 边缘 AI 的潜在应用领域介绍

    https://www.xenonstack.com/blog/edge-ai-use-case

  3. ESP-DL

    https://www.xenonstack.com/blog/edge-ai-use-case

  4. ESP32-S3

    https://www.espressif.com/zh-hans/products/socs/esp32-s3

  5. 部署深度学习模型

    https://github.com/espressif/esp-dl/blob/master/tutorial/quantization_tool_example/README_cn.md

  6. 深度学习的基础知识

    https://www.youtube.com/watch?v=WvoLTXIjBYU

  7. ESP-IDF release/v4.4 环境

    https://github.com/espressif/esp-idf/tree/release/v4.4

  8. 设置 ESP-IDF 环境

    https://www.youtube.com/watch?v=byVPAfodTyY

  9. ESP-IDF 工具链

    https://blog.espressif.com/esp-idf-development-tools-guide-part-i-89af441585b

  10. C 语言

    https://www.youtube.com/watch?v=KJgsSFOSQv0&t=12665s

  11. ESP-DL 格式

    https://blog.espressif.com/hand-gesture-recognition-on-esp32-s3-with-esp-deep-learning-176d7e13fd37

  12. 加速度计数据

    https://www.cis.fordham.edu/wisdm/dataset.php

  13. 神经网络开发

    https://www.youtube.com/watch?v=lUI6VMj43PE

  14. ESP-IDF 快速入门

    https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/linux-macos-setup.html

  15. ESP-WHO 实例

    https://github.com/espressif/esp-who/tree/master/examples/human_face_recognition/terminal

  16. Netron

    https://netron.app

  17. ESP-DL 构建层

    https://github.com/espressif/esp-dl/tree/master/include/layer

  18. MPU6050

    https://www.electronicwings.com/sensors-modules/mpu6050-gyroscope-accelerometer-temperature-sensor-module

  19. MPU6050驱动

    https://components.espressif.com/components/espressif/mpu6050


ESP32-S3 边缘人工智能|使用加速度计数据和 ESP-DL 识别人体活动的评论 (共 条)

分享到微博请遵守国家法律