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

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

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

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

應(yīng)用TFLm引擎進(jìn)行模型文件導(dǎo)入

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-07-28 09:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

書接上文(點(diǎn)此查看前文),我們橫向比較了在應(yīng)用TFLm引擎進(jìn)行模型文件導(dǎo)入時(shí)候,所使用的三種常用方式:

SD卡存儲(chǔ)結(jié)合文件系統(tǒng),

xxd小工具進(jìn)行文件的十六進(jìn)制轉(zhuǎn)換

以及使用匯編指令.incbin直接進(jìn)行模型導(dǎo)入。

可以說各有所長,但是,當(dāng)我們需要頻繁地進(jìn)行模型的替換、更新時(shí),麻煩就出現(xiàn)了。xxd和.incbin的形式都需要重新編譯目標(biāo)工程,并下載到板子中。 當(dāng)我們的程序體量較大時(shí),即便不需要對(duì)全部工程進(jìn)行編譯(做到改啥編啥),但是,下載這一步,是無論如何不能跳過的,隨著最終鏡像大小的不同,所消耗的時(shí)間也會(huì)不同。而使用文件系統(tǒng)的方式,無形中增加了移植文件系統(tǒng)的工作量。

設(shè)計(jì)思路

為了克服這一問題,小編在上一篇的結(jié)尾提出了一個(gè)新的方案,直接把flash看作一大塊空白存儲(chǔ)區(qū),并開辟一個(gè)固定區(qū)域存放模型文件。這樣一來,我們只需要在程序中將模型的讀取位置固定,無論模型是否更新,都能夠讀取最新的模型數(shù)據(jù),進(jìn)行后續(xù)處理。 而且小編也特意強(qiáng)調(diào)建議大家直接使用Nor Flash來實(shí)現(xiàn)這一操作。 以i.MX RT系列MCU為例說明這樣做的優(yōu)勢(shì)。i.MX RT系列由于沒有片上Flash芯片,都通過外擴(kuò)Flash芯片存儲(chǔ)代碼。當(dāng)我們將啟動(dòng)方式調(diào)整為XIP,即從flash啟動(dòng)時(shí),芯片內(nèi)部的BootROM會(huì)幫我們配置初始化好這個(gè)片上的Flash芯片,而由于Nor Flash的特性,支持隨機(jī)的內(nèi)存訪問,也就是說,我們?cè)诔绦騼?nèi)部,可以直接通過指針的形式進(jìn)行訪問,甚至可以直接調(diào)用memcpy函數(shù)進(jìn)行數(shù)據(jù)的拷貝。 比起集成文件系統(tǒng)的方式,可以說方便至極。不過,也不是說Nand Flash就不適合,只是處理起來會(huì)稍稍麻煩一點(diǎn),由于不支持隨機(jī)的讀操作,就要先拷貝到RAM區(qū)域再進(jìn)行操作。

設(shè)計(jì)實(shí)現(xiàn)

言歸正傳,為了方便進(jìn)行數(shù)據(jù)的管理,我們需要設(shè)計(jì)一套簡單的管理邏輯,說的專業(yè)一點(diǎn)就是為我們的數(shù)據(jù)添加一個(gè)幀頭,當(dāng)然,既然大道至簡,數(shù)據(jù)打包格式大致就是如下格式(可能有些簡陋啊,大家見諒):

3fdb6114-0e0e-11ed-ba43-dac502259ad0.png

當(dāng)然為了能夠在程序中使用,我們?cè)俣x一個(gè)對(duì)應(yīng)的C語言形式來表達(dá),這里要用到C語言中0長度數(shù)組的概念:

struct {
uint32_t n, w, h , c;
uint8_t data[0];
}

這樣一來,我們就具象化了我們所設(shè)計(jì)的那個(gè)簡單的數(shù)據(jù)打包協(xié)議。

下一步是如何將數(shù)據(jù)打包成我們要的樣子,這里要借助于Python來編寫一個(gè)簡單的腳本處理,并假設(shè)最終會(huì)生成一個(gè)二進(jìn)制文件,假設(shè)輸入一個(gè)多維數(shù)組results,首先構(gòu)建其幀頭,默認(rèn)維度不足4的數(shù)據(jù),用1補(bǔ)齊,保證最終的幀頭包含4個(gè)維度信息:

def save_to_bin(bin_name, results):
    shape = list(results[0].shape)
    element_size = [1] * (3 - len(shape)) + shape
    element_len = len(results)
    # shape is [N, H, W, C]
    bin_values = np.asarray([element_len] + element_size, dtype=np.uint32).tobytes()
    bin_values += results.tobytes()
    with open(bin_name, "wb") as f:
        f.write(bin_values)
        f.close()

