RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

TopSemic嵌入式 ? 來源:果果小師弟 ? 作者:智果芯 ? 2022-04-12 17:33 ? 次閱讀

摘要為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)?簡而言之就是使用STM32CubeMX中的X-Cube-AI擴(kuò)展包將當(dāng)前比較熱門的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)境安裝和配置

  1. STM32CubeMX
  2. MDK/IAR/STM32CubeIDE
  3. F4/H7/MP157開發(fā)板

二、AI神經(jīng)網(wǎng)絡(luò)模型搭建

這里使用官方提供的模型進(jìn)行測試,用keras框架訓(xùn)練:

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)
https://github.com/Shahnawax/HAR-CNN-Keras

模型介紹

在Keras中使用CNN進(jìn)行人類活動識別:此存儲庫包含小型項(xiàng)目的代碼。該項(xiàng)目的目的是創(chuàng)建一個簡單的基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的人類活動識別(HAR)系統(tǒng)。該系統(tǒng)使用來自3D加速度計(jì)的傳感器數(shù)據(jù),并識別用戶的活動,例如:前進(jìn)或后退。HAR意為Human Activity Recognition(HAR)system,即人類行為識別。這個模型是根據(jù)人一段時間內(nèi)的3D加速度數(shù)據(jù),來判斷人當(dāng)前的行為,比如走路,跑步,上樓,下樓等,很符合Cortex-M系列MCU的應(yīng)用場景。使用的數(shù)據(jù)如下圖所示。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

HAR用到的原始數(shù)據(jù)

存儲庫包含以下文件

  1. HAR.py,Python腳本文件,包含基于CNN的人類活動識別(HAR)模型的Keras實(shí)現(xiàn),
  2. actitracker_raw.txt、包含此實(shí)驗(yàn)中使用的數(shù)據(jù)集的文本文件,
  3. model.h5,一個預(yù)訓(xùn)練模型,根據(jù)訓(xùn)練數(shù)據(jù)進(jìn)行訓(xùn)練,
  4. evaluate_model.py、Python 腳本文件,其中包含評估腳本。此腳本在提供的 testData 上評估預(yù)訓(xùn)練 netowrk 的性能,
  5. testData.npy,Python 數(shù)據(jù)文件,包含用于評估可用預(yù)訓(xùn)練模型的測試數(shù)據(jù),
  6. groundTruth.npy,Python 數(shù)據(jù)文件,包含測試數(shù)據(jù)的相應(yīng)輸出的地面真值和
  7. README.md.

這么多文件不要慌,模型訓(xùn)練后得到model.h5模型,才是我們需要的。

三、新建工程

1.這里默認(rèn)大家都已經(jīng)安裝好了STM32CubeMX軟件。

在STM32上驗(yàn)證神經(jīng)網(wǎng)絡(luò)模型(HAR人體活動識別),一般需要STM32F3/F4/L4/F7/L7系列高性能單片機(jī),運(yùn)行網(wǎng)絡(luò)模型一般需要3MB以上的閃存空間,一般的單片機(jī)不支持這么大的空間,CUBEMX提供了一個壓縮率的選項(xiàng),可以選擇合適的壓縮率,實(shí)際是壓縮神經(jīng)網(wǎng)絡(luò)模型的權(quán)重系數(shù),使得網(wǎng)絡(luò)模型可以在單片機(jī)上運(yùn)行,壓縮率為8,使得模型縮小到366KB,驗(yàn)證可以通過;

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

然后按照下面的步驟安裝好CUBE.AI的擴(kuò)展包

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

這個我安裝了三個,安裝最新版本的一個版本就可以。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

接下來就是熟悉的新建工程了

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

因?yàn)榘惭b了AI的包,所以在這個界面會出現(xiàn)artificial intelligence這個選項(xiàng),點(diǎn)擊Enable可以查看哪一些芯片支持AI

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

接下來就是配置下載接口和外部晶振了。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)
為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

然后記得要選擇一個串口作為調(diào)試信息打印輸出。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

選擇Software Packs,進(jìn)入后把AI相關(guān)的兩個包點(diǎn)開,第一個打上勾,第一個選擇Validation。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)
為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)
  • System Performance工程:整個應(yīng)用程序項(xiàng)目運(yùn)行在STM32MCU上,可以準(zhǔn)確測量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)境中,通過隨機(jī)或用戶測試數(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)開,選擇其中的X-CUBE-AI,彈出的Mode窗口中兩個復(fù)選框都打勾,Configuration窗口中,點(diǎn)開network選項(xiàng)卡。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

