色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

應用TFLm引擎進行模型文件導入

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

書接上文(點此查看前文),我們橫向比較了在應用TFLm引擎進行模型文件導入時候,所使用的三種常用方式:

SD卡存儲結合文件系統,

xxd小工具進行文件的十六進制轉換

以及使用匯編指令.incbin直接進行模型導入。

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

設計思路

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

設計實現

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

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

當然為了能夠在程序中使用,我們再定義一個對應的C語言形式來表達,這里要用到C語言中0長度數組的概念:

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

這樣一來,我們就具象化了我們所設計的那個簡單的數據打包協議。

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

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()

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

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

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

那我們上面所設計的數據結構就毫無用武之地了嗎?當然不是!小編做這些當然都是有理由的啊。

大家想一想,運行神經網絡模型的時候,光有模型就可以了嗎?當然不,我們還缺少輸入啊!如果你是攝像頭輸入,請跳過這節。而如果是離線測試呢?需要大量加載靜態圖到內存中,是不是和之前我們的分析就類似了。

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

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

    關注

    455

    文章

    50727

    瀏覽量

    423179
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17129

    瀏覽量

    351007
  • 編譯
    +關注

    關注

    0

    文章

    657

    瀏覽量

    32852

原文標題:一種基于MCU的神經網絡模型在線更新方案之數據處理篇

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

收藏 人收藏

    評論

    相關推薦

    如何導入Altium Designer的原理圖和PCB?

    Altium Designer,并選擇需要導入的原理圖文件。 這里有個小技巧,如果是層次結構,請選擇頂層原理圖進行導入,這樣系統會自動導
    的頭像 發表于 11-12 12:21 ?908次閱讀
    如何<b class='flag-5'>導入</b>Altium Designer的原理圖和PCB?

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

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

    一個晶體管的spice模型,可以導入TINA嗎?

    一個晶體管的spice模型,可以導入TINA嗎?謝謝
    發表于 08-26 06:30

    請問如何使用TINA-TI導入Spice Macromodel模型

    我在TI網站下載LM311的Tina*** 模型,但是只有標題為LM311 *** Macromodel的模型,下載后打開,格式為LM311.301,請問如何使用TINA-TI導入
    發表于 08-16 08:13

    TiNa無法導入tlp520的Pspice模型的原因?怎么解決?

    TiNa無法導入tlp520的Pspice模型
    發表于 08-15 08:26

    TINA如何導入OPA356模型

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

    求助,關于AD8000 cir文件導入問題求解

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

    導入keras或者onnx模型到cubeai進行分析,為什么會報錯?

    請問我導入keras或者onnx模型到cubeai進行分析,為什么會報錯,而且沒有報錯內容,cubeai版本9.0.0。換成8.1.0版本后報錯內容是invalid network。該怎么入手解決。
    發表于 07-03 07:55

    為什么用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: No module named \'_sock
    發表于 05-21 06:44

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

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

    谷歌模型怎么PS打開文件格式不變

    要將谷歌模型與Photoshop結合使用,并保持文件格式不變,這通常涉及將谷歌模型生成的圖像或圖形導入到Photoshop中進行進一步編輯或
    的頭像 發表于 02-29 18:09 ?861次閱讀

    使用ml configurator進行tflite網絡模型的轉換不成功怎么解決?

    使用ml configurator進行tflite網絡模型的轉換不成功,提示錯誤,請幫忙協助謝謝 [ERROR] Failed to run QEMU
    發表于 01-31 06:56

    IBIS模型如何導入到LTspice中?

    IBIS模型如何導入到LTspice中
    發表于 01-03 06:23

    kicad怎么打開導入非kicad文件

    KiCad是一款優秀的電子設計自動化(EDA)軟件,它提供了強大的功能來設計電路圖和PCB布局。然而,有時候我們可能需要導入一些非KiCad文件,例如從其他EDA軟件導出的文件或者從制造商提供的
    的頭像 發表于 01-02 13:54 ?2803次閱讀
    主站蜘蛛池模板: 亚洲免费在线视频观看| 男女肉大捧进出全过程免费| 亚洲国产精品热久久| 久久艹影院| 69精品人人人人| 亚洲乱亚洲乱妇在线观看| 欧美一区二区影院| 麻花豆传媒剧国产免费mv观看| 国产成人久久精品AV| nu77亚洲综合日韩精品| 午夜福利免费视频921000电影| 捆绑调教网站| 果冻传媒在线播放| 国产精品1区在线播放| 成人国产一区| xxxx俄罗斯1819| 2018久久视频在线视频观看| 亚洲三级视频在线观看| 性xxx在线观看| 微拍秒拍99福利精品小视频| 色即是空 BT| 污污内射在线观看一区二区少妇| 忘忧草在线社区WWW日本-韩国| 日日摸夜夜添夜夜爽出水| 日韩精品真人荷官无码| 日本亚洲精品色婷婷在线影院| 妞干网手机免费视频| 日本综艺大尺度无删减版在线| 三叶草成人| 亚洲黄色在线视频| 亚洲精品视频在线播放| 伊人热人久久中文字幕| 97无码欧美熟妇人妻蜜| 超碰97人人做人人爱网站| 国产精品久久久久成人免费| 国产亚洲精品久久久闺蜜| 精品无码一区二区三区不卡| 国模啪啪久久久久久久| 狼人无码伊人AV啪啪| 日本又黄又爽又色又刺激的视频| 亚洲成人综合在线|