在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

如何將AI模型部署到嵌入式系統(tǒng)中

Linux閱碼場(chǎng) ? 來(lái)源:Linuxer ? 2020-08-03 16:28 ? 次閱讀

本期我們分享主題是如何將 AI 模型部署到嵌入式系統(tǒng)中,下一期將介紹如何在 RT-Thread 操作系統(tǒng)上運(yùn)行 Mnist Demo(手寫(xiě)數(shù)字識(shí)別)。

嵌入式關(guān)聯(lián) AI

AI落地一直是一個(gè)很紅火的前景和朝陽(yáng)行業(yè)。我的好奇心也比較旺盛,所以關(guān)于任何嵌入式和 AI 相關(guān)的都是想嘗一嘗。本系列文章將帶你一步一步把 AI 模型部署在嵌入式平臺(tái),移植到 RT-Thread 操作系統(tǒng)上,實(shí)現(xiàn)你從菜鳥(niǎo)到起飛的第一步甚至第 n 步!

開(kāi)發(fā)環(huán)境:

后續(xù)開(kāi)發(fā)過(guò)程將基于 STM32H743ZI-Nucleo 開(kāi)發(fā)板,并且使用 STM32CubeMX.AI 工具。它可以基于訓(xùn)練好的 AI Model (僅限 Keras/TF-Lite),自動(dòng)生成嵌入式項(xiàng)目工程(包括但是不局限于 MDK、STM32CubeIDE 等)。該工具易于上手,適合嵌入式 AI 入門(mén)開(kāi)發(fā)。

STM32CubeMX 是 ST 公司推出的一種自動(dòng)創(chuàng)建單片機(jī)工程及初始化代碼的工具,適用于旗下所有 STM32 系列產(chǎn)品,現(xiàn)在其 AI 組件可以提供 AI 模型到嵌入式 C 代碼的轉(zhuǎn)換功能。

1. 準(zhǔn)備工作

1.1 安裝開(kāi)發(fā)環(huán)境

我是用的操作系統(tǒng)是 Ubuntu 18.04。本次實(shí)驗(yàn)要用到如下開(kāi)發(fā)工具,軟件的安裝過(guò)程很簡(jiǎn)單,網(wǎng)上都有很成熟的教程,在此不再贅述。該篇教程同樣適用于 Windows 環(huán)境,實(shí)驗(yàn)步驟完全相同。

STM32CubeMx

STM32CubeIDE

STM32CubeProgrammer

STM32CubeProgrammer 在 ubuntu 環(huán)境下使用可能會(huì)出現(xiàn)如下錯(cuò)誤:

安裝好之后,在終端執(zhí)行安裝包路徑下的bin文件夾下的執(zhí)行文件,會(huì)報(bào)錯(cuò)誤:找不到或無(wú)法加載主類(lèi) “com.st.app.Main”,這時(shí)候只要將 Ubuntu 默認(rèn)的 Open-JDK 換成 Oracle JDK 就好了,下面是切換成 Oracle JDK 成功的截圖:

1# Oracle官網(wǎng)中下載 JavaSEJDK壓縮包 2$sudotarzxvfjdk-8u172-linux-x64.tar.gz-C/usr/lib/jvm 3#將下載的JDK注冊(cè)到系統(tǒng)中 4$sudoupdate-alternatives--install/usr/bin/javajava/usr/lib/jvm/jdk1.8.0_172/bin/java300 5#切換JDK 6$sudoupdate-alternatives--configjava 7#查看JDK版本 8$java-version

1.2 在 PC 端搭建極簡(jiǎn)神經(jīng)網(wǎng)絡(luò)

首先將如下開(kāi)源倉(cāng)庫(kù)克隆到本地:

Github:https://github.com/Lebhoryi/Edge_AI/tree/master/Project1

在本次實(shí)驗(yàn)中我選擇了最簡(jiǎn)單的一個(gè)線性回歸(Linear Regression) Tensor Flow2 Demo 作為示例,模型相關(guān)源文件說(shuō)明如下:

tf2_linear_regression.ipynb 內(nèi)含三種不同方式搭建網(wǎng)絡(luò)結(jié)構(gòu)

tf2_線性回歸_擴(kuò)展.ipynb 內(nèi)含不同方式訓(xùn)練模型

其中,在模型搭建的時(shí)候,重新溫習(xí)了一下,有三種方式(各個(gè)方式的優(yōu)缺點(diǎn)已經(jīng)放在參考文章當(dāng)中,感興趣的同學(xué)自行查閱):

Sequence

函數(shù)式 API

子類(lèi)