選擇剛剛配置的串口作為調(diào)試用。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

點(diǎn)擊add network,選擇上述下載好的model點(diǎn)h5模型,選擇壓縮倍數(shù)8;

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

點(diǎn)擊分析,可從中看到模型壓縮前后的參數(shù)對比

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

點(diǎn)擊validation on desktop 在PC上進(jìn)行模型驗(yàn)證,包括原模型與轉(zhuǎn)換后模型的對比,下方也會顯示驗(yàn)證的結(jié)果。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

至此,模型驗(yàn)證完成,下面開始模型部署

四、模型轉(zhuǎn)換與部署

時鐘配置,系統(tǒng)會自動進(jìn)行時鐘配置。按照你單片機(jī)的實(shí)際選型配置時鐘就可以了。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)
為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)
為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

最后點(diǎn)擊GENERATE CODE生成工程。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

然后在MDK中編譯鏈接。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

選擇好下載器后就可以下載代碼了。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)
為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

然后打開串口調(diào)試助手就可以看到一系列的打印信息了。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

代碼燒寫在芯片里后,回到CubeMX中下圖所示位置,我們點(diǎn)擊Validate on target,在板上運(yùn)行驗(yàn)證程序,效果如下圖,可以工作,證明模型成功部署在MCU中。

為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)
為什么可以在STM32上面跑神經(jīng)網(wǎng)絡(luò)

這次就這樣先跑一下官方的例程,以后再研究一下,跑跑自己的模型。

原文標(biāo)題:我在STM32單片機(jī)上跑神經(jīng)網(wǎng)絡(luò)算法

文章出處:【微信公眾號:TopSemic嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4771

    瀏覽量

    100712
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355721
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3226

    瀏覽量

    48806

原文標(biāo)題:我在STM32單片機(jī)上跑神經(jīng)網(wǎng)絡(luò)算法

