精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

移植CMSIS-NN v6.0.0版本到VisionBoard

RT-Thread官方賬號 ? 2024-07-10 08:35 ? 次閱讀

CMSIS-NN是什么?

官方的解釋是:

CMSIS NN software library is a collection of efficient neural network kernels developed to maximize the performance and minimize the memory footprint of neural networks on Arm Cortex-M processors.

翻譯一下就是:

CMSIS NN 軟件庫是一組高效的神經網絡核(函數),旨在最大限度地提高 Arm Cortex-M 處理器上神經網絡的性能并最大限度地減少內存占用。

CMSIS-NN是一個計算庫,它向上提供了神經網絡(NN)計算接口,實現了神經網絡計算的硬件加速。它內部實現了純CPU計算、DSP計算、MVE計算,屏蔽了底層硬件的具體細節,降低了編程難度。

為什么移植CMSIS-NN v6.0.0版本?

1

CMSIS-NN核心特性

總結一下官方的介紹,可以知道CMSIS-NN庫的核心特性:

專為Cortex-M處理器開發;

神經網絡計算函數;

最大化性能;

最小化內存占用

2

CMSIS-NN的硬件和軟件支持

除此之外,CMSIS-NN庫還有幾點也是值得關注的:

支持DSP擴展的處理器,使用SIMD優化,例如Cortex-M4核;

支持ARM的Heilum技術的處理器,使用M核向量擴展(MVE,M-profile Vector Extension)進行優化,例如 Cortex-M55 或 Cortex-M85;

MVE擴展恰好是ARM Cortex-M85內置的;

VisionBoard主控芯片瑞薩RA8D1的CPU核正是ARM Cortex-M85;

CMSIS-NN可以作為TensorFlow Lite for Microcontroller的后端實現;

3

CMSIS-NN核心特性

CMSIS-NN v6.0.0版本的發布說明中,介紹了新特性:

全連接(FC)、卷積(CONV)和深度卷積(DWCONV)添加了MVE指令的int4類型支持;

重新實現 LSTM 以與 TFLM 參考內核保持一致;

LSTM 對 int16 輸入的支持

DSP/MVEI 支持轉置卷積

支持分組卷積

支持 FC 的非零濾波器偏移

對 MVEI 的 Int16 輸入卷積支持

對 int16x8 卷積的 Int32 偏置支持

更能多內容可以查看本文末尾的CMSIS-NN v6.0.0 Release Note;

如何移植CMSIS-NN v6.0.0到VisionBoard?

1

創建RT-Thread項目

RT-Thread Studio創建基于VisionBoard開發板的模板項目,過程比較簡單,不再贅述。

2

添加CMSIS-NN源碼

RT-Thread Studio創建基于VisionBoard開發板的模板項目后,

在packages目錄手動下載CMSIS-NN v6.0.0版本:

533952b6-3e54-11ef-a655-92fbcf53809c.png

3

修改RT-Thread代碼

修改項目頂層的Kconfig文件,添加如下代碼行:

535eefd0-3e54-11ef-a655-92fbcf53809c.png

注意:Kconfig修改需要完需要保證最后有一行空行,否則menuconfig命令會報奇怪的錯誤。

檢查packages目錄內是否有SConsript文件,并且內容如下:

5374123e-3e54-11ef-a655-92fbcf53809c.png

如果沒有,可以手動創建。

4

修改CMSIS-NN代碼

CMSIS-NN目錄頂層創建SConscript文件,內容如下:

538c6e06-3e54-11ef-a655-92fbcf53809c.png53b232a8-3e54-11ef-a655-92fbcf53809c.png53e0046c-3e54-11ef-a655-92fbcf53809c.png

創建Kconfig文件,內容如下:

53fb7e0e-3e54-11ef-a655-92fbcf53809c.png

5

編譯RT-Thread項目

完成以上修改之后,已經可以編譯CMSIS-NN庫的代碼了。

在命令行中執行如下命令,編譯整個項目:

54ae5894-3e54-11ef-a655-92fbcf53809c.png

編譯輸出最后部分如下圖所示:

54c50008-3e54-11ef-a655-92fbcf53809c.png

如何測試CMSIS-NN v6.0.0?

1

CMSIS-NN核心特性

CMSIS-NN庫內部帶有了單元測試,具體位于 Tests/UnitTest 子目錄,其中 unittest_targets.py 腳本可以用于生成測試腳手架代碼,使用方法如下:

54ea32e2-3e54-11ef-a655-92fbcf53809c.png

當前生成的代碼是單獨生成elf文件,并在ARM虛擬硬件(AVH)平臺上運行的。

默認情況下,執行python unittest_targets.py —download-and-generate-test-runners命令,會為每個測試用例生成一個main函數,每個測試用例單獨編譯為一個elf文件,之后使用ARM虛擬硬件(AVH)執行elf進行測試。

