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

手把手教你用RK3588的NPU跑通第一个YOLOv5模型(附环境配置避坑点)

从零部署YOLOv5到RK3588 NPU完整环境配置与模型转换实战拿到RK3588开发板的第一时间许多开发者最迫不及待想验证的就是其NPU的AI推理性能。作为瑞芯微第四代RKNPU架构的旗舰芯片RK3588的6TOPS算力在边缘计算领域确实令人期待。但在实际部署过程中从Python环境配置、模型转换到最终推理几乎每个环节都可能遇到意想不到的坑。本文将基于Ubuntu 20.04系统带你完整走通YOLOv5s模型从ONNX到RKNN的转换并在开发板上实现高效推理的全流程。1. 开发环境搭建与避坑指南RKNN-Toolkit2是瑞芯微官方提供的模型转换工具链支持将主流框架训练的模型转换为RK3588 NPU可执行的格式。但安装过程对系统环境和依赖版本有严格要求这也是最容易卡住新手的地方。1.1 系统基础环境准备首先确保你的Ubuntu系统已安装以下基础组件sudo apt update sudo apt install -y python3-opencv python3-dev python3-pip \ python3-setuptools git cmake g wget unzip特别注意Python版本官方推荐3.6-3.8实测3.9可能导致后续步骤失败OpenCV必须通过apt安装系统版本pip安装的版本可能缺少关键功能1.2 创建专用Python虚拟环境为避免与系统Python环境冲突建议使用conda创建独立环境conda create -n rknn python3.8 -y conda activate rknn安装关键依赖时需特别注意版本兼容性包名称推荐版本不兼容版本numpy1.19.5≥1.20.0onnx1.10.0≥1.11.0tensorflow2.5.0≥2.6.0torch1.8.0≥1.9.0提示如果已经安装了不兼容版本可使用pip install packageversion --force-reinstall降级1.3 RKNN-Toolkit2的定制化安装从官网下载对应版本的RKNN-Toolkit2 wheel包后执行pip install rknn_toolkit2-1.4.0-cp38-cp38-linux_x86_64.whl常见安装问题解决方案报错libGL.so.1 not foundsudo apt install libgl1-mesa-glx报错libgomp.so.1 not foundsudo apt install libgomp1报错librga.so not found需从SDK中复制到/usr/lib/目录验证安装是否成功from rknn.api import RKNN print(RKNN.__version__) # 应输出1.4.02. YOLOv5模型转换全流程解析2.1 准备原始模型文件从YOLOv5官方仓库获取模型git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt导出ONNX模型时需特别注意python export.py --weights yolov5s.pt --include onnx --imgsz 640 640关键参数说明--imgsz必须设置为640x640RKNN目前仅支持固定尺寸输入导出时添加--dynamic会导致转换失败确保onnxsim已安装用于优化模型结构2.2 ONNX到RKNN的转换技巧创建转换脚本convert.pyfrom rknn.api import RKNN rknn RKNN() rknn.config(target_platformrk3588, mean_values[[0, 0, 0]], std_values[[255, 255, 255]]) ret rknn.load_onnx(modelyolov5s.onnx) ret rknn.build(do_quantizationTrue, dataset./dataset.txt) ret rknn.export_rknn(./yolov5s.rknn)关键配置项解析quantization启用量化可显著提升NPU利用率但需要约100张校准图片dataset.txt格式每行包含图片路径和尺寸如./test.jpg 640 640mean/std值必须与训练时预处理参数一致常见错误处理遇到Unsupported ONNX op type: NonMaxSuppression时需在导出ONNX时添加--grid参数2.3 模型优化进阶参数在config中添加NPU专用优化选项rknn.config( ... optimization_level3, # 最高优化级别 npu_platformRK3588, quantized_dtypeasymmetric_quantized-8, quantized_algorithmnormal )不同优化级别对比级别优化内容转换耗时模型大小推理速度0无优化最短最大最慢1基础算子融合中等减小10%提升15%2中级图优化较长减小25%提升30%3高级量化硬件指令级优化最长减小40%提升50%3. RK3588开发板部署实战3.1 交叉编译环境配置在x86主机上安装工具链sudo apt install gcc-aarch64-linux-gnu g-aarch64-linux-gnu编译OpenCV的C推理示例aarch64-linux-gnu-g demo.cpp -o demo \ -I/path/to/opencv/include \ -L/path/to/opencv/lib \ -lopencv_core -lopencv_imgproc -lopencv_highgui3.2 板端运行环境准备将以下文件拷贝到开发板转换好的yolov5s.rknn模型RKNN API的动态库librknnrt.so测试图片或视频流设置环境变量export LD_LIBRARY_PATH./lib:$LD_LIBRARY_PATH3.3 Python推理代码解析完整推理示例核心代码import cv2 from rknnlite.api import RKNNLite rknn RKNNLite() ret rknn.load_rknn(yolov5s.rknn) ret rknn.init_runtime(core_maskRKNNLite.NPU_CORE_0_1_2) img cv2.imread(test.jpg) img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img cv2.resize(img, (640, 640)) outputs rknn.inference(inputs[img]) boxes, scores, classes post_process(outputs) # 后处理性能优化技巧使用core_mask参数启用多核NPU预处理使用OpenCV的GPU加速需编译带GPL支持的版本开启RKNN的异步推理模式处理视频流4. 性能调优与异常排查4.1 典型性能指标对比测试环境RK3588 2.4GHz, Ubuntu 20.04模型推理分辨率CPU耗时(ms)NPU耗时(ms)加速比YOLOv5s640x640120158xYOLOv5m640x640240288.6xYOLOv5l640x640410527.9x4.2 常见问题解决方案问题1推理结果异常如检测框错位检查模型输入尺寸是否与训练时一致验证预处理归一化参数是否匹配尝试关闭量化重新转换模型问题2NPU利用率低使用npu-top工具观察各核心负载检查是否启用了多核core_mask调整batch size通常4-8最佳问题3内存不足错误减小推理时的batch size关闭其他占用NPU的进程检查RKNN模型是否启用了内存优化选项4.3 高级调试技巧启用RKNN的详细日志rknn RKNN(verboseTrue)获取NPU硬件信息cat /sys/kernel/debug/rknpu/load实时监控NPU频率和温度watch -n 1 cat /sys/class/thermal/thermal_zone*/temp

