【正点原子i.MX93开发板试用连载体验】为什么模型不能运行在NPU上

 本文最早发表于电子发烧友论坛:【新提醒】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)

昨天提到要使模型运行的NPU上,必须先将其量化。如果对没有量化的模型使用vela工具进行转换,工具会给出警告,所生成的模型仍然是只能运行在CPU上,而无法运行在NPU上的。

下面就是用vela工具对simple_audio_model_numpy.tflite文件进行转换的结果。

 
root@atk-imx93:~/shell/simple# vela simple_audio_model_numpy.tflite

Warning: Unsupported TensorFlow Lite semantics for RESIZE_BILINEAR 'sequential_2/resizing_2/resize/ResizeBilinear;StatefulPartitionedCall/sequential_2/resizing_2/resize/ResizeBilinear'. Placing on CPU instead

 - Input(s), Output and Weight tensors must have quantization parameters

   Op has tensors with missing quantization parameters: input_3, sequential_2/resizing_2/resize/ResizeBilinear;StatefulPartitionedCall/sequential_2/resizing_2/resize/ResizeBilinear

Warning: Unsupported TensorFlow Lite semantics for CONV_2D 'sequential_2/conv2d_4/Relu;StatefulPartitionedCall/sequential_2/conv2d_4/Relu;sequential_2/conv2d_4/BiasAdd;StatefulPartitionedCall/sequential_2/conv2d_4/BiasAdd;sequential_2/conv2d_4/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_4/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_4/BiasAdd/ReadVariableOp2'. Placing on CPU instead

 - Input(s), Output and Weight tensors must have quantization parameters

   Op has tensors with missing quantization parameters: sequential_2/resizing_2/resize/ResizeBilinear;StatefulPartitionedCall/sequential_2/resizing_2/resize/ResizeBilinear, sequential_2/conv2d_4/Relu;StatefulPartitionedCall/sequential_2/conv2d_4/Relu;sequential_2/conv2d_4/BiasAdd;StatefulPartitionedCall/sequential_2/conv2d_4/BiasAdd;sequential_2/conv2d_4/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_4/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_4/BiasAdd/ReadVariableOp1_reshape, sequential_2/conv2d_4/Relu;StatefulPartitionedCall/sequential_2/conv2d_4/Relu;sequential_2/conv2d_4/BiasAdd;StatefulPartitionedCall/sequential_2/conv2d_4/BiasAdd;sequential_2/conv2d_4/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_4/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_4/BiasAdd/ReadVariableOp2

Warning: Unsupported TensorFlow Lite semantics for CONV_2D 'sequential_2/conv2d_5/Relu;StatefulPartitionedCall/sequential_2/conv2d_5/Relu;sequential_2/conv2d_5/BiasAdd;StatefulPartitionedCall/sequential_2/conv2d_5/BiasAdd;sequential_2/conv2d_5/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_5/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_5/BiasAdd/ReadVariableOp'. Placing on CPU instead

 - Input(s), Output and Weight tensors must have quantization parameters

   Op has tensors with missing quantization parameters: sequential_2/conv2d_4/Relu;StatefulPartitionedCall/sequential_2/conv2d_4/Relu;sequential_2/conv2d_4/BiasAdd;StatefulPartitionedCall/sequential_2/conv2d_4/BiasAdd;sequential_2/conv2d_4/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_4/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_4/BiasAdd/ReadVariableOp2, sequential_2/conv2d_5/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_5/Conv2D_reshape, sequential_2/conv2d_5/Relu;StatefulPartitionedCall/sequential_2/conv2d_5/Relu;sequential_2/conv2d_5/BiasAdd;StatefulPartitionedCall/sequential_2/conv2d_5/BiasAdd;sequential_2/conv2d_5/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_5/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_5/BiasAdd/ReadVariableOp

Warning: Unsupported TensorFlow Lite semantics for MAX_POOL_2D 'sequential_2/max_pooling2d_2/MaxPool;StatefulPartitionedCall/sequential_2/max_pooling2d_2/MaxPool'. Placing on CPU instead

 - Input(s), Output and Weight tensors must have quantization parameters

   Op has tensors with missing quantization parameters: sequential_2/conv2d_5/Relu;StatefulPartitionedCall/sequential_2/conv2d_5/Relu;sequential_2/conv2d_5/BiasAdd;StatefulPartitionedCall/sequential_2/conv2d_5/BiasAdd;sequential_2/conv2d_5/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_5/Conv2D;StatefulPartitionedCall/sequential_2/conv2d_5/BiasAdd/ReadVariableOp, sequential_2/max_pooling2d_2/MaxPool;StatefulPartitionedCall/sequential_2/max_pooling2d_2/MaxPool