為了能夠生成在RT-Thread上運行的測試代碼,需要修改部分測試腳本代碼,實現將每個測試用例注冊為一個獨立的finsh命令,在串口命令行中交互測試。

具體修改的代碼差異如下:

5505da74-3e54-11ef-a655-92fbcf53809c.png55269fb6-3e54-11ef-a655-92fbcf53809c.png554cd794-3e54-11ef-a655-92fbcf53809c.png

這段修改實現了:

調用unity的ruby腳本,傳遞main_name命令行參數,用于修改單元測試入口函數名稱(不指定默認是main);

生成一個獨立的RT-Thread finsh命令注冊代碼.c文件;

生成一個用于編譯的SConscript代碼文件;

另外,再結合上層目錄的SConcsript包含所有子目錄的SConscript,就可以實現將所有單元測試編譯為finsh命令了。

修改完該腳本文件后,執行如下命令,生成RT-Thread平臺測試代碼:

5579459a-3e54-11ef-a655-92fbcf53809c.png

命令執行輸出如下:

558aa650-3e54-11ef-a655-92fbcf53809c.png

2

測試代碼的構建規則SConscript

然后需要在CMSIS-NN的Tests子目錄內,添加SConscript文件:

55ad3ab2-3e54-11ef-a655-92fbcf53809c.png

這段SConscript的作用是,將子目錄的SConscript腳本包含到整個項目的構建流程中去。

接著需要在CMSIS-NN的Tests/UnitTest子目錄內,添加SConscript文件:

55c7f172-3e54-11ef-a655-92fbcf53809c.png

完成以上修改后,通過menuconfig打開 PKG_USING_CMSIS_NN_TESTS 配置項目,再次 scons 編譯,就可以編譯單元測試代碼文件了。

3

解決鏈接失敗問題

但是還會有一些編譯錯誤,原因主要有:

原來的測試腳本為每個測試用例獨立生成main函數,每個目錄單獨編譯;

鏈接到一起時,會有大量重復的setUp/tearDown/resetTest/verifyTest函數定義;

原來的測試數據數組沒有加static修飾,被重復include到多個.c文件;

鏈接到一起時,會有數組重復的數組定義

為了解決上述兩類問題,分別創建兩個腳本。

修復重復函數定義的 fix_testCode.sh:

55ed68bc-3e54-11ef-a655-92fbcf53809c.png

解決方法,所有 setUp/tearDown/resetTest/verifyTest 函數添加 weak 屬性修飾;

修復重復數組定義的 fix_testData.sh:

560975de-3e54-11ef-a655-92fbcf53809c.png

解決方法,所有測試數據的數組添加static修飾。

分別執行上面兩個腳本之后,再次編譯,就沒有編譯錯誤了。

4

運行單元測試

順利編譯之后,下載固件:

561ba34e-3e54-11ef-a655-92fbcf53809c.png

運行后,在串口輸入help命令可以看到:

56347568-3e54-11ef-a655-92fbcf53809c.png

輸入命令,運行avgpool算子的測試:

564d885a-3e54-11ef-a655-92fbcf53809c.png

其他幾個算子的s8類型測試:

5661f3e4-3e54-11ef-a655-92fbcf53809c.png56755c72-3e54-11ef-a655-92fbcf53809c.png56bb0de4-3e54-11ef-a655-92fbcf53809c.png56e61a84-3e54-11ef-a655-92fbcf53809c.png56f8cc24-3e54-11ef-a655-92fbcf53809c.png57143982-3e54-11ef-a655-92fbcf53809c.png572c7416-3e54-11ef-a655-92fbcf53809c.png5776a3ce-3e54-11ef-a655-92fbcf53809c.png57902290-3e54-11ef-a655-92fbcf53809c.png57a4727c-3e54-11ef-a655-92fbcf53809c.png57bca658-3e54-11ef-a655-92fbcf53809c.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • CMSIS
    +關注

    關注

    0

    文章

    39

    瀏覽量

    11819
  • 開發板
    +關注

    關注

    25

    文章

    4704

    瀏覽量

    95745
  • RT-Thread
    +關注

    關注

    31

    文章

    1225

    瀏覽量

    39222