相关文章:

手把手教你用RK3588的NPU跑通第一个YOLOv5模型(附环境配置避坑点)

从零部署YOLOv5到RK3588 NPU:完整环境配置与模型转换实战 拿到RK3588开发板的第一时间,许多开发者最迫不及待想验证的就是其NPU的AI推理性能。作为瑞芯微第四代RKNPU架构的旗舰芯片,RK3588的6TOPS算力在边缘计算领域确实令人期待。但在实际部…...

如何将iCloud/iTunes备份恢复到新的iPhone?

刚买了一部新 iPhone,不知道如何恢复所有旧数据?无论您的备份存储在 iTunes 还是 iCloud,都有多种方法可以将备份恢复到新 iPhone。本指南将逐步指导您完成所有可靠的方法,以便您快速将旧设备上的所有内容传输到新设备并从上次中断…...

Visio是什么?附安装使用全流程

Visio是什么? 它是微软出品的专业图表绘制工具,是Office家族里最低调、但也是职场进阶最硬核的成员之一。如果说Excel是处理数字的神,那Visio就是处理逻辑和流程的王者。 安装教程和安装包获取 为什么建议你试试Visio? 1. 拖拽…...

基于QT(C++)+Oracle实现的(界面)教务管理系统

一、选题背景 教务管理系统是基本每个高校都有的一个系统,教务系统管理系统充分利用互联网络B/S管理系统模式,以网络为平台,为各个学校教务系统的管理提供一个平台,帮助学校管理教务,用一个账号解决学校教务教学管理&…...

Qwen3.5-2B模型在Web开发中的创新应用:智能内容生成与审核

Qwen3.5-2B模型在Web开发中的创新应用:智能内容生成与审核 1. 引言:当Web开发遇上AI内容生成 想象一下这样的场景:用户上传了几张旅行照片,系统自动生成了一篇图文并茂的游记草稿;或者社区平台能够实时审核用户上传的…...

新手福音!5分钟手把手教你用JSON→C# Entities解决实体类生成难题