文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【PYNQ-Z2試用體驗(yàn)】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識

    神經(jīng)網(wǎng)絡(luò)的計(jì)算。對于多層多節(jié)點(diǎn)的神經(jīng)網(wǎng)絡(luò),我們可以使用矩陣乘法來表示。在上面神經(jīng)網(wǎng)絡(luò)中,我們將權(quán)重作為一個矩陣,將第一層的輸入作為另一個矩
    發(fā)表于 03-03 22:10

    卷積神經(jīng)網(wǎng)絡(luò)如何使用

    卷積神經(jīng)網(wǎng)絡(luò)(CNN)究竟是什么,鑒于神經(jīng)網(wǎng)絡(luò)工程上經(jīng)歷了曲折的歷史,您為什么還會在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發(fā)表于 07-17 07:21

    【案例分享】基于BP算法的前饋神經(jīng)網(wǎng)絡(luò)

    期望的輸出。BP神經(jīng)網(wǎng)絡(luò)算法推導(dǎo)(更新權(quán)重和偏倚):從上面推導(dǎo)可以發(fā)現(xiàn):對于任意從神經(jīng)元i(輸出神經(jīng)元/隱層
    發(fā)表于 07-21 04:00

    【案例分享】ART神經(jīng)網(wǎng)絡(luò)與SOM神經(jīng)網(wǎng)絡(luò)

    是一種常用的無監(jiān)督學(xué)習(xí)策略,使用改策略時,網(wǎng)絡(luò)的輸出神經(jīng)元相互競爭,每一時刻只有一個競爭獲勝的神經(jīng)元激活。ART神經(jīng)網(wǎng)絡(luò)由比較層、識別層、
    發(fā)表于 07-21 04:30

    如何設(shè)計(jì)BP神經(jīng)網(wǎng)絡(luò)圖像壓縮算法?

    神經(jīng)網(wǎng)絡(luò)(Neural Networks)是人工神經(jīng)網(wǎng)絡(luò)(Ar-tificial Neural Networks)的簡稱,是當(dāng)前的研究熱點(diǎn)之一。人腦接受視覺感官傳來的大量圖像信息后,能迅速做出反應(yīng)
    發(fā)表于 08-08 06:11

    如何構(gòu)建神經(jīng)網(wǎng)絡(luò)

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡(luò)是一種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預(yù)測的計(jì)算系統(tǒng)。如何構(gòu)建神經(jīng)網(wǎng)絡(luò)神經(jīng)網(wǎng)絡(luò)包括:輸入層:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的層隱藏層:使用反向傳播優(yōu)化輸入變量權(quán)重的層,以提高模型的預(yù)測
    發(fā)表于 07-12 08:02

    STM32上驗(yàn)證神經(jīng)網(wǎng)絡(luò)模型

    STM32CubeMx.AI的使用歡迎使用Markdown編輯器STM32論壇中看到這樣一個視頻:視頻中,
    發(fā)表于 08-03 06:59

    基于BP神經(jīng)網(wǎng)絡(luò)的PID控制

    最近在學(xué)習(xí)電機(jī)的智能控制,上周學(xué)習(xí)了基于單神經(jīng)元的PID控制,這周研究基于BP神經(jīng)網(wǎng)絡(luò)的PID控制。神經(jīng)網(wǎng)絡(luò)具有任意非線性表達(dá)能力,可以通過對系統(tǒng)性能的學(xué)習(xí)來實(shí)現(xiàn)具有最佳組合的PID控
    發(fā)表于 09-07 07:43

    如何使用stm32cube.ai部署神經(jīng)網(wǎng)絡(luò)

    如何用stm32cube.ai簡化人工神經(jīng)網(wǎng)絡(luò)映射?如何使用stm32cube.ai部署神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 10-11 08:05

    輕量化神經(jīng)網(wǎng)絡(luò)的相關(guān)資料下載

    視覺任務(wù)中,并取得了巨大成功。然而,由于存儲空間和功耗的限制,神經(jīng)網(wǎng)絡(luò)模型嵌入式設(shè)備上的存儲與計(jì)算仍然是一個巨大的挑戰(zhàn)。前面幾篇介紹了如何在嵌入式AI芯片上部署神經(jīng)網(wǎng)絡(luò):【嵌入式AI開發(fā)】篇五|實(shí)戰(zhàn)篇一:
    發(fā)表于 12-14 07:35

    卷積神經(jīng)網(wǎng)絡(luò)一維卷積的處理過程

    inference設(shè)備端上做。嵌入式設(shè)備的特點(diǎn)是算力不強(qiáng)、memory小。可以通過對神經(jīng)網(wǎng)絡(luò)做量化來降load和省memory,但有時可能memory還吃緊,就需要對神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 12-23 06:16

    xr806板子上如何實(shí)現(xiàn)用ncnn神經(jīng)網(wǎng)絡(luò)mnis呢

    xr806板子上如何實(shí)現(xiàn)用ncnn神經(jīng)網(wǎng)絡(luò)mnis呢?
    發(fā)表于 12-28 06:51

    神經(jīng)網(wǎng)絡(luò)移植到STM32的方法

    神經(jīng)網(wǎng)絡(luò)移植到STM32最近在做的一個項(xiàng)目需要用到網(wǎng)絡(luò)進(jìn)行擬合,并且將擬合得到的結(jié)果用作控制,就在想能不能直接在單片機(jī)上做神經(jīng)網(wǎng)絡(luò)計(jì)算,這樣就可以
    發(fā)表于 01-11 06:20

    卷積神經(jīng)網(wǎng)絡(luò)模型發(fā)展及應(yīng)用

    十余年來快速發(fā)展的嶄新領(lǐng)域,越來越受到研究者的關(guān)注。卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型是深度學(xué)習(xí)模型中最重要的一種經(jīng)典結(jié)構(gòu),其性能在近年來深度學(xué)習(xí)任務(wù)上逐步提高。由于可以自動學(xué)習(xí)樣本數(shù)據(jù)的特征表示,卷積
    發(fā)表于 08-02 10:39

    為什么可以STM32上面神經(jīng)網(wǎng)絡(luò)?

    Keras中使用CNN進(jìn)行人類活動識別:此存儲庫包含小型項(xiàng)目的代碼。該項(xiàng)目的目的是創(chuàng)建一個簡單的基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的人類活動識別(HAR)系統(tǒng)。
    發(fā)表于 12-26 15:41 ?837次閱讀
    RM新时代网站-首页