收藏 人收藏

    評論

    相關推薦

    SPC5-Studio V6.0.0只能默認安裝C盤是怎么回事?

    SPC5-Studio V6.0.0只能默認安裝C盤?
    發表于 03-27 07:24

    [基于GD32F350RB的音頻識別器] 3. CMSIS-NN神經網絡配置解析

    cmsis-nn的函數和定義,對應建立層數和激活函數,構成圖,導入訓練輸出的模型數據。最后,調試并運行。如果開發板具有攝像頭,可以把攝像頭的截圖及時裁剪并輸入計算圖中,就可以得出對應數據。
    發表于 09-21 11:34

    CMSIS-NN神經網絡內核助力微控制器效率提升

    自然會想到Arm Cortex-M系列處理器內核,那么如果您想要強化它的性能并且減少內存消耗,CMSIS-NN就是您最好的選擇?;?b class='flag-5'>CMSIS-NN內核的神經網絡推理運算,對于運行時間/吞吐量將會有4.6X的提升,而對于能效將有4.9X的提升。
    發表于 07-23 08:08

    CMSIS-NN神經網絡內核可以讓微控制器效率提升5倍是真的嗎?

    全新CMSIS-NN神經網絡內核讓微控制器效率提升5倍
    發表于 03-15 06:55

    DSP數字信號處理和CMSIS-NN神經網絡教程

    之后,開啟第2版DSP數字信號處理和CMSIS-NN神經網絡教程,同步開啟三代示波器。軟件:1、開發板預裝出廠程序,各種外設驅動包全做好了,可以檢測全部硬件功能...
    發表于 08-04 06:59

    如何將TensorFlow Lite應用程序移植Arm Cortex-M55系統上

    設備上實現更高水平的機器學習和信號處理。MCU開發人員已經在使用開源庫(如CMSIS-DSP、CMSIS-NN)和ML框架(如用于微控制器的TensorFlow Lite)將機器學習應用程序移植
    發表于 03-31 10:40

    詳細說明將TensorFlow Lite的微控制器應用程序移植Arm Cortex-M55上的過程

    CMSIS-NN庫與TensorFlow Lite for Microcontrollers的緊密集成,使得將ML工作負載移植新的Cortex-M設備的過程變得快捷,易于使用。?F urthermore
    發表于 06-01 16:44

    AT32講堂016 | AT32 MCU DSP使用案例和網絡神經算法CMSIS-NN案例

    概述CMSIS DSP庫移植AT32常用示例展示CMSIS NN with DSP注意:本文是基于AT32F403A的硬件條件,若使用者需
    發表于 08-16 19:40

    ARM Cortex-M系列芯片神經網絡推理庫CMSIS-NN詳解

    1、ARM Cortex-M系列芯片神經網絡推理庫CMSIS-NN詳解CMSIS-NN是用于ARM Cortex-M系列的芯片的神經網絡推理庫,用于低性能芯片/架構的神經網絡部署
    發表于 08-19 16:06

    如何在SDKv2.12中選擇正確的CMSIS文件夾?

    ./CMSISeiq 下的 CMSIS 似乎包含更新版本CMSIS-NN,但 Core 和 DSP 文件夾僅包含頭文件。所以這個 CMSIS 與 SDK 根文件夾下的相比看起來不
    發表于 03-29 08:22

    CMSIS-NN版本轉換Arm Cortex-M的神經網絡:r0p0指南

    2. 概覽 指南向您展示了如何將神經網絡從任何框架轉換成一個基于 Arm Cortex-M-M 裝置的實施工具, 使用 Arm CMSIS- NN 庫。 此教程用于不再支持的 CMSIS
    發表于 08-11 07:06

    求助,cmsis_RTOS v1版本怎么進臨界?

    這個cmsis_RTOS v1版本怎么進臨界? 難道是把所有任務掛起嗎? V2 還可以鎖內核
    發表于 11-02 06:15

    基于CMSIS-NN內核的神經網絡推理運算 對運行時間/吞吐量和能效有顯著提升

    想到Arm Cortex-M系列處理器內核,那么如果您想要強化它的性能并且減少內存消耗,CMSIS-NN就是您最好的選擇?;?b class='flag-5'>CMSIS-NN內核的神經網絡推理運算,對于運行時間/吞吐量將會有4.6X的提升,而對于能效將有4.9X的提升。
    的頭像 發表于 01-31 11:29 ?1.1w次閱讀
    基于<b class='flag-5'>CMSIS-NN</b>內核的神經網絡推理運算 對運行時間/吞吐量和能效有顯著提升

    unc0ver 6.0.0版本或將支持iOS 14.3全設備越獄

    今日,unc0ver 6.0.0版本發布,添加了對iOS 12.4.9~12.5.1、iOS 13.5.1-13.7以及iOS 14.0-14.3的支持,只要是版本符合,那么全設備都可越獄,包括最新的A14處理器iPhone 1
    的頭像 發表于 03-01 09:30 ?2237次閱讀

    事隔五年之后,開啟第2版DSP數字信號處理和CMSIS-NN神經網絡教程,同步開啟三代示波器,前50章發布(2021-11

    事隔五年之后,開啟第2版DSP數字信號處理和CMSIS-NN神經網絡教程,同步開啟三代示波器,前50章發布(2021-11-02)
    發表于 11-26 10:36 ?0次下載
    事隔五年之后,開啟第2版DSP數字信號處理和<b class='flag-5'>CMSIS-NN</b>神經網絡教程,同步開啟三代示波器,前50章發布(2021-11