大家好,我是CSDN的老用户daier。最近不少读者在后台问我:“后端接口返回一堆JSON数据,要在C#项目里写对应的Model类,太麻烦了!嵌套对象、数组、下划线转PascalCase、nullable类型怎么办?” 今天我手把手带…...

基于QT(C++)实现(界面)实现的五子棋游戏

Qt小游戏开发:五子棋(带AI功能) 写了一个带AI的五子棋小游戏,AI的表现还可以~ 1.预览 2.步骤 整体的代码结构,一个游戏逻辑类,一个UI类 2.1定义游戏数据结构 // 游戏类型,双人还是AI&#x…...

网络资源捕获神器:res-downloader全方位应用指南

网络资源捕获神器:res-downloader全方位应用指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在数字内容日益丰…...

Java final关键字详解:用法、场景、面试题全解析

哈喽,各位Java学习者!今天咱们拆解一个Java中高频且核心的关键字——final。它看似简单,仅表示“最终的、不可修改的”,但在实际开发和面试中都高频出现,稍不注意就会踩坑。本文全程围绕final的核心用法展开&#xff0…...

告别对账熬夜,Captain AI帮你揪出Ozon的异常扣费

做Ozon的卖家,几乎都有过这样的经历:月底打开平台账单,密密麻麻全是俄语专业术语,看半天也看不懂每一笔钱扣在了哪里;熬一整个通宵核对账单,却还是算不清每一笔收支,找不到平台多扣的钱&#xf…...

AI图片清晰修复:给模糊的照片配一副“眼镜”

谁手里没存过几张模糊到让人无奈的照片?家里的老照片泛黄发糊,岁月的痕迹让亲人的眉眼变得模糊不清;随手拍下的风景、人像,稍微放大一点就满屏噪点,细节全被糊成一团;工作中存的资料图、会议截图&#xff0…...

数学周刊第14期(2026年03月30日-04月06日)中国数学家王虹再获殊荣

目录王虹获纽约大学最高荣誉,距菲尔兹奖仅一步之遥香港科大团队首创代码驱动系统参考资料王虹获纽约大学最高荣誉,距菲尔兹奖仅一步之遥 当地时间4月2日,美国纽约大学柯朗数学科学研究所宣布,中国数学家王虹获评该校“银教授”&am…...

避坑指南:Ubuntu20.04下用Python3.8搞定Carla 0.9.13预编译版与ROS Bridge(解决卡死问题)

Ubuntu 20.04下Python 3.8与Carla 0.9.13的完美联姻:ROS Bridge避坑全指南 当自动驾驶仿真遇上机器人操作系统,Carla与ROS的集成堪称绝配。但这对黄金搭档的联姻之路却布满荆棘——Python版本冲突、依赖库不兼容、环境变量混乱,每一个坑都可能…...

【单片机】51单片机的晶振选择

51单片机的晶振可以是12MHz,但更多的使用11.0592MHz。因为51单片机的串口的波特率在可调模式下,通过定时器溢出来确定时间。 定时器计数采用机器周期,51单片机指令集属于CISC,可能与此有关,导致12个晶振时钟周期等于1个…...

CVPR/ICCV跟踪新趋势解读:对比学习如何让MOT模型学会“认人”?

对比学习如何重塑多目标跟踪:从特征判别到轨迹记忆的技术革命 在拥挤的街头,人类能轻易识别并持续关注某个特定行人——这种看似简单的生物视觉能力,却让计算机视觉系统奋斗了数十年。多目标跟踪(MOT)技术正经历着从&q…...

鼎捷T100程序开发实战:从核心类型到高效开发全解析

1. 鼎捷T100程序开发入门指南 第一次接触鼎捷T100系统开发时,我被它复杂的架构搞得晕头转向。记得当时接到一个采购单维护的需求,连最基本的程序类型都分不清楚,结果在开发过程中反复修改了好几次。经过这些年的实战,我总结出一套…...

我用Hermes Agent的经历——对比OpenClaw

前言 昨天在中山出差,等客户的间隙掏出手机,在微信里存了点东西给Hermes Agent。 没有打开电脑,没有配置环境,就是随手往对话框里扔了几个问题。 然后Hermes Agent直接帮我把文档写好了。OpenClaw的体验 坦白说,OpenCl…...

