这是描述信息

wifi蓝牙模块乐鑫esp32代理商ESP32运行TensorFlow模型Gitee搭建ESP-IDF

wifi蓝牙模块乐鑫esp32代理商ESP32运行TensorFlow模型Gitee搭建ESP-IDF

wifi蓝牙模块乐鑫esp32代理商ESP32运行TensorFlow模型Gitee搭建ESP-IDF

wifi蓝牙模块乐鑫esp32代理商ESP32运行TensorFlow模型Gitee搭建ESP-IDF

wifi蓝牙模块乐鑫esp32代理商ESP32运行TensorFlow模型Gitee搭建ESP-IDF

wifi蓝牙模块乐鑫esp32代理商ESP32运行TensorFlow模型Gitee搭建ESP-IDF,人工智能之父,艾伦·图灵很早就曾预测“有一天,人们会带着电脑在公园散步,并告诉对方,今天早上我的计算机讲了个很有趣的事。”人类一直试图让机器具有智能,也就是人工智能(ArtificialIntelligence)。从上世纪50年代开始,人工智能相继进入了“推理期”和“知识期”,在这两个阶段,机器都是按照人类设定的规则和总结的知识运作,永远无法超越其创造者。机器学习(MachineLearning)方法应运而生,人工智能进入“机器学习时期”。机器学习的核心是“使用算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测”。这意味着,与其显式地编写程序来执行某些任务,不如教计算机如何开发一个算法来完成任务。


随着机器学习领域不断的发展,在移动、嵌入式和IoT设备上部署/运行机器学习模型也成为了可能。这篇文章仅介绍wifi蓝牙模块乐鑫esp32代理商在ESP32上如何部署/运行TensorFlow模型。在 create_sine_model.ipynb 文章中将介绍“HelloWorld!”正弦模型相关代码。


TensorFlow是一个端到端开源机器学习平台。它拥有一个包含各种工具、库和社区资源的全面灵活生态系统,可以让研究人员推动机器学习领域的先进技术的发展,并让开发者轻松地构建和部署由机器学习提供支持的应用。TensorFlowLite是一组工具,可帮助开发人员在移动、嵌入式和IoT设备上部署/运行TensorFlow模型。TensorFlowLite使设备上的机器学习推理具有低延迟的特性,并使可执行文件更小。


TensorFlowLite由两个主要组件组成:
TensorFlowLite解释器 可在许多不同的硬件类型(包括手机,嵌入式Linux设备和微控制器)上运行经过优化的模型。
TensorFlowLite转换器 将TensorFlow模型转换为供解释器使用的有效形式,并且可以优化模型以改善可执行文件大小和性能。
接下来,将介绍如何将TensorFlowLite运行在ESP32上,有两种方式:
.使用ESP-IDF
.使用PlatformIO平台
使用ESP-IDF
1.搭建ESP-IDF开发环境
根据 ESP-IDFProgrammingGuide 安装工具链和ESP-IDF
检查ESP-IDF环境是否已经正确安装:
检查 IDF_PATH 环境变量是否已经设置
检查 idf.py 和 xtensa-esp32-elf-* 工具链是否在PATH环境变量中
2.克隆TensorFlow
通过下面的命令,将TensorFlow克隆到本地:
gitclonehttps://github.com/tensorflow/tensorflow.git
3.生成hello_world示例项目
在tensorflow目录下通过下面的命令,可以生成hello_world示例项目:
make-ftensorflow/lite/micro/tools/make/MakefileTARGET=espgenerate_hello_world_esp_project
4.部署到ESP32
在hello_world项目目录下,编译、烧录可执行文件到ESP32:
cdtensorflow/lite/micro/tools/make/gen/esp_xtensa-esp32/prj/hello_world/esp-idf
idf.py--port/dev/ttyUSB0flashmonitor


