基于RKNN的嵌入式深度学习开发(2)
- 手机
- 2025-09-17 23:15:03

上一个章节我们介绍的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 pile() # 进行量化 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开发板上对模型的准确性、性能、内存使用情况进行评估。评估的流程如下所示:
模型评估主要分三部分进行:准确性评估、性能评估和内存评估。
准确性评估:评估 RKNN 模型推理结果的准确性。性能评估:评估 RKNN 模型在指定开发板上推理时的耗时。 内存评估:评估 RKNN 模型推理时在 Rockchip NPU 上的内存使用情况。2.5 RKNN模型的加密
为了避免模型的结构、权重等信息泄漏,RKNN Toolkit提供模型加密功能。 RKNN Toolkit 提供 3 个加密等级,等级越高,安全性越高,解密越耗时;反之,安全性越低,解密越快。
加密模型的部署流程和普通一样,不需要解密等额外操作。
基于RKNN的嵌入式深度学习开发(2)由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“基于RKNN的嵌入式深度学习开发(2)”