日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在STM32单片机上跑神经网络算法

發布時間:2023/12/20 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在STM32单片机上跑神经网络算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要為什么可以在STM32上面跑神經網絡?簡而言之就是使用STM32CubeMX中的X-Cube-AI擴展包將當前比較熱門的AI框架進行C代碼的轉化,以支持在嵌入式設備上使用,目前使用X-Cube-AI需要在STM32CubeMX版本5.0以上,支持轉化的模型有Keras、TFlite、ONNX、Lasagne、Caffe、ConvNetJS。Cube-AI把模型轉化為一堆數組,而后將這些數組內容解析成模型,和Tensorflow里的模型轉數組后使用原理是一樣的。

一、環境安裝和配置

  • STM32CubeMX

  • MDK/IAR/STM32CubeIDE

  • F4/H7/MP157開發板

  • 二、AI神經網絡模型搭建

    這里使用官方提供的模型進行測試,用keras框架訓練:

    https://github.com/Shahnawax/HAR-CNN-Keras

    模型介紹

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

    HAR用到的原始數據

    存儲庫包含以下文件

  • HAR.py,Python腳本文件,包含基于CNN的人類活動識別(HAR)模型的Keras實現,

  • actitracker_raw.txt、包含此實驗中使用的數據集的文本文件,

  • model.h5,一個預訓練模型,根據訓練數據進行訓練,

  • evaluate_model.py、Python 腳本文件,其中包含評估腳本。此腳本在提供的 testData 上評估預訓練 netowrk 的性能,

  • testData.npy,Python 數據文件,包含用于評估可用預訓練模型的測試數據,

  • groundTruth.npy,Python 數據文件,包含測試數據的相應輸出的地面真值和

  • README.md.

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

    三、新建工程

    1.這里默認大家都已經安裝好了STM32CubeMX軟件。

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

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

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

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

    因為安裝了AI的包,所以在這個界面會出現artificial intelligence這個選項,點擊Enable可以查看哪一些芯片支持AI

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

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

    選擇Software Packs,進入后把AI相關的兩個包點開,第一個打上勾,第一個選擇Validation。

    • System Performance工程:整個應用程序項目運行在STM32MCU上,可以準確測量NN推理結果,CP∪U負載和內存使用情況。使用串行終端監控結果(e.g.Tera Term)

    • Validation工程:完整的應用程序,在桌面PC和基于STM32 Arm Cortex-m的MCU嵌入式環境中,通過隨機或用戶測試數據,遞增地驗證NN返回的結果。與 X-CUBE-A驗證工具一起使用。

    • Application Template工程:允許構建應用程序的空模板項目,包括多網絡支持。

    之后左邊欄中的Software Packs點開,選擇其中的X-CUBE-AI,彈出的Mode窗口中兩個復選框都打勾,Configuration窗口中,點開network選項卡。

    選擇剛剛配置的串口作為調試用。

    點擊add network,選擇上述下載好的model點h5模型,選擇壓縮倍數8;

    點擊分析,可從中看到模型壓縮前后的參數對比

    點擊validation on desktop 在PC上進行模型驗證,包括原模型與轉換后模型的對比,下方也會現在驗證的結果。

    致此,模型驗證完成,下面開始模型部署

    四、模型轉換與部署

    時鐘配置,系統會自動進行時鐘配置。按照你單片機的實際選型配置時鐘就可以了。

    最后點擊GENERATE CODE生成工程。

    然后在MDK中編譯鏈接。

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

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

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

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

    參考資料:

    • https://youtu.be/grgNXdkmzzQ?t=10

    • https://youtu.be/grgNXdkmzzQ?t=103

    總結

    以上是生活随笔為你收集整理的在STM32单片机上跑神经网络算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。