当前位置: 首页 > news >正文

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

1.嵌入式AI项目的开发流程

        首先要明确嵌入式AI开发的流程,如图:

 2.RKNN的使用步骤

2.1RKNN模型转换

        这个步骤可以将其他模型转换成以rknn为后缀的模型,需要在PC端进行。可以用虚拟机自行搭建一个linux环境进行模型的转换,可以使用WSL,相较于VM更加方便,具体步骤可以看WSL安装以及和VM的冲突解决-CSDN博客,然后根据不同开发板的要求配置RKNN版本库进行模型的转换,具体流程如下:

1. 创建RKNN对象,初始化RKNN环境

from rknn.api import RKNN

rknn = RKNN(verbose=True) # 参数:详细调试信息

2. 设置模型预处理参数,运行在PC上,通过模拟器运行模型时需要调用config接口设置模型的预处理参数;

rknn.config(mean_values=[[0, 0, 0]], # 不对红绿蓝三通道进行均值处理
            std_values=[[255, 255, 255]], # 标准差值 将除 255(归一化)
            target_platform = 'rk1808') # 你使用开发板的版本号

3. 导入非RKNN模型,运行在PC上,通过模拟器运行模型时使用 load_caffe、load_tensorflow 等接口导入对应的非RKNN模型;

ret = rknn.load_onnx(model=ONNX_MODEL) # 导入onnx模型
# 成功返回0

4. 构建RKNN模型,运行在PC上,通过模拟器运行模型,需要调用 build 接口构建RKNN模型,然后可以导出RKNN模型或者初始化运行环境进行推理等操作;

ret = rknn.build(do_quantization=True, dataset='./dataset.txt')
# do_quantization:量化
# 成功返回0

 5. 导出RKNN模型。

ret = rknn.export_rknn(RKNN_MODEL)
# 成功返回0

 6. 释放RKNN对象。

rknn.release()

2.2 RKNN模型的推理

       在这个流程中,核心步骤是加载 RKNN 模型、初始化运行时环境、准备输入数据、模型推理和推理结果的后处理。

1. 创建RKNN对象,初始化RKNN环境

# 创建RKNN对象  
rknn = RKNN()  
# 载入RKNN模型   
rknn.load_rknn(model_name)   
# 初始化RKNN运行环境   
ret = rknn.init_runtime() 

2. 导入非RKNN模型,如果是运行在PC上,通过模拟器运行模型时使用load_caffe、load_tensorflow 等接口导入对应的非RKNN模型

ret = rknn.load_rknn(RKNN_MODEL)
# 成功返回0

3. 初始化运行时环境,如果需要模型推理或性能评估,必须先调用init_runtime 初始化运行时环境,要指定模型的运行平台。

ret = rknn.init_runtime(target=None) #target为rk型号

6. 始化运行环境后,可以调用inference接口进行推理,使用eval_perf接口对模型性能进行评估,或者使用eval_memory接口获取模型在硬件平台上运行时的内存使用情况。

outputs = rknn.inference(inputs=[img])

7. 最后调用release接口释放RKNN对象。

rknn.release()

相关文章:

  • 青蛙跳杯子(BFS)
  • 如何将hf-mirror.com作为vllm默认的下载源? conda如何移除虚拟环境?conda 如何复制一份虚拟环境?
  • 15-YOLOV8OBB损失函数详解
  • Spring(三)容器-注入
  • 玩转大模型——Trae AI IDE国内版使用教程
  • 【我的Android进阶之旅】如何使用NanoHttpd在Android端快速部署一个HTTP服务器?
  • GPU、NPU与LPU:大语言模型(LLM)硬件加速器全面对比分析
  • 20241130 RocketMQ本机安装与SpringBoot整合
  • CSS2.1基础学习
  • STM32——DMA详解
  • 似然函数与极大似然估计
  • 表达式求值(后缀表达式)
  • 软考中级-数据库-3.2 数据结构-数组和矩阵
  • Deepgram推出Nova-3 Medical,AI语音转录助力医疗行业
  • 基于CURL命令封装的JAVA通用HTTP工具
  • Linux中shell对话框(dialog)编程
  • 从零开始学习Slam--数学概念
  • 文心4.5,大模型下半场的野心之作
  • 网络学习(四)HTTPS中,SSL的单向认证与双向认证
  • [自然语言处理]pytorch概述--什么是张量(Tensor)和基本操作
  • 深圳企业模板建站/关键词优化推广公司排名
  • 做怎样的网站能赚钱/怎么注册一个网站
  • 贵州icp网站备案中心/百度推广找谁
  • 企业网站建设一条龙多少钱/公司网站如何推广
  • 做网站法律条文/微营销推广软件
  • 彩票网站建设服务/360公司官网首页