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

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

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

3天內不再提示

AI模型如何將它導入工程里

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-07-14 09:40 ? 次閱讀

相信不少在MCU平臺使用TensorflowLite Micro(Tensorflow Lite Micro專為嵌入式平臺推出的專用版TFlite),以下簡稱TFLm,推理引擎體驗過AI的小伙伴們,一定都遇到過這樣的情況:當我們歷經千辛萬苦訓練出來一個模型之后,要如何將它導入工程里呢?

各抒己見

這時候有同學會說了:我有文件系統啊,模型放到sd卡中,文件操作讀進來分分鐘啊!還有的同學會說了:我有xxd,當然,xxd也是TFLM的御用工具,負責將一個文件以十六進制的形式顯示出來,使用過這個推理引擎的同學一定對下面這段注釋很是熟悉:

// xxd -i mobilenet_v1_0.25_128_quant.tflite > mobilenet_v1_0.25_128_quant_model.h

這之后,我們的模型就會被轉化成類似于下面這個樣子,不要懷疑,這就是我們的模型真正的樣子,并非眉清目秀,在程序中就可以通過mobilenet_model這個指針來訪問模型數據:

const char mobilenet_model[] __ALIGNED(16) = {
  0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
  0x18, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00,
  0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x78, 0x5b, 0x07, 0x00,
  0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
  。。。。
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
  0x97, 0x26, 0x08, 0x39
};
unsigned int mobilenet_model_len = 496912;
這時候,又有同學說了,你們這些方法都太弱了:你們有SD卡,有文件系統,有xxd!這些我統統不需要,不用額外安裝工具,不用文件系統擴展,不用看著我這空蕩蕩的錢包,還要祭出小錢錢去買張SD卡。

嗯,我只需要編譯器+裸板即可!要的就是簡潔(也想高調,可是小錢錢不允許啊)。

不賣關子了,我們有.incbin。這個小東西是一個匯編指令,用來包含某一個文件到匯編文件中,文件的內容將會按字節逐一添加到當前elf(鏡像文件)節中。不會做任何方式的解釋,保證數據的完整和一致性。即原封不動的添加進來,不過要注意,以下代碼要保存在以.s尾綴的匯編文件中:

.global mobilenet_model   // 導出全局符號
.global mobilenet_model _end
.section .rodata   // 存儲位置

. mobilenet_model :
   .incbin “mobilenet_v1_0.25_128_quant.tflite”
. mobilenet_model_end :

這樣一來,同樣可以使用mobilenet_model這個模型指針來進行模型的訪問。

很難說,上面三位同學的方法哪一種更好一點,可能第三位同學提出的方法,是對于外部依賴最少的,只需要利用編譯器對于匯編指令的支持即可。既不需要費力的移植文件系統,也不用花費小錢錢購買SD卡,也不用求求xxd工具幫我們做事。

當然,小編在這里也站一下隊,明確一下立場!我投.incbin一票,當然了,這個也是小編一直在用的方式。更換模型,只需要修改一下導入路徑即可,可以說香的不行了!

新的挑戰

不好,,,好像有點跑題變成夸夸群了,回到主題。

小伙伴既然已經回答了小編提出的問題:導入模型的N種方法,小編就再追問大家一個問題:如果頻繁更新模型要怎么辦呢?

當然,使用文件系統的小伙伴可能這時候會心一笑了:哈哈,我就知道有這么一出,讓我猜到了吧,比靈活性,沒人能和我比!

的確,無論是使用.incbin還是xxd的方式,每更新一次模型都要對整個模型重新編譯下載。而使用文件系統的方式,只需要將模型拖到SD即可,不過根據程序設計,是否需要保證模型名字保持一致才能夠正確loading。。。這個就不是本篇要討論的了。

柳暗花明

相信看到這里的小伙伴們心里已經有數了,小編一定是已經找到了另一種替代方案,既能實現模型的更新,又不用重新對模型進行編譯。是的,小編也就不再賣關子了,這就揭開廬山真面目。

小編這里要提出的方法,有點類似于引入文件系統的概念,只不過,是一個手動管理的“丐版”文件系統。

一句話概括就是:在非易失性器件上,說普通話就是Nor Flash上開辟一塊固定的區域來存儲模型,之后我們只需要將最新的模型也同樣下載到這一區域即可,這樣一來,我們在主程序中,只需要維護這一區域,將其作為模型的數據起始地址,就可以達到實時更新模型的目的了。

是不是感覺小編的這個想法,思路是如此的清晰!而且,還免去了移植文件系統的繁瑣過程,最重要的是,保住了錢包里的小錢錢,不用買SD卡了。

這里特別強調是Nor Flash,作為可以隨機讀的器件,可以方便地進行隨機訪問,使用起來或者說在程序的編寫上會更加的便捷。當然,使用NAND flash也未曾不可,有興趣的伙伴可以自行整理。

留下懸念

當然,可能有小伙伴要質疑:那你這個可以實現存儲多個模型嗎?小編很負責任地告訴大家,只要膽子大,宇宙都能給你裝下!只不過,在存放數據的時候,需要額外存儲一些幀頭信息,告知程序一共有多少組模型存儲其中。

小編將在下期為大家介紹如何設計合適的存儲結果以存放我們的flash數據,并編寫一個PC端小程序,負責進行數據的轉換,敬請期待!

原文標題:一種基于MCU的神經網絡模型靈活更新方案之先行篇

文章出處:【微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

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

    關注

    87

    文章

    31822

    瀏覽量

    270588
  • 文件系統
    +關注

    關注

    0

    文章

    287

    瀏覽量

    19994
  • 模型
    +關注

    關注

    1

    文章

    3370

    瀏覽量

    49288