使用PlatformIO平台
1.安装TensorFlowLite环境(PlatformIO)
首先,需要安装PlatformIO,打开终端输入:
pipinstall-Uplatformio
2.新建PlatformIO项目
接下来可以开始搭建软件框架了,详细步骤:
.创建项目目录,包含src,lib,include文件夹
.新建 platformio.ini 文件,文件内容:[env:esp32doit-devkit-v1]platform=espressif32board=esp32doit-devkit-v1framework=arduinoboard_build.partitions=custom.csvlib_deps=tfmicro
.新建 custom.csv 文件,文件内容:#Name,Type,SubType,Offset,Size,Flags nvs,data,nvs,0x9000,20K,otadata,data,ota,0xe000,8K,firm,app,ota_0,,3400K,eeprom,data,0x99,,4K,spiffs,data,spiffs,,444K,
3.生成hello_world示例项目
.在项目目录所在目录下,克隆TensorFlow仓库
gitclonehttps://github.com/tensorflow/tensorflow.git
.生成ESP32示例项目,获取生成的tfmicro库和示例模型,在Tensorflow目录下,运行:
make-ftensorflow/lite/micro/tools/make/MakefileTARGET=espgenerate_hello_world_esp_project
生成的示例项目位于:
tensorflow/tensorflow/lite/micro/tools/make/gen/esp_xtensa-esp32/prj/hello_world/
4.修改PlatformIO项目
.在hello_world/esp-idf目录中拷贝tfmicro文件夹到项目目录下的lib文件夹
.在main目录中拷贝 http://sin_model_data.cc 到项目目录下的src文件夹,拷贝sine_model_data.h到项目目录下的include文件夹
.在third_party/flatbuffers/include目录中拷贝flatbuffers目录到tfmicro文件夹.
.在third_party/gemmlowp目录中拷贝fixedpoint和internal目录到tfmicro文件夹.
.在third_party目录中拷贝kissfft目录到tfmicro文件夹.
.在third_party/flatbuffers/include目录中拷贝flatbuffers到tfmicro文件夹
.在lib/tfmicro/flatbuffers目录下打开base.h,将以下代码段
#ifdefined(ARDUINO)&&!defined(ARDUINOSTL_M_H)#include<utility.h>#else#include<utility>#endif
修改为:
#include<utility>
.接下来修改“HelloWorld!”sin模型来测试TensorFlowLite是否正常工作,完整的源代码请在GitHub仓库中查看
代码仓库链接:ESP32-TensorFlow-Lite-Sample
5.部署到ESP32
在终端中输入以下命令将可执行文件烧录到ESP32:
platformiorun-tupload--upload-port/dev/ttyUSB0
在终端中输入以下命令将打开串口交互终端,输入一个浮点数,程序将给出sin模型预测的值:
screen/dev/ttyUSB0115200


wifi蓝牙模块乐鑫esp32代理商开发工作流程
这是将TensorFlow模型部署到微控制器的过程:
.创建或获取TensorFlow模型
该模型必须非常小,以便在转换后适合您的目标设备。它只能使用支持的操作。如果要使用当前不被支持的操作,可以提供自己的实现。
.将模型转换为TensorFlowLiteFlatBuffer
您将使用TensorFlowLite转换器来将模型转换为标准TensorFlowLite格式。您可能希望输出量化模型,因为它们的尺寸更小、执行效率更高。
.将FlatBuffer转换为Cbyte数组
模型保存在只读程序存储器中,并以简单的C文件的形式提供。标准工具可用于将FlatBuffer转换为C数组。
.集成TensorFlowLiteforMicrocontrollers的C++库
编写微控制器代码以使用C++库执行推断。
.部署到您的设备
构建程序并将其部署到您的设备。


wifi蓝牙模块乐鑫esp32代理商如何使用Gitee快速搭建ESP-IDF开发环境(Windows版),为更好地服务国内用户,构建中文需求沟通平台,帮助用户快速下载乐鑫开源代码,乐鑫将GitHub中的主要仓库(包含ESP-IDF、ESP-ADF、ESP-MDF以及阿里、腾讯、京东等国内云平台的连云代码等)镜像到了Gitee(码云,国内基于Git的代码托管平台),并进行每日同步,确保与GitHub代码一致。值得一提的是,我们还将ESP-IDF依赖的子仓库(submodule)代码逐一镜像到了码云,确保主仓库和子仓库拥有相同的下载体验。


未来,wifi蓝牙模块乐鑫esp32代理商将会持续维护国内Gitee平台,加入更多开源项目,推动国内开源社区和生态的繁荣发展。
此文档教程可作为对官方搭建教程的补充,使用码云进行ESP-IDF环境安装,预计可大幅缩短环境搭建的等待时间。
适用系统:Windows1064位版本、Windows7SP2级以上x64版本
安装版本:ESP-IDF4.0及以上版本
构建系统:CMake


