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

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

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

3天內不再提示

如何在RT-Thread OS環境下使用ncnn進行AI推理

RTThread物聯網操作系統 ? 來源:RTThread物聯網操作系統 ? 2023-05-04 16:29 ? 次閱讀

今天簡報較短,主要演示一下如何在RT-Thread OS環境下使用ncnn進行AI推理

關于NCNN

簡介

ncnn 是騰訊優圖實驗室首個開源項目,是一個為手機端極致優化的高性能神經網絡前向計算框架。

ncnn 從設計之初深刻考慮手機端的部屬和使用。無第三方依賴,跨平臺,手機端 cpu 的速度快于目前所有已知的開源框架。

基于 ncnn,開發者能夠將深度學習算法輕松移植到手機端高效執行,開發出人工智能 APP,將 AI 帶到你的指尖。

ncnn 目前已在騰訊多款應用中使用,如 QQ,Qzone,微信,天天 P 圖等。

功能概述

支持卷積神經網絡,支持多輸入和多分支結構,可計算部分分支

無任何第三方庫依賴,不依賴 BLAS/NNPACK 等計算框架

C++ 實現,跨平臺,支持 android ios

ARM NEON 匯編級良心優化,計算速度極快

精細的內存管理和數據結構設計,內存占用極低

支持多核并行計算加速,ARM big.LITTLE cpu 調度優化

整體庫體積小于 500K,并可輕松精簡到小于 300K

可擴展的模型設計,支持 8bit 量化和半精度浮點存儲,可導入 caffe 模型

支持直接內存零拷貝引用加載網絡模型

可注冊自定義層實現并擴展

恩,很強就是了,不怕被塞卷 QvQ

RT-Thread-NCNN使用說明

當前RT-Thread-NCNN工具包僅支持Arm-A核芯片,比如樹莓派4B、rk3568等,我們可以在BSP包內找到相關芯片的BSP包。以下演示基于樹莓派4B。

1.相關環境

硬件:樹莓派4B開發板,帶USB轉串口調試工具;

系統:RT-Thread OS v5.0.0版本;

開發環境:Windows 10

開發IDE:Vscode;

交叉編譯工具鏈:gcc-arm-10.3-2021.07-mingw-w64-i686-aarch64-none-elf;

工具鏈下載地址:https://developer.arm.com/downloads/-/gnu-a

2.更新package工具包

相關參考:https://github.com/RT-Thread/packages

下載/進入env環境后,找到env根目錄下的packages文件夾。

使用git clone https://github.com/RT-Thread/packages.git命令將最新的packages repo 克隆到本地。注:使用方法還可以參考env根目錄下的readme.md文件中包管理器使用的章節,可以利用env環境中支持的包管理命令來更新本地packages文件夾。

更新完成后,查看新的軟件包中./packages/ai/文件夾中是否出現ncnn文件夾,如果存在則表示軟件包更新成功。

更新好的軟件包如下所示:

ef3b992a-e7d0-11ed-ab56-dac502259ad0.png

3.準備樹莓派4B項目工程

RT-Thread下載地址:https://github.com/RT-Thread/rt-thread

進入準備好的RT-Thread開發包,進入./rt-thread/bsp/raspberry-pi/raspi4-64/文件夾。在該目錄下啟動env,輸入如下命令創建新的項目工程。

1scons--dist--project-name=xxxx

ef5134b0-e7d0-11ed-ab56-dac502259ad0.png

此時會在該目錄下生成./dist/xxxx文件夾,該文件夾下就是新生成的樹莓派4B項目工程,如下圖所示:

ef5ce634-e7d0-11ed-ab56-dac502259ad0.png

準備好項目工程后,我們將下載好的工具鏈放置在指定目錄,然后修改上面圖中rtconfig.py文件中的工具鏈路徑。

ef743460-e7d0-11ed-ab56-dac502259ad0.png

ef86e4de-e7d0-11ed-ab56-dac502259ad0.png

至此,我們已經準備好了一個最基本的項目工程。然后,我們回到env工具中,使用menuconfig命令配置相關packages,這里只引入ncnn工具箱。

efa777bc-e7d0-11ed-ab56-dac502259ad0.png

我們以此進入RT-Thread online packages、AI packages,選中ncnn package for RT-Thread,最終選中v1.0.0版本ncnn,保存并退出。

在env環境中輸入下列命令,就可以把ncnn的package拉取到當前工程中。

1pkgs--update

