承接上文——小编就不再铺垫了,直接上重点!
在上一节中,我们已经成功完成模型训练,并获得了量化后的 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文章
41273浏览量
302658 -
模型
+关注
关注
1文章
3829浏览量
52280 -
NPU
+关注
关注
2文章
387浏览量
21350
原文标题:为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应用
评论