一、安装依赖工具
wifi蓝牙模块乐鑫esp32代理商在环境搭建之前,我们需要在Windows系统中安装一些开发必备的工具,这些工具包括Python环境,版本控制工具Git。
1.安装Python3.7:
Python主要用于执行一些自动化脚本,例如执行 idf.py 等;
下载链接:点击下载:python3.7.9;
安装提示:
注意,在安装时先勾选 AddPython3.7toPATH,或手动添加环境变量
修改Pythonpip源:
为了加快后续Python包的下载速度,可将pip源切换到国内,例如切换为国内阿里的源
管理员模式打开命令提示符窗口(CMD),执行以下指令:
shpipconfigsetglobal.index-urlhttp://mirrors.aliyun.com/pypi/simple
pipconfigsetglobal.trusted-hostmirrors.aliyun.com
2.安装Git:
Git用于拉取ESP-IDF源代码,代码版本控制等;
下载链接:点击下载:git2.30
安装提示:直接点击下一步即可
注意,以上步骤完成以后,请重启电脑使配置生效


二、下载ESP-IDF源代码
ESP-IDF的仓库代码包含一个主仓库和数十个子仓库,使用重定向脚本esp-gitee-tools,可以直接将这些仓库的下载路径切换为国内码云仓库,极大的加快代码的下载速度,操作方法如下:
.进入C盘根目录;
.打开一个终端窗口:可在文件管理器空白位置点击鼠标右键,然后选择 GitBashHere;
.下载重定向脚本esp-gitee-tools,运行以下指令:
shgitclonehttps://gitee.com/EspressifSystems/esp-gitee-tools.git
.下载主仓库代码:
shgitclonehttps://gitee.com/EspressifSystems/esp-idf.git
.使用esp-gitee-tools下载子仓库代码,依次执行以下指令:
shcdesp-gitee-tools
exportEGT_PATH=$(pwd)
cd..
cdesp-idf$EGT_PATH/submodule-update.sh
后续如果切换了git分支,子仓库列表可能会有变化,需要重复执行步骤5的指令


三、安装编译工具链
为了生成终能在ESP芯片上运行的bin文件,这里还需要安装芯片对应的编译工具链和构建系统,工具链相关的下载信息一般在ESP-IDF中附带,我们这里使用esp-gitee-tools进行下载,步骤如下:
.进入C盘根目录;
.同第二步类似,打开一个终端窗口;
.使用esp-gitee-tools安装编译工具链,执行以下指令:
shcdesp-gitee-tools
exportEGT_PATH=$(pwd)
cd..
cdesp-idf$EGT_PATH/install.sh

至此环境安装的过程已经完成


四、使用VSCode编译运行Helloworld!
用户可以使用任意编辑器编写源代码,我们这里推荐使用VSCode,下载链接:点击下载 VSCode。编译、下载、运行过程如下:
.启动VSCode,打开内置终端窗口,快捷键为 Ctrl + ~
2.这里建议将默认终端切换为命令提示符 CMD
3.重启VSCode,打开工程文件夹,这里打开的是
C:\esp-idf\examples\get-started\hello_world
4.打开终端,编译、下载、查看输出:
4.1.首先使用命令C:\esp-idf\export.bat 添加环境变量到当前终端(开启新终端需要重新执行):
4.2.使用命令 idf.pybuild 编译代码:
4.3.使用命令 idf.py-pCOMXflashmonitor 下载代码,并查看串口输出。
所有配置工作已完成,现在您可以以此为基础开启ESP芯片开发之旅!

地址:深圳市宝安区西乡街道麻布社区宝安互联网产业基地A区6栋7栋7706

邮箱:Sales@ferry-semi.com

版权所有©2020  深圳市飞睿科技有限公司  粤ICP备2020098907号    飞睿科技微波雷达wifi模块网站地图

 

免责声明:本网站部分图片和文字内容以及视频可能来源于网络,转载目的在于传递更多信息,并不代表本网站赞同其观点或证实其内容的真实性。如涉及作品内容、版权和其它问题,请在30日内与本网站联系,我们将在第一时间删除内容!本站拥有对此声明的最终解释权。