聊到這兒,可能有同學(xué)會(huì)問了,針對(duì)于tflite模型,我們往往只需要知道其首地址就好了,TFLm會(huì)處理那些長度信息,我還有必要構(gòu)造幀頭嗎?這下給小編問的有點(diǎn)啞口無言。馬上著手設(shè)計(jì)了第二種數(shù)據(jù)結(jié)構(gòu):

3fe7dcbe-0e0e-11ed-ba43-dac502259ad0.png

是的,針對(duì)于模型數(shù)據(jù)這一特殊的存在,可以設(shè)計(jì)出更加精簡的表達(dá)格式,而且,我們知道tflite模型本身實(shí)際上已經(jīng)是二進(jìn)制文件的形式了,也就是說,可以直接拿過來使用,無需再做任何操作,直接燒寫到固定地址即可。

那我們上面所設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)就毫無用武之地了嗎?當(dāng)然不是!小編做這些當(dāng)然都是有理由的啊。

大家想一想,運(yùn)行神經(jīng)網(wǎng)絡(luò)模型的時(shí)候,光有模型就可以了嗎?當(dāng)然不,我們還缺少輸入啊!如果你是攝像頭輸入,請(qǐng)?zhí)^這節(jié)。而如果是離線測(cè)試呢?需要大量加載靜態(tài)圖到內(nèi)存中,是不是和之前我們的分析就類似了。

每次更換測(cè)試數(shù)據(jù),依舊需要重新下載鏈接,那么按照本文提供的方案,也為數(shù)據(jù)設(shè)置一塊固定的區(qū)域,然后借助于上述save_to_bin代碼,將數(shù)據(jù)打包成固定格式,是不是就可以在程序中利用那個(gè)結(jié)構(gòu)體訪問了呢?沒錯(cuò)!小編早就設(shè)計(jì)好了。

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

    關(guān)注

    459

    文章

    52464

    瀏覽量

    440176
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17961

    瀏覽量

    366192
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    679

    瀏覽量

    33953

原文標(biāo)題:一種基于MCU的神經(jīng)網(wǎng)絡(luò)模型在線更新方案之?dāng)?shù)據(jù)處理篇