Warning: Unsupported TensorFlow Lite semantics for RESHAPE 'sequential_2/flatten_2/Reshape;StatefulPartitionedCall/sequential_2/flatten_2/Reshape'. Placing on CPU instead

 - Input(s), Output and Weight tensors must have quantization parameters

   Op has tensors with missing quantization parameters: sequential_2/max_pooling2d_2/MaxPool;StatefulPartitionedCall/sequential_2/max_pooling2d_2/MaxPool, sequential_2/flatten_2/Reshape;StatefulPartitionedCall/sequential_2/flatten_2/Reshape

Warning: Unsupported TensorFlow Lite semantics for FULLY_CONNECTED 'sequential_2/dense_4/Relu;StatefulPartitionedCall/sequential_2/dense_4/Relu;sequential_2/dense_4/BiasAdd;StatefulPartitionedCall/sequential_2/dense_4/BiasAdd'. Placing on CPU instead

 - Input(s), Output and Weight tensors must have quantization parameters

   Op has tensors with missing quantization parameters: sequential_2/flatten_2/Reshape;StatefulPartitionedCall/sequential_2/flatten_2/Reshape, sequential_2/dense_4/MatMul;StatefulPartitionedCall/sequential_2/dense_4/MatMul_reshape, sequential_2/dense_4/Relu;StatefulPartitionedCall/sequential_2/dense_4/Relu;sequential_2/dense_4/BiasAdd;StatefulPartitionedCall/sequential_2/dense_4/BiasAdd

Warning: Unsupported TensorFlow Lite semantics for FULLY_CONNECTED 'Identity'. Placing on CPU instead

 - Input(s), Output and Weight tensors must have quantization parameters

   Op has tensors with missing quantization parameters: sequential_2/dense_4/Relu;StatefulPartitionedCall/sequential_2/dense_4/Relu;sequential_2/dense_4/BiasAdd;StatefulPartitionedCall/sequential_2/dense_4/BiasAdd, sequential_2/dense_5/MatMul;StatefulPartitionedCall/sequential_2/dense_5/MatMul_reshape, Identity



Network summary for simple_audio_model_numpy

Accelerator configuration               Ethos_U65_256

System configuration                 internal-default

Memory mode                          internal-default

Accelerator clock                                1000 MHz





CPU operators = 7 (100.0%)

NPU operators = 0 (0.0%)



Neural network macs                                 0 MACs/batch

Network Tops/s                                    nan Tops/s



NPU cycles                                          0 cycles/batch

SRAM Access cycles                                  0 cycles/batch

DRAM Access cycles                                  0 cycles/batch

On-chip Flash Access cycles                         0 cycles/batch

Off-chip Flash Access cycles                        0 cycles/batch

Total cycles                                        0 cycles/batch



Batch Inference time                 0.00 ms,     nan inferences/s (batch size 1)



Warning: Could not write the following attributes to RESHAPE 'sequential_2/flatten_2/Reshape;StatefulPartitionedCall/sequential_2/flatten_2/Reshape' ReshapeOptions field: new_shape

这个错误信息明确指出Vela不支持 TensorFlow Lite 对特定操作的支持问题。具体来说,这个警告说明了:量化参数缺失 ,错误信息指出,涉及的输入、输出和权重张量必须具有量化参数,但在这个操作中,某些张量(如 input_3 和 sequential_2/resizing_2/resize/ResizeBilinear)缺失了这些量化参数。由于不支持,相关的操作将被放置在 CPU 上执行,而不是利用可能存在的更高效的硬件加速(NPU)。

我们使用netron.app可以查看一下模型文件。

从中可以看到input_3是float32类型的。

而查看被vela支持的模型,可以看到其输入参数已经被量化,是int8类型的。

如果我们想利用i.MX 93的NPU能力就需要先对模型文件进行量化。当然如果觉得i.MX 93的CPU推理能力已经够用了,此步骤也可以省略。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/792844.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

编程零基础教程,从知道什么是前端开始

本文作者:程序员鱼皮 免费编程学习 - 编程导航网:https://www.code-nav.cn 鱼小皮:百哥,我想学编程,应该先学啥呢? 老百:小皮,怎么突然想学编程了,不会又是三分钟热度吧&…

vue学习day06-脚手架目录文件介绍与项目运行流程、组件化开发和根组件、普通组件的注册使用-局部注册、全局注册

16、脚手架目录文件介绍与项目运行流程 (1)脚手架目录文件介绍 (2)Index.html (3)Main.js 17、组件化开发和根组件 (1)组件化 1)概念 一个页面可以拆分成一个个组件&am…

Spring源码二十二:Bean实例化流程五

上一篇Spring源码二十一:Bean实例化流程四,咱们主要分析里createBeanInstance方法Spring给我们提供给的FactoryMethod方法,举例说明了factoryMethod属性如何使用,同时简单讨论了具体实现逻辑。 这一篇咱们将进入反射实例化Bean&am…

MySQL的事务使用

文章目录 特点JDBC使用事务 特点 事务的基本属性ACID: 数据库事务的ACID特性是指保证数据库在执行事务操作时能够可靠和正确的四个基本属性。ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isol…

科研绘图之tSNE图

