位置: IT常识 - 正文

rk3588使用npu进行模型转换和推理,加速AI应用落地(rk3328 sdk)

编辑:rootadmin
rk3588使用npu进行模型转换和推理,加速AI应用落地 文章目录🍉零、引言🍍一、主要功能🍎二、系统依赖🍌三、安装RKNN-Toolkit1、安装Python3.6和pip32、 安装相关依赖3、获取RKNN-Toolkit2安装包4、安装Python环境5、安装RKNN-Toolkit26、检验是否安装成功🍇四、在PC上仿真运行示例1、进入目录2、运行程序3、模型和推理结果🍉零、引言

推荐整理分享rk3588使用npu进行模型转换和推理,加速AI应用落地(rk3328 sdk),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:rk3566 sdk,rk3399pro npu开发,rk3399pro npu开发,rk3288 sdk,rk3288 isp,rk3588 npu,rk3566 npu,rk3588 npu,内容如对您有帮助,希望把文章链接给更多的朋友!

本文完成于2022-07-02 20:21:55。博主在瑞芯微RK3588的开发板上跑了deepsort跟踪算法,从IP相机中的server拉取rtsp视频流,但是fps只有1.2,和放PPT一样卡顿,无法投入实际应用。本来想使用tensorrt进行加速推理,但是前提需要cuda,rk的板子上都是Arm的手机gpu,没有Nvidia的cuda,所以这条路行不通。那么转过来,使用开发板自带的NPU进行加速推理,岂不是更加可行,而且它本身就是深度学习嵌入式板子,不用NPU真的可惜。

🏅问题来了:怎么使用NPU?在开发板上还是在自己的PC上?要安装什么环境?怎么安装?这些问题都需要依次考虑清楚。因为我在此之前也没有接触过NPU,所以为此做了很多功课,看了很多教程,总计有10h以上。然后今天自己成功实践了下转换rknn模型,并使用npu推理。为了让后面的同学少走弯路,特此花1个h记录下这个使用过程,因为官方教程真的很不详细,很多地方都需要自己踩坑然后填好,那么开始正题!

🍍一、主要功能

RKNN-Toolkit2 是为用户提供在 PC、 Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具提供的 Python 接口可以便捷地完成以下功能:

🏆模型转换:支持 Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、PyTorch 等模型转为 RKNN 模型,并支持 RKNN 模型导入导出,RKNN 模型能够在 Rockchip NPU 平台上加载使用。🎽量 化 功 能 : 支 持 将 浮 点 模 型 量 化 为 定 点 模 型 , 目 前 支 持 的 量 化 方 法 为 非 对 称 量 化 , 并 支 持 混 合 量 化 功 能 。asymmetric_quantized-16 目前版本暂不支持。🎯模型推理:能够在 PC 上模拟 Rockchip NPU 运行 RKNN 模型并获取推理结果;或将 RKNN模型分发到指定的 NPU 设备上进行推理并获取推理结果。🏋性能和内存评估:将 RKNN 模型分发到指定 NPU 设备上运行,以评估模型在实际设备上运行时的性能和内存占用情况。🎼量化精度分析:该功能将给出模型量化前后每一层推理结果与浮点模型推理结果的余弦距离,以便于分析量化误差是如何出现的,为提高量化模型的精度提供思路。

RK3588 内置 NPU 模块, 处理性能最高可达6TOPS。使用该NPU需要下载RKNN SDK,RKNN SDK 为带有 NPU 的RK3588S/RK3588 芯片平台提供编程接口,能够帮助用户部署使用 RKNN-Toolkit2 导出 RKNN 模型,加速 AI应用 的落地。

🍎二、系统依赖

本开发套件支持运行于 Ubuntu操作系统 (目前版本 Windows、MacOS、Debian 等暂不支持)。 Ubuntu系统需要满足以下运行环境要求:

操作系统版本Ubuntu18.04(x64)及以上Python 版本3.6 / 3.8Python 库依赖详见 doc/requirements*.txt🍌三、安装RKNN-Toolkit