文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    KaihongOS操作系統(tǒng)FA模型與Stage模型介紹

    的運(yùn)行環(huán)境。FA模型的開發(fā)方式為通過導(dǎo)出匿名對(duì)象、固定入口文件的方式指定應(yīng)用組件。開發(fā)者無法進(jìn)行派生,不利于擴(kuò)展能力。 Stage模型 Stage
    發(fā)表于 04-24 07:27

    訓(xùn)練好的ai模型導(dǎo)入cubemx不成功怎么處理?

    訓(xùn)練好的ai模型導(dǎo)入cubemx不成功咋辦,試了好幾個(gè)模型壓縮了也不行,ram占用過大,有無解決方案?
    發(fā)表于 03-11 07:18

    聆思CSK6大模型語音開發(fā)板接入DeepSeek資料匯總(包含深度求索/火山引擎/硅基流動(dòng)華為昇騰滿血版)

    調(diào)用DeepSeek節(jié)點(diǎn),最終將大模型輸出的結(jié)果進(jìn)行語音合成實(shí)現(xiàn)端側(cè)播報(bào) 下載工程模板導(dǎo)入,配置參數(shù)后綁定開發(fā)板ID即可。 關(guān)鍵參數(shù)說明(以火山引擎版為例): HOST
    發(fā)表于 03-06 17:02

    如何將python文件導(dǎo)入到ROS系統(tǒng)中

    本文通過使用myCobot機(jī)械臂進(jìn)行QR碼視覺追蹤的實(shí)踐案例分析,介紹如何將 python 文件導(dǎo)入到 ROS 系統(tǒng)中。
    的頭像 發(fā)表于 02-11 11:08 ?784次閱讀
    如何將python<b class='flag-5'>文件</b><b class='flag-5'>導(dǎo)入</b>到ROS系統(tǒng)中

    txb0108 pspice模型怎么使用?

    我是用cadance 導(dǎo)入.lib 出錯(cuò),不知道這個(gè)pspice模型怎么使用。 這個(gè)模型文件說明里說這個(gè)是一個(gè)完整的瞬態(tài)仿真,不知怎么樣使用,tita的pspice
    發(fā)表于 12-04 06:26

    如何導(dǎo)入Altium Designer的原理圖和PCB?

    Altium Designer,并選擇需要導(dǎo)入的原理圖文件。 這里有個(gè)小技巧,如果是層次結(jié)構(gòu),請(qǐng)選擇頂層原理圖進(jìn)行導(dǎo)入,這樣系統(tǒng)會(huì)自動(dòng)導(dǎo)
    的頭像 發(fā)表于 11-12 12:21 ?5681次閱讀
    如何<b class='flag-5'>導(dǎo)入</b>Altium Designer的原理圖和PCB?

    火山引擎推出豆包·視頻生成模型

    在近期舉辦的2024火山引擎AI創(chuàng)新巡展上,火山引擎總裁譚待隆重推出了豆包·視頻生成模型,這一舉措標(biāo)志著火山引擎在視頻內(nèi)容生成領(lǐng)域邁出了重要一步。豆包
    的頭像 發(fā)表于 09-25 14:11 ?627次閱讀

    AD畫完原理圖后如何導(dǎo)入PCB

    完整無誤 : 在進(jìn)行導(dǎo)入之前,請(qǐng)確保原理圖已經(jīng)繪制完成,并且所有元件都已正確放置和連接。 檢查元件的封裝是否已分配,因?yàn)榉庋b是元件在PCB上的物理表示。 創(chuàng)建或打開PCB文件 : 如果尚未創(chuàng)建PCB
    的頭像 發(fā)表于 09-02 16:32 ?1.5w次閱讀

    在ADS中導(dǎo)入PGA870的pspice模型總失敗,為什么?

    因?yàn)镻GA870的帶寬比較寬,在我的項(xiàng)目中應(yīng)用到了140MHz左右,所以想把PGA870的模型導(dǎo)入到射頻電路仿真軟件ADS中,采用的導(dǎo)入方式是導(dǎo)入Netlist file,但總顯示
    發(fā)表于 08-27 06:15

    一個(gè)晶體管的spice模型,可以導(dǎo)入TINA嗎?

    一個(gè)晶體管的spice模型,可以導(dǎo)入TINA嗎?謝謝
    發(fā)表于 08-26 06:30

    請(qǐng)問如何使用TINA-TI導(dǎo)入Spice Macromodel模型

    我在TI網(wǎng)站下載LM311的Tina*** 模型,但是只有標(biāo)題為LM311 *** Macromodel的模型,下載后打開,格式為LM311.301,請(qǐng)問如何使用TINA-TI導(dǎo)入
    發(fā)表于 08-16 08:13

    TiNa無法導(dǎo)入tlp520的Pspice模型的原因?怎么解決?

    TiNa無法導(dǎo)入tlp520的Pspice模型
    發(fā)表于 08-15 08:26

    TINA如何導(dǎo)入OPA356模型

    請(qǐng)問TINA如何導(dǎo)入OPA356模型
    發(fā)表于 08-14 07:55

    求助,關(guān)于AD8000 cir文件導(dǎo)入問題求解

    從LT公司下載的AD8000.CIR文件里包含三個(gè)subject,導(dǎo)入宏,提示有多個(gè)子電路,選擇其中的AD8000,建立模型以后,仿真不正常,應(yīng)該是其他兩個(gè)子電路沒有導(dǎo)入 問題。
    發(fā)表于 08-07 07:12

    tina-ti導(dǎo)入模型失敗的原因?

    如上圖,導(dǎo)入器件宏模型時(shí)提示行#110過長。
    發(fā)表于 08-02 08:22
    主站蜘蛛池模板: 天天干夜夜操美女 | 亚洲线精品一区二区三区 | 欧洲色妇 | 欧美日韩高清一区 | 99精品国产第一福利网站 | 狠狠色伊人亚洲综合第8页 狠狠色依依成人婷婷九月 狠狠色影院 | 国产精品成人在线播放 | 伊人手机在线观看 | 豆国产97在线 | 欧洲 | 狠狠色成人综合首页 | 奇米影视四色首页手机在线 | 女人张开双腿让男人桶爽免 | 黄黄网| 欧美系列在线观看 | 亚洲成人高清 | 狠狠色 综合色区 | 亚洲欧美成人网 | 免费人成网站线观看合集 | 大学生一级特黄的免费大片视频 | 国产一级特黄全黄毛片 | 女人扒开腿让男人桶到爽 | 日本在线观看永久免费网站 | 日本免费一区二区视频 | 中文字幕亚洲一区二区三区 | 亚洲电影在线 | 奇米一区二区三区四区久久 | 中国一级生活片 | 中日韩在线视频 | 日本三级s级在线播放 | 亚洲va久久久噜噜噜久久 | 制服丝袜国产精品 | 夜色综合 | 一区二区中文字幕 | 免费视频在线视频观看1 | 亚洲天堂成人在线 | 亚洲韩国在线一卡二卡 | 天天射天天射天天射 | 小雪被老外黑人撑破了 | 午夜影院0606免费 | 美女h片 | 婷婷九月丁香 |