SparkSQL临时表实战:4种高效创建方式与应用场景解析

1. SparkSQL临时表基础与应用场景 临时表是SparkSQL中处理数据的重要工具,它允许我们在数据处理过程中暂存中间结果,避免重复计算。我在实际项目中经常遇到需要多次引用同一数据集的情况,这时候临时表就能大显身手。比如做数据清洗时&#xf…...

【问题修复】ubuntu24.04打不开windows的D盘

目录1 问题描述2 解决方法2.1 重新挂载1 问题描述 在ubuntu24.04上,打不开windows系统中D盘。 2 解决方法 2.1 重新挂载 sudo ntfsfix /dev/nvme0n1p5 sudo mount /dev/nvme0n1p5 /mnt #挂载到/mnt上...

改进无人机三维路径规划(蜣螂优化算法)Matlab程序

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...

AI科学家入狱:粒子对撞实验毁灭虚拟宇宙

在科技与伦理的边界日益模糊的今天,一则消息震惊了全球:一位顶尖AI科学家因其所主导的粒子对撞实验,意外“毁灭”了一个高度复杂的虚拟宇宙,随后被判处长期监禁。这起案件不仅触及了法律与道德的深层争议,更从软件测试…...

AI情感操控案:多模态交互诱发群体性癔症

从代码逻辑到情感逻辑的测试盲区在软件测试领域,我们习惯于与确定的输入、输出和状态机打交道。我们构建严密的测试用例,验证功能边界,追求接近100%的代码覆盖率。然而,当被测对象从传统的软件系统,转变为能够理解、响…...

基于多时间尺度的灵活性资源优化配置 关键词:多时间尺度;模型预测控制;日内滚动优化; 1. 程序

基于多时间尺度的灵活性资源优化配置 关键词:多时间尺度;模型预测控制;日内滚动优化; 1. 程序:matlab-yalmip-cplex 2.设备:以包含风力场、光伏电站、微型燃气轮机、蓄电池、余热锅炉、热泵、储热罐和电/热负荷的多能源…...

2025届毕业生推荐的降重复率平台实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 针对维普检测系统具备能识别 AI 生成内容的特性情形之下,若要降低文本里的 AI 痕…...

2025届必备的五大降AI率方案推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在内容创作这个范畴里,要提升文本的真实感以及原创性,关键在于降低人…...

为什么93%的团队在Python 3.14 JIT上线后性能反降?深度解析JIT热路径识别失效与类型推测崩塌链

第一章:Python 3.14 JIT编译器性能反降现象的全局观测与归因定位近期多个基准测试套件在 Python 3.14 alpha 版本中观测到显著的性能退化,尤其在 CPU 密集型循环与协程调度场景下,pystone、pyperf benchmarks 的吞吐量平均下降 12.7%&#xf…...

1984-2024年中国10米分辨率城市土地利用栅格数据(商业、公服、居住等9类)

城市土地利用是刻画城市扩张与功能空间演化的重要基础信息。长时序、高分辨率且具有跨期可比性的城市土地利用数据,已成为城市扩张诊断、空间结构演化研究、国土空间规划评估与生态环境效应分析的重要支撑。而现有城市土地利用数据往往存在时间跨度不足、历史时期分…...

NAS部署New-API本地Ollama秒变公网OpenAI接口

用N1飞牛NAS部署New-API:本地Ollama秒变公网OpenAI接口 核心目标:将本地Ollama模型和各类云端API整合为一个统一的、支持公网访问的OpenAI格式接口。 一、核心解决痛点与方案 1.1 常见痛点 手里既有本地Ollama模型,又有零散的云端API&#xf…...

新手福音:通过快马平台调用codex,用自然语言学写计算器代码

作为一个刚接触编程的新手,我最近发现了一个特别友好的学习方式——通过自然语言描述让AI帮我生成代码。这次我想做一个简单的网页计算器,在InsCode(快马)平台上体验了一把用codex模型生成代码的过程,收获很大。下面分享我的学习笔记&#xf…...

作业61 10 11 12

# 输入三角形三边a float(input("请输入三角形的边A:"))b float(input("请输入三角形的边B:"))c float(input("请输入三角形的边C:"))# 判断是否能构成三角形(边长>0 且 任意两边之和大于第三…...