国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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代碼,將數據打包成固定格式,是不是就可以在程序中利用那個結構體訪問了呢?沒錯!小編早就設計好了。

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

    關注

    463

    文章

    54010

    瀏覽量

    465978
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18924

    瀏覽量

    398092
  • 編譯
    +關注

    關注

    0

    文章

    694

    瀏覽量

    35158

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    如何將Primus生成的波形文件導入MATLAB

    VCD 文件及其查看器,如 GTKWave,擅長記錄和展示波形,而 MATLAB 擅長對復雜數據進行計算、分析和可視化。在項目設計開發階段,有時候,我們需要將 EDA 工具生成的波形數據,導入到 MATLAB 中
    的頭像 發表于 12-23 14:22 ?637次閱讀

    如何在vivadoHLS中使用.TLite模型

    本帖欲分享如何在vivadoHLS中使用.TLite模型。在Vivado HLS中導入模型后,需要設置其輸入和輸出接口以與您的設計進行適配。 1. 在Vivado HLS項目中
    發表于 10-22 06:29

    如何進行YOLO模型轉換?

    (compile_options)import_options = nncase.ImportOptions()# 導入ONNX模型compiler.import_onnx
    發表于 08-14 06:03

    積算科技上線赤兔推理引擎服務,創新解鎖FP8大模型算力

    模型輕量化部署方案。用戶通過遠程算力平臺預置的模型鏡像與AI工具,僅需50%的GPU算力即可解鎖大模型推理、企業知識庫搭建、智能體開發,加速大模型在智能問答、報告生成、客服助手、智能
    的頭像 發表于 07-30 21:44 ?905次閱讀

    KiCad 已支持導入 Altium 工程(Project)

    就支持 Altium 文件導入,且直接支持二進制 *.schdoc, *.pcbdoc 的導入。后續版本也支持了 Altium ascii 格式的導入。但美中不足的不是,需要分開
    的頭像 發表于 07-21 11:15 ?3231次閱讀
    KiCad 已支持<b class='flag-5'>導入</b> Altium 工程(Project)

    cubemx導入模型后找不到keil找不到工程內的模型的相關文件是怎么回事?

    模型在cubemx內解析后沒有問題,但解析之后生成工程keil內缺讀取不到生成的三個模型文件
    發表于 07-18 07:18

    瑞芯微模型量化文件構建

    模型是一張圖片輸入時,量化文件如上圖所示。但是我現在想量化deepprivacy人臉匿名模型,他的輸入是四個輸入。該模型訓練時數據集只標注了人臉框和關鍵點,該
    發表于 06-13 09:07

    VirtualLab Fusion應用:振幅型SLM圖片的導入

    導入完成后,搭建光路模型,選擇Stored Function元件作為SLM,雙擊打開Stored Function元件,將透過率函數文件加載到元件中: 9.運行場追跡查看調制結果如下:
    發表于 06-03 08:49

    KaihongOS操作系統FA模型與Stage模型介紹

    的運行環境。FA模型的開發方式為通過導出匿名對象、固定入口文件的方式指定應用組件。開發者無法進行派生,不利于擴展能力。 Stage模型 Stage
    發表于 04-24 07:27

    如何基于Kahn處理網絡定義AI引擎圖形編程模型

    本白皮書探討了如何基于 Kahn 處理網絡( KPN )定義 AI 引擎圖形編程模型。KPN 模型有助于實現數據流并行化,進而提高系統的整體性能。
    的頭像 發表于 04-17 11:31 ?863次閱讀
    如何基于Kahn處理網絡定義AI<b class='flag-5'>引擎</b>圖形編程<b class='flag-5'>模型</b>

    如何將調用方函數的MATLAB代碼導入到DS?

    我最近制作了一個包含調用方函數的模型(我已將模型附加到 zip 文件中)。代碼構建正常。但是當我在 design studio 中導入代碼時,它會引發錯誤,因為它無法編譯或
    發表于 04-02 06:51

    訓練好的ai模型導入cubemx不成功怎么處理?

    訓練好的ai模型導入cubemx不成功咋辦,試了好幾個模型壓縮了也不行,ram占用過大,有無解決方案?
    發表于 03-11 07:18

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

    調用DeepSeek節點,最終將大模型輸出的結果進行語音合成實現端側播報 下載工程模板導入,配置參數后綁定開發板ID即可。 關鍵參數說明(以火山引擎版為例): HOST
    發表于 03-06 17:02

    使用OpenVINO?推理引擎進行推理時,如何更改模型布局?

    無法為一系列網絡準備輸入。 第一個模型的輸出在 CHW 布局中,但第二個模型的輸入在 NCHW 布局中。
    發表于 03-06 07:21

    無法在在DL Workbench中導入unet-camvid-onnx-0001模型之前下載CamVid數據集?

    無法在在 DL Workbench 中導入 unet-camvid-onnx-0001 模型之前下載 CamVid 數據集
    發表于 03-06 07:12