原文標題:一種基于MCU的神經網絡模型靈活更新方案之先行篇

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何將python文件導入到ROS系統中

    本文通過使用myCobot機械臂進行QR碼視覺追蹤的實踐案例分析,介紹如何將 python 文件導入到 ROS 系統中。
    的頭像 發表于 02-11 11:08 ?195次閱讀
    <b class='flag-5'>如何將</b>python文件<b class='flag-5'>導入</b>到ROS系統中

    將測量的太陽光譜導入VirtualLab Fusion

    ,我們以太陽光為例,說明了如何將測量到的光譜導入VirtualLab Fusion中,然后介紹了如何使用所述數據用作光學系統中光源的光譜組成。 建模任務 如何將測量到的太陽光光譜(見下圖)
    發表于 01-23 10:22

    請問如何把INA321的Pspice模型導入到proteus

    請問,如何把INA321的Pspice模型導入到proteus
    發表于 09-11 07:23

    請問RC4580的hspice模型如何導入ADS使用?

    下載的Hspice模型是一壓縮包,里面有.sp .inc .lib .pkg文件,不是常規的txt文件,想請教一下如何在ADS能夠仿真此模型,或者有什么教程說明這四個文件如何放置嗎
    發表于 08-20 07:41

    TINA如何導入OPA356模型

    請問TINA如何導入OPA356模型
    發表于 08-14 07:55

    VCA824導入Pspice模型到ADS中,為什么找不到14引腳封裝?

    在下載完Pspice模型往ADS中導入時,點擊 File →import→design,選中VCA824.lib,但是我需要的是VCA824ID,SOIC (D)封裝14個引腳的模型,但是選項
    發表于 08-01 08:16

    AD7124的程序如何將它導出成hex格式呢?

    ,那么如何將它導出成hex格式呢?我翻遍了其中的資料還是沒有找到辦法。因為只有把這個hex文件燒寫到黑色的評估板,才能測試AD7124呢。
    發表于 07-23 08:13

    STM CUBE AI錯誤導入onnx模型報錯的原因?

    使用cube-AI分析模型時報錯,該模型是pytorch的cnn轉化成onnx ``` Neural Network Tools for STM32AI v1.7.0 (STM.
    發表于 05-27 07:15

    為什么用CubeIDE導入AI模型進行分析會報錯?

    python已經安裝好了,但是在用CubeAI的時候,導入模型進行分析會報錯,無法分析。有知道為什么會報[AI:persondetection][12152] Failed to execute
    發表于 05-22 06:38

    為什么Cubeai導入模型的時候報錯[AI:persondetection] ModuleNotFoundError: No module named \'_socket\'?

    在使用CubeIde導入ai模型進行模型分析的時候報錯[AI:persondetection] ModuleNotFoundError: N
    發表于 05-21 06:44

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐》2.0

    《大語言模型“原理與工程實踐”》是關于大語言模型內在機理和應用實踐的一次深入探索。作者不僅深入討論了理論,還提供了豐富的實踐案例,幫助讀者理解如何將理論知識應用于解決實際問題。書中的案
    發表于 05-07 10:30

    cubemx ai導入onnx模型后壓縮失敗了怎么解決?

    cubemx ai導入onnx模型后壓縮失敗。請問我怎么解決
    發表于 03-19 07:58

    cube AI導入Keras模型出錯怎么解決?

    我嘗試過cube AI的version7.1.0、6.0.0、5.1.2、4.1.0,導入Keras都是這個報錯,求解答 E010(InvalidModelError): Couldn&
    發表于 03-18 06:39

    使用cube-AI分析模型時報錯的原因有哪些?

    使用cube-AI分析模型時報錯,該模型是pytorch的cnn轉化成onnx ``` Neural Network Tools for STM32AI v1.7.0 (STM.
    發表于 03-14 07:09

    TARGET3001!用法篇-如何將Altium文件導入到TARGET中

    有人問我這個軟件可不可以導入Altium的文件,因為他們公司用的都是Altium Designer,如果可以把以前AD工程文件直接導進TARGET中使用會方便很多。對于這個問題,也是我所關注
    的頭像 發表于 02-20 14:38 ?697次閱讀
    TARGET3001!用法篇-<b class='flag-5'>如何將</b>Altium文件<b class='flag-5'>導入</b>到TARGET中
    主站蜘蛛池模板: 精品国产乱码久久久久久浪潮 | 成熟女人免费一级毛片 | se97se成人亚洲网站在线观看 | 亚洲成在人线影视天堂网 | 97久久草草超级碰碰碰 | 国产在线97色永久免费视频 | 日韩特级毛片免费观看视频 | 五月婷婷爱 | 手机在线一区二区三区 | 日日摸人人看97人人澡 | 最新四虎4hu影库地址在线 | 色视频国产 | 狂野欧美性猛交xxxx免费 | 国产码一区二区三区 | 亚洲大香伊人蕉在人依线 | 国产h视频在线观看高清 | 久久久久久久综合狠狠综合 | 特别黄的免费视频大片 | 久久99热精品这里久久精品 | 国产在线精品观看 | 一区二区三区四区在线视频 | 日本成人一级片 | 狠狠色噜噜狠狠狠狠米奇7777 | 欧美日韩高清一本大道免费 | 日韩久久精品视频 | 成人国产一区二区三区 | 两性色午夜视频自由成熟的性 | 国产成人午夜片在线观看 | 91成人午夜性a一级毛片 | 视频免费观看网址 | 色综合视频一区二区三区 | 午夜视频黄色 | 在线免费你懂的 | 中文字幕 亚洲一区 | 日本免费黄色录像 | 黄色片网站观看 | 黄色大片在线免费观看 | 成人国产一区二区 | 四虎新地址4hu 你懂的 | 日本欧美一区二区三区免费不卡 | 欧美激情伊人 |