t-SNE(t-Distributed Stochastic Neighbor Embedding,t分布随机邻域嵌入)是一种用于数据降维和可视化的算法。它可以将高维数据映射到二维或三维空间,同时尽可能地保留数据点之间的局部关系。t-SNE特别适用于探索数据的内部结构和…

C语言 指针和数组——指针数组的应用:命令行参数

目录 命令行参数 演示命令行参数与main函数形参间的关系 命令行参数  什么是 命令行参数( Command Line Arguments )?  GUI 界面之前,计算机的操作界面都是字符式的命令行界面 ( DOS 、 UNIX 、 Linux &…

IEPE数据采集卡的作用说明

IEPE指的是一种自带电量放大器或电压放大器的加速度传感器。IEPE是压电集成电路的缩写。因为由加速度传感器产生的电量是很小的,因此传感器产生的电信号很容易受到噪声干扰,需要用灵敏的电子器件对其进行放大和信号调理。IEPE中集成了灵敏的电子器件使其…

连锁行业观察:一线门店设备如何运维?化“管理”为“服务”

连锁零售行业的数字化发展,离开不了大量智能设备的支撑,比如我们日常见到的各种门店互动终端、自助收银设备、无人值守售货机等等。 由于连锁行业的特性,这些设备往往位置分散,数量众多,难以集中管理。一旦这些设备遇…

ARM功耗管理之多核处理器启动

安全之安全(security)博客目录导读 思考:SecureBoot?多核处理器启动流程?PSCI启动方式? 一般嵌入式系统使用的都是对称多处理器(Symmetric Multi-Processor, SMP)系统,包含了多个cpu, 这几个cp…

YOLOv8改进 | 注意力机制| 对小目标友好的BiFormer【CVPR2023】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

从零开始开发视频美颜SDK:实现直播美颜效果

因此,开发一款从零开始的视频美颜SDK,不仅可以节省成本,还能根据具体需求进行个性化调整。本文将介绍从零开始开发视频美颜SDK的关键步骤和实现思路。 一、需求分析与技术选型 在开发一款视频美颜SDK之前,首先需要进行详细的需求…

MongoDB本地配置分片

mongodb server version: 7.0.12 社区版 mongo shell version: 2.2.10 平台:win10 64位 控制台:Git Bash 分片相关节点结构示意图 大概步骤 1. 配置 配置服务器 副本集 (最少3个节点) -- 创建数据目录 mkdir -p ~/dbs/confi…

硬件开发工具Arduino IDE

招聘信息共享社群 关联上篇文章乐鑫ESPRESSIF芯片开发简介 Arduino IDE(集成开发环境)是为Arduino硬件开发而设计的一款软件,它提供了一个易于使用的图形界面,允许用户编写、编辑、编译和上传代码到Arduino开发板。Arduino IDE的…

【逆向基础】十、逆向工具分享之DIE(Detect It Easy)

一、简介 DIE(Detect It Easy)是一款可以轻松检测PE文件的程序;其主要作用是查壳,并将pe文件的内容解析出来,包括PE文件中包含的导入函数、导出函数的名称及地址,入口函数地址等,是技术人员分析…

mysql高并发设计

mysql高并发设计 一、部署方案 https://blog.csdn.net/weixin_37519752/article/details/138728036 方案1:双主 1、优点 写入扩展性:两个节点都可以处理写入操作,提高了写入操作的扩展性。 高可用性:在任一节点故障时&#xff…

【Linux】静态库的制作和使用详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

【Spring Boot】Spring原理:Bean的作用域和生命周期

目录 Spring原理一. 知识回顾1.1 回顾Spring IOC1.2 回顾Spring DI1.3 回顾如何获取对象 二. Bean的作用域三. Bean的生命周期 Spring原理 一. 知识回顾 在之前IOC/DI的学习中我们也用到了Bean对象,现在先来回顾一下IOC/DI的知识吧! 首先Spring IOC&am…

权利之望账号注册教程 权力之望游戏客户端下载教程

权力之望,一款马上就要上线的新的MMORPG游戏,非常好玩大型多人在竞技的游戏,玩家在游戏中有着60多种不同的职业可以选择,而且整个游戏的画面非常精美,更有各种不同的武器装备可以选择,热血的战斗和各种大型…

c语言的简易教法—— 函数递归

文章目录 一、什么是递归?1.1递归的思想1.2递归的限制条件 二、递归案例2.1 案例1:求n的阶层2.1.1分析2.1.2 递归函数(Fact)的代码实现2.1.3 测试:main函数实现2.1.4 运行结果和画图推演2.1.5 扩展:迭代方法…

配置Java开发环境

Java是一种广泛使用的编程语言,特别是在企业应用和安卓开发中。本文将详细介绍如何在您的计算机上配置Java开发环境,包括安装JDK、配置环境变量以及选择和设置IDE。 一、安装Java Development Kit (JDK) JDK(Java Development Kit&#xff0…