下面我以 Ubuntu 18.04、Python3.6 为例,说明如何快速上手使用 RKNN-Toolkit2。我的开发板为ITX-3588J,但是开发板型号并不影响。

1、安装Python3.6和pip3sudo apt-get install python3 python3-dev python3-pip

2、 安装相关依赖sudo apt-get install zlib1g zlib1g-dev

注意这个包中间是数字1,不是字母l,直接复制命令回车最安全。

sudo apt-get install libxslt1-dev libglib2.0-0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc

我的Ubuntu系统已经装了很多SLAM的环境,真的很担心依赖冲突,不过经过检验,发现并没有任何冲突。

3、获取RKNN-Toolkit2安装包

从Firefly官网获取RKNN_SDK_V1.3.0工具, 里面会有RKNN-Toolkit2 安装包,我是保存到百度网盘,然后在Windows下载好之后,使用U盘拷贝到Ubuntu系统的。当然也可以直接通过官网下载,但是比较慢。如果你是从网盘下载的,里面的docker镜像文件不需要下载,用不到,大家切记!解压后,你的文件夹内容应该和我一样(rknpu2_1.3.0是我从外面解压进来了,本教程还用不到,在后面的教程会用到)。

4、安装Python环境rk3588使用npu进行模型转换和推理,加速AI应用落地(rk3328 sdk)

之前安装的是Ubuntu依赖,这里需要安装numpy、python_opencv等依赖包。这里为了防止Python环境污染,我使用了virtualenv来管理环境,非常方便且安全,安装和使用方法可以查看这篇教程:如何安装和使用virtualenv——python环境的管理大师。这篇教程中创建的环境也就是我这里要使用的环境。

先激活环境,然后pip install -r doc/requirements_cp36-1.3.0.txt,如果出现报错:

上面在安装bfloat16时失败,因为它依赖于numpy,但是它并没有被安装呢,所以我们先手动安装下numpy。

pip install numpy==1.16.6

然后重新执行命令:pip install -r doc/requirements_cp36-1.3.0.txt,上面已经下载好的依赖不会重复下载,所有依赖下载完成后进行统一安装。

5、安装RKNN-Toolkit2sudo pip3 install packages/rknn_toolkit2-1.3.0_11912b58-cp36-cp36m-linux_x86_64.whl

可以看到在py36环境中,所有依赖都已满足。

6、检验是否安装成功python3from rknn.api import RKNN

如果导入 RKNN 模块没有失败,说明安装成功。同时按住 Ctrl+D 退出 Python3。

🍇四、在PC上仿真运行示例

RKNN-Toolkit2 自带了一个模拟器,可以用来仿真模型在 npu 上运行时的行为。就相当于Android Studio自带模拟器一样。那么真机就相当于开发板。RK3588目前只支持模拟仿真,还不支持连板调试,在真机上会报错显示rknn server版本过低,等后面官方更新好就可以连板推理了。

这里我以 yolov5 为例。examples中的yolov5是一个 onnx 模型,用于目标检测,它是在模拟器上运行的。

1、进入目录cd examples/onnx/yolov52、运行程序python3 test.py

可以看到程序中执行的主要操作有:创建 RKNN 对象;模型配置;加载 onnx 模型;构建 RKNN 模型;导出 RKNN 模型;加载图片并推理,得到推理结果;释放 RKNN 对象。

examples 目录中的其他示例的执行方式与 yolov5 相同,这些模型主要用于图像分类、目标检测。

3、模型和推理结果

简单修改下test.py文件,显示并保存结果图片,不得不说,npu推理的检测框置信度高的离谱,不愧是嵌入式神经网络,比原先yolov5高很多。而且运行速度也比官网的cpu版本快很多。

转 换 后 的 模 型 默 认 保 存 路 径 为/rknn-toolkit2-1.x.x/examples/onnx/yolov5/yolov5s.rknn ,推 理 的 图 片 结 果 保 存 在/rknn-toolkit2-1.x.x/examples/onnx/yolov5/result.jpg。

参考文献:Rockchip_Quick_Start_RKNN_Toolkit2_CN-1.3.0.pdf

本文链接地址:https://www.jiuchutong.com/zhishi/281327.html 转载请保留说明!