后面將 AI 模型導(dǎo)入到 CubeMx 的過(guò)程中,如果使用后兩種方式生成的網(wǎng)絡(luò)模型,將會(huì)遇到如下報(bào)錯(cuò):

1INVALIDMODEL:Couldn'tloadKerasmodel/home/lebhoryi/RT-Thread/Edge_AI/Project1/keras_model.h5, 2error:Unknownlayer:Functional暫時(shí)的解決方式是采用Sequence方式搭建神經(jīng)網(wǎng)絡(luò),訓(xùn)練好的 AI Model 會(huì)被保存為Keras 格式,后綴為 .h5,例如keras_model.h5。 示例模型我已經(jīng)保存好了,大家可以直接下載該模型進(jìn)行實(shí)驗(yàn),下載地址如下: https://github.com/Lebhoryi/Edge_AI/tree/master/Project1/model 本次示例所訓(xùn)練的神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如下:

2. 使用 CubeMX AI生成工程

在 CubeMX 中選擇 STM32H743ZI Nucleo 開(kāi)發(fā)板,這里其實(shí)不限制開(kāi)發(fā)板型號(hào),常見(jiàn)的

2.1 打開(kāi)CubeMX

2.2 安裝CUBE-AI 軟件包

打開(kāi)菜單欄中的 Help,選擇 Embedded Software Packages Manager,然后在 STMicroelectronics 一欄中選擇 X-CUBE-AI 插件的最新版本,安裝好之后點(diǎn)擊右下角的 Close。

在工程中導(dǎo)入X-CUBE-AI插件:

會(huì)出現(xiàn)如下界面:

接下來(lái)選擇用于通信的串口,這里選擇串口 3,因?yàn)樵摯诒挥糜?STlink 的虛擬串口。

2.3 導(dǎo)入 AI 模型到工程中

將 AI 模型燒錄到開(kāi)發(fā)板前,需要先分析 Model,檢查其是否可以被正常轉(zhuǎn)換為嵌入式工程,本次實(shí)驗(yàn)使用的模型比較簡(jiǎn)單,分析起來(lái)也也比較快,結(jié)果如下所示:

接下來(lái)我們要在開(kāi)發(fā)板上驗(yàn)證轉(zhuǎn)換后的嵌入式工程,在這個(gè)過(guò)程中 CubeMX AI 工具會(huì)根據(jù)你導(dǎo)入的 AI 模型,自動(dòng)生成嵌入式工程,并且將編譯后的可執(zhí)行文件燒錄到開(kāi)發(fā)板中,并通過(guò) STlink 的虛擬串口驗(yàn)證運(yùn)行的結(jié)果。我的系統(tǒng)是 Ubuntu,不支持 MDK,所以在這里選擇自動(dòng)生成 STM32CubeIDE 工程。

驗(yàn)證成功界面如下所示:

2.4 生成項(xiàng)目工程

上一步我們只是進(jìn)行了項(xiàng)目結(jié)果的驗(yàn)證,但是并沒(méi)有生成項(xiàng)目源代碼,接下來(lái)我們將生成項(xiàng)目工程,如下圖所示:

生成后的 Project 文件夾樹(shù)如下所示:

1(base)#(07/03/20@10:51上午)(lebhoryi@RT-AI):~/RT-Thread/Edge_AI@master??? 2tree-L2./Project1 3./Project1 4├──DNN#CubeMX生成工程路徑 5│├──DNN.ioc#CubeMX類(lèi)型文件 6│├──Drivers 7│├──Inc 8│├──Middlewares 9│├──network_generate_report.txt 10│├──Src 11│├──Startup 12│├──STM32CubeIDE 13│├──STM32H743ZITX_FLASH.ld 14│└──STM32H743ZITX_RAM.ld 15├──image#相關(guān)圖片保存文件夾 16│├──mymodel1.png#model 17│└──STM32H743.jpg#H743 18├──model#model保存路徑 19│└──keras_model.h5 20├──Readme.md 21├──tf2_linear_regression.ipynb 22└──tf2_線性回歸_擴(kuò)展.ipynb至此,神功練成了一大半,剩下的就是代碼調(diào)試的工作了。

3. 代碼調(diào)試

關(guān)于 STM32CubeIDE 的初步認(rèn)識(shí):基礎(chǔ)說(shuō)明與開(kāi)發(fā)流程:https://blog.csdn.net/Naisu_kun/article/details/95935283

3.1 導(dǎo)入工程

選擇 File 選項(xiàng) --> import:

選擇先前導(dǎo)出工程的路徑:

導(dǎo)入成功的界面如下所示:

接下來(lái)就可以使用 STM32Cube IDE 來(lái)調(diào)試生成的工程了。

3.2 生成 bin文件

