摘要:為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)?簡(jiǎn)而言之就是使用STM32CubeMX中的X-Cube-AI擴(kuò)展包將當(dāng)前比較熱門(mén)的AI框架進(jìn)行C代碼的轉(zhuǎn)化,以支持在嵌入式設(shè)備上使用,目前使用X-Cube-AI需要在STM32CubeMX版本5.0以上,支持轉(zhuǎn)化的模型有Keras、TFlite、ONNX、Lasagne、Caffe、ConvNetJS。Cube-AI把模型轉(zhuǎn)化為一堆數(shù)組,而后將這些數(shù)組內(nèi)容解析成模型,和Tensorflow里的模型轉(zhuǎn)數(shù)組后使用原理是一樣的。
一、環(huán)境安裝和配置
STM32CubeMX
MDK/IAR/STM32CubeIDE
F4/H7/MP157開(kāi)發(fā)板
二、AI神經(jīng)網(wǎng)絡(luò)模型搭建
這里使用官方提供的模型進(jìn)行測(cè)試,用keras框架訓(xùn)練:
https://github.com/Shahnawax/HAR-CNN-Keras
模型介紹
在Keras中使用CNN進(jìn)行人類活動(dòng)識(shí)別:此存儲(chǔ)庫(kù)包含小型項(xiàng)目的代碼。該項(xiàng)目的目的是創(chuàng)建一個(gè)簡(jiǎn)單的基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的人類活動(dòng)識(shí)別(HAR)系統(tǒng)。該系統(tǒng)使用來(lái)自3D加速度計(jì)的傳感器數(shù)據(jù),并識(shí)別用戶的活動(dòng),例如:前進(jìn)或后退。HAR意為Human Activity Recognition(HAR)system,即人類行為識(shí)別。這個(gè)模型是根據(jù)人一段時(shí)間內(nèi)的3D加速度數(shù)據(jù),來(lái)判斷人當(dāng)前的行為,比如走路,跑步,上樓,下樓等,很符合Cortex-M系列MCU的應(yīng)用場(chǎng)景。使用的數(shù)據(jù)如下圖所示。
HAR用到的原始數(shù)據(jù)
存儲(chǔ)庫(kù)包含以下文件
HAR.py,Python腳本文件,包含基于CNN的人類活動(dòng)識(shí)別(HAR)模型的Keras實(shí)現(xiàn),
actitracker_raw.txt、包含此實(shí)驗(yàn)中使用的數(shù)據(jù)集的文本文件,
model.h5,一個(gè)預(yù)訓(xùn)練模型,根據(jù)訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,
evaluate_model.py、Python 腳本文件,其中包含評(píng)估腳本。此腳本在提供的 testData 上評(píng)估預(yù)訓(xùn)練 netowrk 的性能,
testData.npy,Python 數(shù)據(jù)文件,包含用于評(píng)估可用預(yù)訓(xùn)練模型的測(cè)試數(shù)據(jù),
groundTruth.npy,Python 數(shù)據(jù)文件,包含測(cè)試數(shù)據(jù)的相應(yīng)輸出的地面真值和
README.md.
這么多文件不要慌,模型訓(xùn)練后得到model.h5模型,才是我們需要的。
三、新建工程
1.這里默認(rèn)大家都已經(jīng)安裝好了STM32CubeMX軟件。
在STM32上驗(yàn)證神經(jīng)網(wǎng)絡(luò)模型(HAR人體活動(dòng)識(shí)別),一般需要STM32F3/F4/L4/F7/L7系列高性能單片機(jī),運(yùn)行網(wǎng)絡(luò)模型一般需要3MB以上的閃存空間,一般的單片機(jī)不支持這么大的空間,CUBEMX提供了一個(gè)壓縮率的選項(xiàng),可以選擇合適的壓縮率,實(shí)際是壓縮神經(jīng)網(wǎng)絡(luò)模型的權(quán)重系數(shù),使得網(wǎng)絡(luò)模型可以在單片機(jī)上運(yùn)行,壓縮率為8,使得模型縮小到366KB,驗(yàn)證可以通過(guò);
然后按照下面的步驟安裝好CUBE.AI的擴(kuò)展包
這個(gè)我安裝了三個(gè),安裝最新版本的一個(gè)版本就可以。
接下來(lái)就是熟悉得新建工程了
因?yàn)榘惭b了AI的包,所以在這個(gè)界面會(huì)出現(xiàn)artificial intelligence這個(gè)選項(xiàng),點(diǎn)擊Enable可以查看哪一些芯片支持AI
接下來(lái)就是配置下載接口和外部晶振了。
然后記得要選擇一個(gè)串口作為調(diào)試信息打印輸出。
選擇Software Packs,進(jìn)入后把AI相關(guān)的兩個(gè)包點(diǎn)開(kāi),第一個(gè)打上勾,第一個(gè)選擇Validation。
System Performance工程:整個(gè)應(yīng)用程序項(xiàng)目運(yùn)行在STM32MCU上,可以準(zhǔn)確測(cè)量NN推理結(jié)果,CP∪U負(fù)載和內(nèi)存使用情況。使用串行終端監(jiān)控結(jié)果(e.g.Tera Term)
Validation工程:完整的應(yīng)用程序,在桌面PC和基于STM32 Arm Cortex-m的MCU嵌入式環(huán)境中,通過(guò)隨機(jī)或用戶測(cè)試數(shù)據(jù),遞增地驗(yàn)證NN返回的結(jié)果。與 X-CUBE-A驗(yàn)證工具一起使用。
Application Template工程:允許構(gòu)建應(yīng)用程序的空模板項(xiàng)目,包括多網(wǎng)絡(luò)支持。
之后左邊欄中的Software Packs點(diǎn)開(kāi),選擇其中的X-CUBE-AI,彈出的Mode窗口中兩個(gè)復(fù)選框都打勾,Configuration窗口中,點(diǎn)開(kāi)network選項(xiàng)卡。
選擇剛剛配置的串口作為調(diào)試用。
點(diǎn)擊add network,選擇上述下載好的model點(diǎn)h5模型,選擇壓縮倍數(shù)8;
點(diǎn)擊分析,可從中看到模型壓縮前后的參數(shù)對(duì)比
點(diǎn)擊validation on desktop 在PC上進(jìn)行模型驗(yàn)證,包括原模型與轉(zhuǎn)換后模型的對(duì)比,下方也會(huì)現(xiàn)在驗(yàn)證的結(jié)果。
致此,模型驗(yàn)證完成,下面開(kāi)始模型部署
四、模型轉(zhuǎn)換與部署
時(shí)鐘配置,系統(tǒng)會(huì)自動(dòng)進(jìn)行時(shí)鐘配置。按照你單片機(jī)的實(shí)際選型配置時(shí)鐘就可以了。
最后點(diǎn)擊GENERATE CODE生成工程。
然后在MDK中編譯鏈接。
選擇好下載器后就可以下載代碼了。
然后打開(kāi)串口調(diào)試助手就可以看到一系列的打印信息了。
代碼燒寫(xiě)在芯片里后,回到CubeMX中下圖所示位置,我們點(diǎn)擊Validate on target,在板上運(yùn)行驗(yàn)證程序,效果如下圖,可以工作,證明模型成功部署在MCU中。
這次就這樣先跑一下官方的例程,以后再研究一下,跑跑自己的模型。
審核編輯 :李倩
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4814瀏覽量
103648 -
加速度計(jì)
+關(guān)注
關(guān)注
6文章
728瀏覽量
46876 -
STM32單片機(jī)
+關(guān)注
關(guān)注
59文章
550瀏覽量
59613
原文標(biāo)題:干貨 | 我在STM32單片機(jī)上跑神經(jīng)網(wǎng)絡(luò)算法
文章出處:【微信號(hào):電子工程世界,微信公眾號(hào):電子工程世界】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
神經(jīng)網(wǎng)絡(luò)教程(李亞非)
【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)
如何設(shè)計(jì)BP神經(jīng)網(wǎng)絡(luò)圖像壓縮算法?
神經(jīng)網(wǎng)絡(luò)和反向傳播算法
MATLAB訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)移植到STM32F407上
在STM32上驗(yàn)證神經(jīng)網(wǎng)絡(luò)模型
在xr806板子上如何實(shí)現(xiàn)用ncnn跑神經(jīng)網(wǎng)絡(luò)mnis呢
神經(jīng)網(wǎng)絡(luò)移植到STM32的方法
如何用神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)音降噪
什么是神經(jīng)網(wǎng)絡(luò)?什么是卷積神經(jīng)網(wǎng)絡(luò)?
【技術(shù)分享】STM32實(shí)現(xiàn)單麥克風(fēng)實(shí)時(shí)神經(jīng)網(wǎng)絡(luò)降噪

評(píng)論