拉取好的ncnn工具包可以在項目工程中的./packages文件夾中查看到。

efbaa698-e7d0-11ed-ab56-dac502259ad0.png

至此,我們可以嘗試編譯一下當前項目,不出意外,可以順利編譯。

efc65326-e7d0-11ed-ab56-dac502259ad0.png

efdf4548-e7d0-11ed-ab56-dac502259ad0.png

4.編譯yolov3示例

在編寫代碼之前,我們需要準備AI模型,可以參考NCNN官方的AI模型庫。

參考鏈接:https://github.com/nihui/ncnn-assets/tree/master

我們以mobilev2-yolov3為例,準備一下資料到sd

mobilenetv2-yolov3.bin

mobilenetv2-yolov3.param

bus.jpg

其中前兩個為ncnn指定的模型權重和結構,最后一個是測試圖片。都準備好了,我們現在修改RT-Thread項目工程

1.修改文件:./drivers/board.h

1#defineHEAP_END(KERNEL_VADDR_START+500*1024*1024)
2#definePAGE_STARTHEAP_END
3#definePAGE_END((size_t)PAGE_START+500*1024*1024)

2.修改文件:./driver/board.c

1structmem_descplatform_mem_desc[]={
2{0x00200000,(512ul<

3.修改文件:./rtconfig.h

1#defineRT_MAIN_THREAD_STACK_SIZE245760
2
3#defineFINSH_THREAD_STACK_SIZE245760

以上參數不同模型可能不同,可能需要根據模型規模去估計。

4.修改main.c文件

我們把./packages/ncnn-v1.0.0文件夾打開,里面examples有我們準備好的測試例程,其中main-yolov3.cpp就是我們用來替換main.c文件的,將其替換mian.c文件,并將mian.c改成mian.cpp文件,然后編譯。

eff52c1e-e7d0-11ed-ab56-dac502259ad0.png

f00dd412-e7d0-11ed-ab56-dac502259ad0.png

注意:我們還要確定我們項目工程已經支持了C++特性和開啟了文件系統,如果沒有的話還需要通過menuconfig來修改,這一部分不再贅述。

此外,關于如何在樹莓派4B開發板中啟動RT-Thread OS,可以參考以下文檔:

啟動RT-Thead OS in Pi 4B:https://github.com/RT-Thread/rt-thread/tree/master/bsp/raspberry-pi/raspi4-64

5.yolov3測試結果

串口輸出結果:

 1heap:0x0056b530-0x1f400000
 2
 3|/
 4-RT-ThreadOperatingSystem
 5/|5.0.0buildApr1820232257
 62006-2022CopyrightbyRT-Threadteam
 7lwIP-2.1.2initialized!
 8EMMC:assumingclockratetobe100MHz
 9[I/sal.skt]SocketAbstractionLayerinitializesuccess.
10[I/utest]utestisinitializesuccess.
11[I/utest]totalutesttestcasenum:(0)
12[I/DBG]versionisB1
13
14[I/SDIO]SDcardcapacity31178752KB.
15foundpart[0],begin:4194304,size:256.0MB
16foundpart[1],begin:272629760,size:29.492GB
17filesysteminitializationdone!
18Helcpu1bootsuccess
19cpu2bootsuccess
20cpu3bootsuccess
211sh/>success
22linkdisconnected
23SupportlinkmodeSpeed1000M
24
25msh/>
26msh/>
27msh/>mn
28mnet_yolov3_test
29msh/>mnet_yolov3_test
30HelloRT-ThreadNCNN
3115=0.99720at48.90389.97159.19x525.88
326=0.96088at18.52260.82783.92x512.58
3315=0.95704at207.39407.80150.12x444.35

其中,最后部分輸出了推理的結果。

以下是sd卡中生成的推理前后圖片對比。

如果想更換測試圖片,只需要將新的圖片名字修改成bus.jpg就可以,這樣偷懶,但是簡單。

下面這個是另一個測試結果(去掉了標簽

當前問題

有部分算子當前在RT-Thread OS上運行時出錯,所以如果是想自己搞一個模型跑跑,需要注意這方面問題,good luck。

后續工作

支持RISC-V架構芯片;

解決算子問題;

審核編輯:湯梓紅

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

    關注

    1

    文章

    375

    瀏覽量

    28013
  • AI
    AI
    +關注

    關注

    87

    文章

    28877

    瀏覽量

    266239
  • 命令
    +關注

    關注

    5

    文章

    658

    瀏覽量

    21929
  • RT-Thread
    +關注

    關注

    31

    文章

    1239

    瀏覽量

    39437
  • 深度學習
    +關注

    關注

    73

    文章

    5422

    瀏覽量

    120593

原文標題:【AI簡報20230428】如何在RT-Thread OS環境下使用ncnn進行AI推理

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RT-Thread記錄(一、版本開發環境及配合CubeMX)

    RT-Thread 學習記錄的第一篇文章,RT-Thread記錄(一、RT-Thread 版本、RT-Thread Studio開發環境
    的頭像 發表于 06-20 00:28 ?4925次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(一、版本開發<b class='flag-5'>環境</b>及配合CubeMX)

    使用RT-Thread Master+QEMU模擬器進行RT-Thread原型快速開發

    前段時間分別在Win和Mac M1/M2 Silicon硬件環境折騰了VS Code + RT-Thread的編譯問題。
    的頭像 發表于 09-27 14:50 ?2545次閱讀
    使用<b class='flag-5'>RT-Thread</b> Master+QEMU模擬器<b class='flag-5'>進行</b><b class='flag-5'>RT-Thread</b>原型快速開發

    何在RT-Thread Studio完成對RA2L1板的環境搭建以及gpio的輸入輸出檢測?

    有幸參加RT-Thread的活動,體驗RT-Thread Studio 和瑞薩 CPK-RA2L1評估板。本篇文章主要講解如何在RT-Thread Studio 完成對RA2L1評估板
    的頭像 發表于 09-28 15:51 ?2456次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>RT-Thread</b> Studio完成對RA2L1板的<b class='flag-5'>環境</b>搭建以及gpio的輸入輸出檢測?

    RT-Thread AI kit輕松部署 STM32Cube-AIRT-Thread 精選資料推薦

    RT-AK 簡介RT-AK:RT-Thread AI kit,RT-Thread AI套件
    發表于 07-20 08:20

    何在RT-Thread Studio開發環境使用nrf24L01軟件包?

    何在RT-Thread Studio開發環境使用nrf24L01軟件包?
    發表于 12-17 07:52

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發組(2015-03-31)。RT-Thread做為國內有較大影響力的開源實時操作系統,本文是RT-Thread實時操作系統的編程指南
    發表于 11-26 16:06 ?0次下載

    RT-Thread用戶手冊

    RT-Thread用戶手冊——本書是RT-Thread的編程手冊,用于指導在RT-Thread實時操作系統環境如何
    發表于 11-26 16:16 ?0次下載

    RT-Thread零基礎快速入門第0講——環境安裝

    RT-Thread快速入門第1講——環境安裝目錄RT-Thread快速入門第1講——環境安裝一、 前言二、 編程資料下載三、 ENV工具下載和安裝Git下載和安裝env下載和安裝四
    發表于 12-03 14:21 ?14次下載
    <b class='flag-5'>RT-Thread</b>零基礎快速入門第0講——<b class='flag-5'>環境</b>安裝

    RT-Thread AI kit開源:輕松實現一鍵部署AI模型至 RT-Thread

    RT-AK 是 RT-Thread 團隊為 RT-Thread 實時操作系統所開發的 AI 套件,能夠一鍵將 AI 模型部署到
    發表于 01-25 18:18 ?3次下載
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>AI</b> kit開源:輕松實現一鍵部署<b class='flag-5'>AI</b>模型至 <b class='flag-5'>RT-Thread</b>

    RT-Thread大會:瑞薩e- AI成功案例及部署

      RT-Thread IoT OS Global Tech Conference (RT-Thread GTC,RT-Thread全球技術大會)致力于圍繞
    的頭像 發表于 05-27 10:18 ?1293次閱讀
    <b class='flag-5'>RT-Thread</b>大會:瑞薩e- <b class='flag-5'>AI</b>成功案例及部署

    RT-Thread學習筆記 RT-Thread的架構概述

    RT-Thread 簡介 作為一名 RTOS 的初學者,也許你對 RT-Thread 還比較陌生。然而,隨著你的深入接觸,你會逐漸發現 RT-Thread 的魅力和它相較于其他同類型 RTOS
    的頭像 發表于 07-09 11:27 ?4321次閱讀
    <b class='flag-5'>RT-Thread</b>學習筆記 <b class='flag-5'>RT-Thread</b>的架構概述

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread 潘多拉 STM32L475 上手指南
    發表于 02-22 18:23 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手指南

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    基于RT-Thread Studio學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?3497次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio學習