基于RKNN的嵌入式深度学习开发(2)

news/2025/3/3 11:12:21/

        上一个章节我们介绍的RKNN模型的模型转换和模型的推理,这一章节我们将介绍模型的量化和评估部分。

2.3 RKNN模型的量化

        量化就是将浮点转换为定点运算的过程,或者训练后由rknn来量化。量化模型使用较低精度(如int8/uint8/int16)保存模型的权重信息,在部署时可以使用更少的存储空间,获得更快的推理速度。但各深度学习框架训练、保存模型时,通常使用浮点数据,所以模型量化是模型转换过程中非常重要的一环。RKNN Toolkit目前对量化模型的支持主要有以下两种形式

  • RKNN Toolkit根据用户提供的量化数据集,对加载的浮点模型进行量化,生成量化的RKNN 模型。
    • 支持的量化精度类型:int16,int8,uint8
    • 量化方式:训练后静态量化
    • 支持的量化粒度:per-tensor(或 per-layer),不支持 per-channel 量化
  • 深度学习框架导出量化模型,RKNN Toolkit加载并利用已有的量化信息,生成量化 RKNN 模型。
    • 支持的深度学习框架:PyToch(v1.9.0)、ONNX(Onnxruntime v1.5.1)、Tensorflow、TFLite
    • 支持的量化精度类型:int8, uint8
    • 量化方式:训练后静态量化, 量化感知训练(QAT)

以下代码为量化的示例代码:

# 导入RKNN库  
from rknn.api import RKNN  # 创建RKNN对象  
rknn = RKNN()  # 加载已训练的模型,例如TensorFlow或PyTorch模型  
# 这里以TensorFlow Frozen Graph为例  
model_path = 'your_model.pb'  
rknn.load_tensorflow(model=model_path, inputs=['input_tensor'], outputs=['output_tensor'])  # 配置量化  
rknn.config(quantized_enable=True, quantized_dtype='int8')  # 编译模型  
print("编译模型...")  
rknn.compile()  # 进行量化  
print("量化模型...")  
rknn.quantize()  # 导出量化后的模型  
output_model_path = 'quantized_model.rknn'  
rknn.export(output_model_path)  print("量化完成,模型已保存到:", output_model_path)  # 释放RKNN对象  
rknn.release()

2.4 RKNN模型的评估

        通过模型转换得到 RKNN 模型后,可以使用RKNN Toolkit在Rockchip NPU开发板上对模型的准确性、性能、内存使用情况进行评估。评估的流程如下所示:

模型评估主要分三部分进行:准确性评估、性能评估和内存评估。

  1. 准确性评估:评估 RKNN 模型推理结果的准确性。
  2. 性能评估:评估 RKNN 模型在指定开发板上推理时的耗时。 
  3. 内存评估:评估 RKNN 模型推理时在 Rockchip NPU 上的内存使用情况。

2.5 RKNN模型的加密

        为了避免模型的结构、权重等信息泄漏,RKNN Toolkit提供模型加密功能。 RKNN Toolkit 提供 3 个加密等级,等级越高,安全性越高,解密越耗时;反之,安全性越低,解密越快。

 

加密模型的部署流程和普通一样,不需要解密等额外操作。


http://www.ppmy.cn/news/1576273.html

相关文章

C++(6)内存管理

一.C/C内存分布 首先我了解一下C/C中程序内存区域的划分 以下就是大致的图形 那么各区域是用来干嘛的呢? 1. 代码区(Text Segment) 作用:存放编译后的机器指令(即程序的执行代码)。 特点: 只…

Pytorch实现之结合mobilenetV2和FPN的GAN去雾算法

简介 简介:该论文提出了一种基于特征金字塔网络(FPN)的生成对抗网络(GAN)单幅图像去雾算法。 该方法是一种端到端图像去雾方法,避免了对物理模型的依赖。 生成器以MobileNet-V2为骨干网络,采用FPN结构提高图像的特征利用率。鉴别器是常规架构,损失函数也是常规函数。 …

蓝桥杯 门牌制作

1.门牌制作 - 蓝桥云课 门牌制作 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出句将所填结果输出即可。 小蓝要为一条街的住户制作门牌。 这条街一共有2020位住户,门牌号从1到2020编号。 小蓝制作门牌的方法是先制作0到9这…

一个使用ALIGNN神经网络对材料性能预测的深度学习案例解读

案例:使用更先进的图神经网络(ALIGNN)结合Materials Project API进行材料带隙预测 在这个案例中,我们将使用一种更先进且性能更优的图神经网络模型——ALIGNN(Atomistic Line Graph Neural Network)&#…

解锁高效开发新姿势:Trae AI编辑器深度体验

解锁高效开发新姿势:Trae AI 编辑器深度体验 在软件开发领域,效率就是生命。字节跳动新推出的 AI 编辑器 Trae,就像一把神奇的钥匙,为开发者打开了高效开发的大门。最近我深入体验了 Trae,今天就来和大家分享一下使用…

React生态、Vue生态与跨框架前端解决方案

React生态系统 1 基础框架 React.js 是一个用于构建UI的JavaScript库。 2 应用框架 Next.js 是基于React.js的完整应用框架。主要负责应用如何工作: 应用架构:路由系统、页面结构渲染策略:服务端渲染(SSR)、静态生成(SSG)、客户端渲染性…

机器分类的基石:逻辑回归Logistic Regression

机器分类的基石:逻辑回归Logistic Regression 逻辑回归核心思想总结 1. 核心原理与改进 问题驱动: 从线性回归的不足出发(输出无界、对极端值敏感),逻辑回归通过 Sigmoid函数(非线性映射)将线…

文字滚动效果组件和按钮组件

今天和大家分享一个vue中好用的组件,是我自己写的,大家也可以自己改,就是文字的循环滚动效果,如下图,文字会向左移动,结束之后也会有一个循环,还有一个按钮组件,基本框架写的差不多了…