承接上文——小編就不再鋪墊了,直接上重點!
在上一節中,我們已經成功完成模型訓練,并獲得了量化后的 TFLite 模型。
那模型到底“長”什么樣?結構是否如預期?算子是否都被正確量化?
要回答這些問題,就必須請出我們的一位老朋友-Neutron工具(朋友們可自行下載)來對模型進行可視化與結構檢查。通過它,我們能更直觀地了解模型的內部構成,為后續移植到Zephyr做好扎實準備。

為了驗證是否是量化好的模型,這里任意點擊一個節點,在彈出的屬性頁面下,可以看到他的權重類型為int8,說明我們已經成功量化好了模型,就可以開始做模型轉換的準備了。
1.下載適配MCXN947的SDK代碼,這樣就可以直接已SDK為基礎進行改造了,無需額外工作,這里要注意的是:因為轉換工具和SDK版本有深度的依賴,在轉換前,需要提前決定好要使用的SDK版本https://mcuxpresso.nxp.com/zh/select,這里假設我們選擇的是2.16.0版本的SDK包:

點擊構建后,會跳轉頁面勾選中間件,因為是要移植到Zephyr上,這里直接選擇MCUXPresso IDE作為工具鏈(采用的GCC工具鏈,和Zephyr原生工具鏈兼容),并勾選eIQ選項,等待構建完成:

2.下載eiq ToolKit,安裝包中包含了我們所需要的轉換工具https://www.nxp.com/design/design-center/software/eiq-ai-development-environment/eiq-toolkit-for-end-to-end-model-development-and-deployment:EIQ-TOOLKIT,并根據實際環境下載windows或是ubuntu版本的軟件:

下載完成后等待安裝完成,安裝完成后,就要開始尋找我們需要的轉換工具了,切換到安裝目錄C: xpeIQ_Toolkit_v1.14.0in eutron-converter,里面有不同版本的轉換器,要根據剛才下載的SDK版本進行選擇,剛才下載的SDK版本是2.16.0,那直接選擇MCU_SDK_2.16.000目錄下的轉換工具:


3.模型轉換方法:準備好量化好的模型,并利用命令行方式進行轉換:

轉換成功后,模型會已saved_model_converted.tflite保存,如下圖右邊的就是轉換好的模型,轉換器已經將三個FullyConnected算子進行了融合,變成了一個統一的NeutronGraph算子,至此模型轉換就成功了。

4.將模型保存為C數組的形式:為了在程序中使用轉換好的模型,需要將模型降解為C語言數組的形式,這里直接借用Linux所提供的工具,xxd來進行操作(可以借助WSL或是虛擬機實現):
|
# Install xxd if it is not available !apt-get update && apt-get -qq install xxd # Convert to a C source file, i.e, a TensorFlow Lite for Microcontrollers model !xxd -i {MODEL_TFLITE} > {MODEL_TFLITE_MICRO} # Update variable names REPLACE_TEXT = MODEL_TFLITE.replace('/', '_').replace('.', '_') !sed -i 's/'{REPLACE_TEXT}'/g_model/g' {MODEL_TFLITE_MICRO} |
執行完成后會生成一個名為:model.cc的文件,里面就是已經降解為C語言數組形式的模型文件了:

至此,本期所需的前期準備工作已全部就緒:
我們完成了模型訓練、量化處理,并順利生成了可用于部署的TFLite模型。這些步驟為真正的重點 ——在Zephyr 中集成NPU運行時環境,并將模型文件部署到實際系統—— 打下了堅實基礎。
真正的“硬仗”,從下一期正式開始。
敬請期待,我們將在Zephyr上讓NPU“跑”起來!
-
AI
+關注
關注
91文章
39755瀏覽量
301361 -
模型
+關注
關注
1文章
3751瀏覽量
52099 -
NPU
+關注
關注
2文章
373瀏覽量
21089
原文標題:為Zephyr AI加速做好準備:模型轉換
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
NXP推出集成NPU的MCU,支持AI邊緣設備!MCU實現AI功能的多種方式
使用NORDIC AI的好處
基于RKNN程序開發和模型轉換的NPU簡要說明
AIO-3399ProC NPU開發相關資料推薦
NPU全驅動與mini驅動的區別在哪
恩智浦最新的應用處理器 i.MX 95采用專有NPU IP進行片上AI加速
tensorflow-lite可以通過NPU加速運行嗎?
在i.MX93 EVKCM上的EthosU NPU上推斷AI模型時遇到錯誤怎么解決?
【書籍評測活動NO.18】 AI加速器架構設計與實現
驍龍720加入NPU神經網絡計算單元 專注AI加速
npu是什么意思?npu芯片是什么意思?npu到底有什么用?
什么是NPU?什么場景需要配置NPU?
在ZephyrOS添加NPU驅動支持加速AI應用
評論