在編譯的過(guò)程中還會(huì)自動(dòng)生成相應(yīng)的 bin 文件,后續(xù)可以通過(guò) stm32cubeProgramer 工具將 bin 文件燒錄到開(kāi)發(fā)板中。

3.3 燒錄 .bin文件

打開(kāi)STM32CubeProgramming,點(diǎn)擊右上角connect,然后選擇Open file,選擇要打開(kāi)的.bin 文件。

燒錄成功的界面:

3.4 Other

在 ubuntu 系統(tǒng)中我們可以使用串口工具cutecom 來(lái)查看最終程序的運(yùn)行結(jié)果,程序運(yùn)行結(jié)果如下:

在使用 cutecom 連接串口前,記得斷開(kāi) STM32Programer 和開(kāi)發(fā)板的連接,否則會(huì)出現(xiàn)串口打開(kāi)錯(cuò)誤的情況。

可以看到我們的 AI 模型已經(jīng)在開(kāi)發(fā)板上歡快地跑了起來(lái) ,奧里給!!!

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    31262

    瀏覽量

    269625
  • RT-Thread
    +關(guān)注

    關(guān)注

    31

    文章

    1300

    瀏覽量

    40264

原文標(biāo)題:【嵌入式AI入門(mén)日記】將 AI 模型移植到 RT-Thread 上(1)

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    新手怎么學(xué)嵌入式?

    基本的概念。嵌入式系統(tǒng)是一種將計(jì)算機(jī)技術(shù)嵌入特定設(shè)備系統(tǒng),它通常具有特定的功能和有限的資源
    發(fā)表于 12-12 10:51

    AI模型部署邊緣設(shè)備的奇妙之旅:如何實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別

    處理,而不必傳輸?shù)酵獠糠?wù)器,這有助于更好地保護(hù)用戶(hù)隱私和數(shù)據(jù)安全。 然而,邊緣計(jì)算也帶來(lái)了獨(dú)特的挑戰(zhàn),特別是在資源受限的嵌入式系統(tǒng)部署復(fù)雜的AI
    發(fā)表于 12-06 17:20

    嵌入式和人工智能究竟是什么關(guān)系?

    對(duì)人工智能應(yīng)用的實(shí)時(shí)響應(yīng)。與此同時(shí),嵌入式系統(tǒng)在邊緣計(jì)算和物聯(lián)網(wǎng)領(lǐng)域,也為人工智能的應(yīng)用提供了廣闊的空間。 在邊緣計(jì)算嵌入式系統(tǒng)能夠
    發(fā)表于 11-14 16:39

    嵌入式系統(tǒng)的未來(lái)趨勢(shì)有哪些?

    (ML)技術(shù)的快速發(fā)展,嵌入式系統(tǒng)更多地整合這些先進(jìn)技術(shù),以支持智能決策和自動(dòng)化。在設(shè)備上直接運(yùn)行AI和ML模型,進(jìn)行圖像識(shí)別、自然語(yǔ)言處
    發(fā)表于 09-12 15:42

    開(kāi)啟全新AI時(shí)代 智能嵌入式系統(tǒng)快速發(fā)展——“第六屆國(guó)產(chǎn)嵌入式操作系統(tǒng)技術(shù)與產(chǎn)業(yè)發(fā)展論壇”圓滿(mǎn)結(jié)束

    嵌入式系統(tǒng)是電子信息產(chǎn)業(yè)的基礎(chǔ),是智能系統(tǒng)的核心。大模型催生AI走入千家萬(wàn)戶(hù)、喚醒端側(cè)AI的需求
    發(fā)表于 08-30 17:24

    恩智浦加速嵌入式AI創(chuàng)新應(yīng)用開(kāi)發(fā)

    AI應(yīng)用飛速發(fā)展的今天,如何能夠AI嵌入式系統(tǒng)開(kāi)發(fā)有機(jī)結(jié)合起來(lái),營(yíng)造新的開(kāi)發(fā)生態(tài),打造與眾不同的創(chuàng)新用例,一直是
    的頭像 發(fā)表于 08-27 09:46 ?855次閱讀

    嵌入式機(jī)電一體化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)》讀后感

    刻的認(rèn)識(shí)。從硬件上將外圍器件整合到CPU內(nèi)部,軟件上在操作系統(tǒng)內(nèi)核嵌入應(yīng)用程序,再到軟件內(nèi)核或應(yīng)用文件
    發(fā)表于 08-21 08:45

    嵌入式軟件開(kāi)發(fā)與AI整合

    嵌入式軟件開(kāi)發(fā)與AI整合是當(dāng)前技術(shù)發(fā)展的重要趨勢(shì)之一。隨著人工智能技術(shù)的快速發(fā)展,嵌入式系統(tǒng)越來(lái)越多地集成了AI算法,以實(shí)現(xiàn)更復(fù)雜的智能功能
    的頭像 發(fā)表于 07-31 09:25 ?759次閱讀
    <b class='flag-5'>嵌入式</b>軟件開(kāi)發(fā)與<b class='flag-5'>AI</b>整合

    深度學(xué)習(xí)算法在嵌入式平臺(tái)上的部署

    隨著人工智能技術(shù)的飛速發(fā)展,深度學(xué)習(xí)算法在各個(gè)領(lǐng)域的應(yīng)用日益廣泛。然而,深度學(xué)習(xí)算法部署資源受限的嵌入式平臺(tái)上,仍然是一個(gè)具有挑戰(zhàn)性的任務(wù)。本文將從
    的頭像 發(fā)表于 07-15 10:03 ?1555次閱讀

    AI與開(kāi)源力推嵌入式系統(tǒng)創(chuàng)新升級(jí)

    AMD在此次展會(huì)上宣布擴(kuò)大AMD Versal?自適應(yīng)片上系統(tǒng)(SoC)產(chǎn)品線,推出全新第二代Versal AI Edge和Versal Prime系列自適應(yīng)SoC。該系列預(yù)處理、AI
    的頭像 發(fā)表于 04-29 11:11 ?556次閱讀

    AMD Versal SoC刷新邊緣AI性能,單芯片方案驅(qū)動(dòng)嵌入式系統(tǒng)

    與后處理集成于單器件,能夠?yàn)?AI 驅(qū)動(dòng)型嵌入式系統(tǒng)提供端端加速。 AI驅(qū)動(dòng)型
    的頭像 發(fā)表于 04-11 09:06 ?3794次閱讀
    AMD Versal SoC刷新邊緣<b class='flag-5'>AI</b>性能,單芯片方案驅(qū)動(dòng)<b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)</b>

    嵌入式fpga是什么意思

    嵌入式FPGA是指FPGA技術(shù)集成嵌入式系統(tǒng)的一種解決方案。
    的頭像 發(fā)表于 03-15 14:29 ?1308次閱讀

    使用CUBEAI部署tflite模型STM32F0模型創(chuàng)建失敗怎么解決?

    看到CUBE_AI已經(jīng)支持STM32F0系列芯片,就想拿來(lái)入門(mén)嵌入式AI。 生成的模型很小,是可以部署
    發(fā)表于 03-15 08:10

    嵌入式系統(tǒng)發(fā)展前景?

    應(yīng)用領(lǐng)域。隨著汽車(chē)電子化和智能化程度的不斷提高,嵌入式系統(tǒng)將在汽車(chē)控制、安全系統(tǒng)、自動(dòng)駕駛等方面發(fā)揮更為重要的作用。 工智能和機(jī)器學(xué)習(xí)技術(shù)的發(fā)展為嵌入式
    發(fā)表于 02-22 14:09

    嵌入式學(xué)習(xí)步驟

    硬件組件。 (4).開(kāi)發(fā)固件:編寫(xiě)嵌入式系統(tǒng)的固件,這是嵌入式系統(tǒng)的軟件部分。固件負(fù)責(zé)控制硬件并執(zhí)行特定任務(wù)。 (5).調(diào)試和測(cè)試:在
    發(fā)表于 02-02 15:24
    主站蜘蛛池模板: 人人狠狠综合88综合久久 | freesexvideo性欧美tv | www婷婷| 亚洲精品第一 | 久久精品成人免费网站 | 五月花亚洲| 久久久久国产一级毛片高清版 | 在线天堂在线 | 乌克兰毛片 | 五月婷婷影院 | 我要看18毛片 | 日a在线| 免费在线观看理论片 | 天天干天天舔天天射 | 天天爱添天天爱添天天爱添 | 91po狼人社在线观看 | 女上男下边吃奶边做视频成都 | 成人免费黄色网 | 午夜精品久久久久久久2023 | 九月丁香婷婷亚洲综合色 | 四虎伦理 | 久久国产高清字幕中文 | 日本黄色录像视频 | 99久热只有精品视频免费观看17 | 夜夜骑夜夜操 | 欧美网站在线播放 | 精品无码中出一区二区 | 美女网站视频色 | 色婷婷六月天 | 就去干综合 | 综合五月天堂 | 欧美成人午夜影院 | 天天舔天天色 | 最刺激黄a大片免费观看 | 免费观看老外特级毛片 | 日韩成人免费一级毛片 | 一级@片 | 香蕉色网 | 国产自在自线午夜精品视频 | 国产午夜精品理论片免费观看 | 手机亚洲第1页 |