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芯片開發之旅!