上一篇:dotnetfx.exe是什么进程(dotnetfx35.exe)

下一篇:Linux使用xinetd服务的管理方法案例详解(如何使用linux服务器)

  • Win7电脑没有声音怎么办(win7电脑没有声音怎么办一键修复)

    Win7电脑没有声音怎么办(win7电脑没有声音怎么办一键修复)

  • 苹果11电话挂断时屏幕黑屏(苹果11电话挂断键)

    苹果11电话挂断时屏幕黑屏(苹果11电话挂断键)

  • OPPO手机屏幕关闭时间怎么调整(oppo手机屏幕关闭继续摄像)

    OPPO手机屏幕关闭时间怎么调整(oppo手机屏幕关闭继续摄像)

  • 锐龙3600配什么显卡(锐龙3600配什么显卡性价比高)

    锐龙3600配什么显卡(锐龙3600配什么显卡性价比高)

  • 芒果tv怎么登别人的vip(芒果TV怎么登别人会员)

    芒果tv怎么登别人的vip(芒果TV怎么登别人会员)

  • 60v电动车充满电需要几度电(60v电动车充满电要几度电)

    60v电动车充满电需要几度电(60v电动车充满电要几度电)

  • 秘乐短视频是哪家公司的(秘乐短视频到底怎么了)

    秘乐短视频是哪家公司的(秘乐短视频到底怎么了)

  • 无法使用你的apple id(无法使用你的pbe账号游玩)

    无法使用你的apple id(无法使用你的pbe账号游玩)

  • 主机中含有什么部件(主机中含有什么金属)

    主机中含有什么部件(主机中含有什么金属)

  • qq隐藏的群在哪里能找到(qq里隐藏的群怎么恢复)

    qq隐藏的群在哪里能找到(qq里隐藏的群怎么恢复)

  • oppoa83屏幕多大(oppoa83屏幕是什么材质)

    oppoa83屏幕多大(oppoa83屏幕是什么材质)

  • 常见的存储介质有哪些(常见的存储介质有哪些?各自具有什么特点)

    常见的存储介质有哪些(常见的存储介质有哪些?各自具有什么特点)

  • 关键帧是干什么的(关键帧干什么的)

    关键帧是干什么的(关键帧干什么的)

  • 阿里巴巴确认收货多久到账(阿里巴巴确认收货为什么还要支付密码)

    阿里巴巴确认收货多久到账(阿里巴巴确认收货为什么还要支付密码)

  • airpods pro是入耳式的吗(airpods pro入耳有声音吗)

    airpods pro是入耳式的吗(airpods pro入耳有声音吗)

  • 无锁机是什么意思(无锁机是什么意思安卓)

    无锁机是什么意思(无锁机是什么意思安卓)

  • 华为m6能插鼠标吗(华为m6能插鼠标用吗)

    华为m6能插鼠标吗(华为m6能插鼠标用吗)

  • 加密文件怎么打开(加密文件怎么打印)

    加密文件怎么打开(加密文件怎么打印)

  • 笔记本鼠标指针抖动(笔记本鼠标指针不见了怎么恢复)

    笔记本鼠标指针抖动(笔记本鼠标指针不见了怎么恢复)

  • 拼多多开场景没权重的吗(拼多多开场景没流量怎么办)

    拼多多开场景没权重的吗(拼多多开场景没流量怎么办)

  • 手机主副卡怎样用流量(手机主副卡怎样复通)

    手机主副卡怎样用流量(手机主副卡怎样复通)

  • 美团订后砍5折啥意思(美团订后砍价是什么意思)

    美团订后砍5折啥意思(美团订后砍价是什么意思)

  • 卡贴机lte怎么改成4g(卡贴机lte改4g教程)

    卡贴机lte怎么改成4g(卡贴机lte改4g教程)

  • 菲律宾可以用微信吗(菲律宾可以用微信聊天吗)

    菲律宾可以用微信吗(菲律宾可以用微信聊天吗)

  • nova是什么系列(hi nova是什么牌子手机)

    nova是什么系列(hi nova是什么牌子手机)

  • nova5pro是双卡双待吗(nova5pro是不是双卡)

    nova5pro是双卡双待吗(nova5pro是不是双卡)

  • 微信不实名有什么影响(微信不实名有什么原因)

    微信不实名有什么影响(微信不实名有什么原因)

  • 哔哩哔哩怎样下载视频

    哔哩哔哩怎样下载视频

  • 火山视频怎么录制30秒(火山视频怎么录屏)

    火山视频怎么录制30秒(火山视频怎么录屏)

  • 项目管理九大要素(项目管理九大要素有哪些)

    项目管理九大要素(项目管理九大要素有哪些)

  • re文件管理器怎么用(re文件管理器怎么修改文件)

    re文件管理器怎么用(re文件管理器怎么修改文件)

  • Linux下grep显示前后几行信息方法介绍(linux grep显示行数)

    Linux下grep显示前后几行信息方法介绍(linux grep显示行数)

  • mtask.exe - mtask是什么进程 有什么用

    mtask.exe - mtask是什么进程 有什么用

  • 个税抵扣申报晚好了需要跟公司申报吗?
  • 新公司三个月没有录入职员
  • 价外费用含税吗
  • 新公司和旧公司对比
  • 如何计算土地增值税的增值额
  • 会员退费怎么算
  • 调整未分配利润影响所得税吗
  • 垫付生育津贴的钱怎么算
  • 私企捐助民办学校怎么办
  • 出租的城镇土地由谁交城镇土地使用税
  • 出纳日常工作内容总结
  • 银行承兑汇票贴现利率一般多少
  • 购买的员工福利需要缴纳印花税
  • 税控机减免税额怎么算
  • 违约金没有发票
  • 建安业核定征收利润率
  • 月末计提税金数据从哪得来的
  • 关联交易类型有哪些
  • 零余额账户期末怎么结转?
  • 应付工会经费 实际支付
  • 事业单位材料费分析怎么写
  • 土地使用税计税依据及计算方式
  • 现金流量表的编制原则为( ),是( )的概念
  • 固定资产平均年限法公式
  • 押金算不算房租
  • 其他应收款计提坏账比例
  • 苹果紧急提醒
  • 系统浏览器
  • 资金拆借需防范哪些风险
  • 财政补助收入核算内容
  • apkpure 安全
  • phpunicode
  • 企业现金流量表怎么分析
  • 坏账的资产减值损失可以税前扣除吗
  • 应收账款周转率下降说明什么
  • 一般人财务报表季报还是月报
  • python怎么运行程序
  • db2udb
  • 房屋出租收到的发票
  • 小额贷款公司如何做账
  • sqlserver 判断函数
  • 确认营业收入的时间是什么简答题
  • 建筑劳务公司何去何从
  • 饭馆增值税
  • 如何计算保费合同未规定加成比例
  • 科技专项资金
  • 核销贷款收回账务怎么做
  • 承兑汇票贴现怎么做会计分录
  • 进项转出的原因是什么
  • 半成品会计处理流程
  • 投标保证金支付给谁
  • 结转成本按照销售收入来结转,税要怎么算
  • 公司是否可以投资股票
  • 用于研发购买的云服务器应计入研发费用直接投入里吗
  • 农民工工资专用账户管理制度的办法
  • 退回备用金在现金怎么办
  • mysql precision
  • 一个绝招 组合的成语
  • win10创建家庭
  • ubuntu操作系统入门
  • mac 休眠
  • jetcar.exe - jetcar是什么进程 有什么作用
  • 字符串反转C语言代码
  • 搭建android开发环境时为什么要先安装jdk
  • bat运行完后不退出
  • 你不一定知道的地方
  • unity 游戏开发教程
  • unity中国代理
  • linux常用shell命令
  • javascript声明变量的语句
  • jquery回车触发事件
  • 服务器限制流量
  • shell脚本监控进程
  • js实现的简洁二次函数
  • mongodb python
  • JavaScript数据类型
  • jquery怎么遍历
  • 北京税务局网上怎么登录
  • 医院的电子收据怎么查
  • 广东省国家税务总局稽查局局长
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设