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

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

目录

1 环境搭建

2 交叉编译opencv

3 模型训练

4 模型转换

4.1 pt模型转onnx模型

4.2 onnx模型转rknn模型

4.2.1 安装rknn-toolkit

4.2.2 onn转成rknn模型

5 升级npu驱动

6 C++推理源码demo

6.1 原版demo

6.2 增加opencv读取图片的代码

7 交叉编译x264 ffmepg和opencv

7.1 交叉编译x264

 7.1.1 下载源码

7.2.2 配置、编译、安装

7.2 交叉编译ffmpeg

7.2.1 下载源码

7.2.2 配置、编译、安装

 7.2.3 测试ffmpeg命令

7.3 交叉编译opencv 

7.3.1 修改cmake文件

7.3.2 配置和cmake 

7.3.3 编译、安装

8 读取视频文件以及获取摄像头视频进行推理

8.1 读取视频进行推理

8.2 获取摄像头视频进行推理

9 模型预编译

10 利用瑞芯微的SDK获取摄像头视频进行推理

参考文献:


1 环境搭建

安装adb,安装交叉编译工具链,安装rknn_toolkit等方法步骤见我的另一篇博客。

RV1109_RV1126 EVB开发板环境搭建及使用总结_rv1109开发板-CSDN博客

2 交叉编译opencv

交叉编译opencv的方法见我的另一篇博客

ubuntu交叉编译opencv-CSDN博客

3 模型训练

模型训练首先下载GitHub - ultralytics/ultralytics: Ultralytics YOLO11 🚀

然后具体的训练方法网上资源很多,我这篇博客重点介绍模型转换和部署,至于模型训练不再展开。

4 模型转换

4.1 pt模型转onnx模型

瑞芯微的C++示例代码是针对瑞芯微修改后的模型结构进行推理的,所以在转模型的时候需要用瑞芯微修改后的工程进行模型转换,下载下面的工程

https://github.com/airockchip/ultralytics_yolov8

然后需要安装必要的库,其实前面训练yolov8的时候搭建了环境,那么这里转模型就用一样的环境就行,瑞芯微的这个ultralytics_yolov8相比官方的yolov8,只是在导出模型的时候进行了一些修改,对于训练模型,他和官方的ultralytics仓库是一样的。

按照上面的步骤就可以转出onnx模型。

4.2 onnx模型转rknn模型

4.2.1 安装rknn-toolkit

·首先安装rknn-toolkit,去这个网址下载

Releases · rockchip-linux/rknn-toolkit · GitHub

然后

conda create -n rv1126_1.7.5_chw python=3.8
conda activate  rv1126_1.7.5_chw
tar xzvf rknn-toolkit-v1.7.5-packages.tar.gz
cd packages
pip install rknn_toolkit-1.7.5-cp38-cp38-linux_x86_64.whl

然后可以用下面的命令测试是否安装成功

python
from rknn.api import RKNN

4.2.2 onn转成rknn模型

下载GitHub - airockchip/rknn_model_zoo

然后

conda activate rv1126_1.7.5_chw
cd examples/yolov8/python
python convert.py ../model/dugong_20250212.onnx rv1126

报错

W rknn-toolkit version: 1.7.5
Traceback (most recent call last):File "convert.py", line 41, in <module>rknn = RKNN(verbose=False)File "/root/anaconda3/envs/rv1126_1.7.5_chw/lib/python3.8/site-packages/rknn/api/rknn.py", line 78, in __init__self.config()File "/root/anaconda3/envs/rv1126_1.7.5_chw/lib/python3.8/site-packages/rknn/api/rknn.py", line 753, in configreturn self.rknn_base.config(args)File "rknn/api/rknn_base.py", line 73, in rknn.api.rknn_base.RKNNBase.configFile "/root/anaconda3/envs/rv1126_1.7.5_chw/lib/python3.8/site-packages/rknn/base/acuitylib/__init__.py", line 1, in <module>from acuitylib.optimize.optimizer import OptimizerFile "/root/anaconda3/envs/rv1126_1.7.5_chw/lib/python3.8/site-packages/rknn/base/acuitylib/__init__.py", line 1, in <module>from acuitylib.optimize.optimizer import OptimizerFile "rknn/base/acuitylib/optimize/optimizer.py", line 128, in init rknn.base.acuitylib.optimize.optimizerFile "rknn/base/acuitylib/optimize/rules/high_performance/model_pruning.py", line 3, in init rknn.base.acuitylib.optimize.rules.high_performance.model_pruningFile "/root/anaconda3/envs/rv1126_1.7.5_chw/lib/python3.8/site-packages/torch/__init__.py", line 29, in <module>from .torch_version import __version__ as __version__File "/root/anaconda3/envs/rv1126_1.7.5_chw/lib/python3.8/site-packages/torch/torch_version.py", line 3, in <module>from pkg_resources import packaging  # type: ignore[attr-defined]
ImportError: cannot import name 'packaging' from 'pkg_resources' (/root/anaconda3/envs/rv1126_1.7.5_chw/lib/python3.8/site-packages/pkg_resources/__init__.py)

 解决方法

pip install --upgrade setuptools

5 升级npu驱动

我转模型的时候用的rknn-toolkit 1.7.5,那么板子的驱动我也升级为1.7.5吧,升级方法

https://github.com/rockchip-linux/rknpu/tree/master

adb push drivers/linux-armhf-puma/*   /
adb push drivers/npu_ko/galcore_puma.ko /lib/modules/galcore.ko

6 C++推理源码demo

6.1 原版demo

C++推理demo也在

https://github.com/airockchip/rknn_model_zoo/tree/main

然后找到rknn_model_zoo-main/examples/yolov8

具体编译方法在github上也有,这里为了方便我又写了个脚本build.sh

#!/bin/bash: <<'COMMENT'
./build-linux.sh -t <target> -a <arch> -d <build_demo_name> [-b <build_type>] [-m]-t : target (rk356x/rk3588/rk3576/rv1106/rk1808/rv1126)-a : arch (aarch64/armhf)-d : demo name-b : build_type(Debug/Release)-m : enable address sanitizer, build_type need set to Debug
Note: 'rk356x' represents rk3562/rk3566/rk3568, 'rv1106' represents rv1103/rv1106, 'rv1126' represents rv1109/rv1126# Here is an example for compiling yolov5 demo for 64-bit Linux RK3566.
./build-linux.sh -t rk356x -a aarch64 -d yolov5
...
COMMENT./build-linux.sh -t rv1126 -a armhf -d yolov8

然后直接sh build.sh就可以编译了,不用每次都去敲命令。

编译完之后用xftp把install整个文件夹传到rv1126开发板,然后执行

./rknn_yolov8_demo  ./model/yolov8.rknn  ./model/bus.jpg

由于我这个模型没有预编译&#

相关文章:

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

目录 1 环境搭建 2 交叉编译opencv 3 模型训练 4 模型转换 4.1 pt模型转onnx模型 4.2 onnx模型转rknn模型 4.2.1 安装rknn-toolkit 4.2.2 onn转成rknn模型 5 升级npu驱动 6 C++推理源码demo 6.1 原版demo 6.2 增加opencv读取图片的代码 7 交叉编译x264 ffmepg和op…...

【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑤】

ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase05 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月15日 关键词&#xff1a;UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023 TC10-005测试用例 用例ID测试场景验证要点参考条款预期…...

python-leetcode 35.二叉树的中序遍历

给定一个二叉树的根节点root,返回它的中序遍历。 方法一&#xff1a;递归 二叉树的中序遍历&#xff1a;按照访问左子树——根节点——右子树的方式遍历这棵树&#xff0c;而在访问左子树或者右子树的时候我们按照同样的方式遍历&#xff0c;直到遍历完整棵树。因此整个遍历过…...

glob 用法技巧

目录 处理大量文件节省内存 匹配多个文件扩展名 遍历多种格式文件 遍历某一个文件&#xff1a; 查找当前目录和子目录 6. 排除特定文件 7. 大小写不敏感匹配 8. 获取绝对路径 9. 处理特殊字符 处理大量文件节省内存 技巧&#xff1a;用 iglob 替代 glob&#xff0c;逐…...

CodeGPT 使用教程(适用于 VSCode)

CodeGPT 使用教程&#xff08;适用于 VSCode&#xff09; CodeGPT 是一个 VSCode 插件&#xff0c;可以让你在代码编辑器中直接调用 GPT 进行代码补全、优化、调试等操作。以下是详细的安装和使用步骤&#xff1a; 1. 安装 CodeGPT 方式 1&#xff1a;从 VSCode 插件市场安装…...

以下是MySQL中常见的增删改查语句

以下是MySQL中常见的增删改查语句&#xff1a; 增加数据&#xff08;INSERT&#xff09; 基本语法&#xff1a; INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...); 示例&#xff1a;向名为 students 的表中插入一条学生记录&#xff0c; id 为1&am…...

Vue3 与 TypeScript 实战:核心细节与最佳实践

引言 Vue3 的 Composition API 与 TypeScript 的强类型支持完美契合&#xff0c;极大提升了代码的可维护性和开发体验。本文将深入探讨 Vue3 TypeScript 的关键细节&#xff0c;并通过实际代码示例展示如何高效结合二者。 一、组合式 API 与类型推导 Vue3 的 setup 函数与 T…...

23种设计模式 - 解释器模式

模式定义 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;用于为特定语言&#xff08;如数控系统的G代码&#xff09;定义文法规则&#xff0c;并构建解释器来解析和执行该语言的语句。它通过将语法规则分解为多个类&#xff0c;实现…...

常用的 React Hooks 的介绍和示例

目录 1. useState2. useEffect3. useContext4. useReducer5. useCallback6. useMemo7. useRef8. useImperativeHandle9. useLayoutEffect10. useDebugValue 常用的 React Hooks 的介绍和示例&#xff1a; 1. useState useState 是一个用于在函数组件中添加状态的 Hook。 impo…...

ChatGLM-6B模型

ChatGLM-6B 是由 清华大学人工智能研究院&#xff08;THU AI&#xff09; 和 智源研究院&#xff08;BAAI&#xff09; 开发的一款中文对话生成大语言模型。它是ChatGLM系列的一个版本&#xff0c;其核心特点是基于GLM&#xff08;General Language Model&#xff09;架构&…...

编译安装php

前置准备 这里的可能不全&#xff0c;每个人安装的模块不一致&#xff0c;依赖也不不相同&#xff0c;按实际情况调整 yum install libxml2 -y yum install libxml2-devel -y yum install openssl-devel -y yum install sqlite-devel -y yum install libcurl-devel -yyum ins…...

【JavaEE进阶】Spring MVC(3)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 返回响应 返回静态页面 //RestController Controller RequestMapping("/response") public class ResponseController {RequestMapping("/returnHtmlPage&…...

30 款 Windows 和 Mac 下的复制粘贴软件对比

在日常电脑操作中&#xff0c;复制粘贴是极为高频的操作&#xff0c;一款好用的复制粘贴软件能极大提升工作效率。以下为你详细介绍 30 款 Windows 和 Mac 下的复制粘贴软件&#xff0c;并对比它们的优缺点&#xff0c;同时附上官网下载地址&#xff0c;方便大家获取软件。 Pa…...

【LLAMA】羊驼从LLAMA1到LLAMA3梳理

every blog every motto: Although the world is full of suffering&#xff0c; it is full also of the overcoming of it 0. 前言 LLAMA 1到3梳理 1. LLAMA 1 论文&#xff1a; LLaMA: Open and Efficient Foundation Language Models 时间&#xff1a; 2023.02 1.1 前言…...

【OS安装与使用】part3-ubuntu安装Nvidia显卡驱动+CUDA 12.4

文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 更改镜像源2.2.2 安装NVIDIA显卡驱动&#xff1a;nvidia-550&#xff08;1&#xff09;查询显卡ID&#xff08;2&#xff09;PCI ID Repository查询显卡型号&#xff08;3&#xf…...

【蓝桥杯集训·每日一题2025】 AcWing 6123. 哞叫时间 python

6123. 哞叫时间 Week 1 2月18日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛&#xff0c;但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说 『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解&#xff0c;所以农夫约翰将竞赛以…...

JAVA中常用类型

一、包装类 1.1 包装类简介 java是面向对象的语言&#xff0c;但是八大基本数据类型不符合面向对象的特征。因此为了弥补这种缺点&#xff0c;为这八中基本数据类型专门设计了八中符合面向面向对象的特征的类型&#xff0c;这八种具有面向对象特征的类型&#xff0c;就叫做包…...

【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)(基础列表采用读取WORD表格单元格数据,非采用切片组合)

背景需求&#xff1a; 做了中班的四类活动安排表&#xff0c;我顺便给大班做一套 【办公类-90-01】】20250213中班周计划四类活动的写法&#xff08;分散运动、户外游戏、个别化&#xff08;美工室图书吧探索室&#xff09;&#xff09;-CSDN博客文章浏览阅读874次&#xff0…...

求矩阵对角线元素的最大值

求主对角线元素的最大值时&#xff0c;让指针指向A[N-1][N-1]&#xff0c;指针以(N1)为单位递增&#xff0c;就可以指向对角线每个元素&#xff1b; 求次对角线元素的最大值时&#xff0c;让指针指向A[0][N-1]&#xff0c;指针以(N-1)为单位递增&#xff0c;就可以指向副对角线…...

NoSQL之redis数据库

案例知识 关系与分关系型数据库 关系型数据库&#xff1a;Oracle&#xff0c;MySQL&#xff0c;SQL Server 非关系型数据库&#xff1a;Redis&#xff0c;MongDB Redis文件路径 配置文件&#xff1a;/etc/redis/6379.conf 日志文件&#xff1a;/var/log/redis_6379.log 数据文…...

OpenWrt 纯无线隔离网络配置

OpenWrt 纯无线隔离网络配置 (Pure Wireless Isolated LAN) 本指南记录了在 OpenWrt 系统上创建一个完全独立、仅通过 Wi-Fi 访问、且与主网络 (LAN) 及外网 (WAN) 彻底物理/逻辑隔离的局域网配置全过程。 目标实现 纯无线接入&#xff1a;不占用任何物理网口&#xff08;如 la…...

腾讯混元OCR:1B小模型如何在OCR界扛起SOTA大旗

一、大模型OCR的“轻量级革命”来了 2025年11月25日&#xff0c;腾讯混元团队悄然开源了一款名为HunyuanOCR的模型。在AI大模型动辄喊出“百亿参数起步”的时代&#xff0c;这个只有10亿参数&#xff08;1B&#xff09; 的“小家伙”似乎不够起眼。然而&#xff0c;就是这样一款…...

为AI智能体构建可治理的语义执行层:安全、合规与可控实践

1. 项目概述&#xff1a;为AI智能体系统构建一个可治理的“语义执行层”如果你正在构建或使用基于大语言模型的智能体&#xff08;Agent&#xff09;系统&#xff0c;比如让AI帮你自动执行代码、调用API、处理文件&#xff0c;那么你肯定遇到过这个核心难题&#xff1a;如何确保…...

Spring Cloud Gateway与Vite开发模式的协同工作

引言 在现代Web开发中,前端和后端的解耦使得开发变得更加灵活和高效。Spring Cloud Gateway作为一个强大的API网关,可以有效地管理微服务间的请求路由。然而,当前端应用使用Vite进行开发时,可能会遇到一些路由和请求转发的问题。今天我们来探讨如何解决Spring Cloud Gatew…...

mPLUG-Owl3-2B Streamlit界面性能优化:首屏加载提速60%的4个关键配置

mPLUG-Owl3-2B Streamlit界面性能优化&#xff1a;首屏加载提速60%的4个关键配置 基于mPLUG-Owl3-2B多模态模型开发的本地图文交互工具&#xff0c;针对模型原生调用的各类报错做全维度修复&#xff0c;适配消费级GPU轻量化推理&#xff0c;采用Streamlit搭建聊天式交互界面&am…...

NE2281 1000W PFC芯片,主要应用于boost PFC变换器

1、方案名称&#xff1a;NE2281 1000W PFC芯片&#xff0c;主要应用于boost PFC变换器 2、品牌&#xff1a;星云半导体&#xff08;NEBULA&#xff09; 3、描述&#xff1a;NE2281 是一款高性能、多模式工作的 AC/DC控制器&#xff0c;具有高集成度、高效率等特性&#xff0c…...

从零构建AI Agent:新手必看!5种核心工作流+实战避坑指南

本文从AI Agent的核心运作原理出发&#xff0c;详细解析了LLM、工具和记忆的角色&#xff0c;并区分了工作流与Agent的适用场景。文章重点介绍了五种核心工作流模式&#xff08;提示词链、路由、并行化、编排者-工作者、评估者-优化者&#xff09;&#xff0c;为新手提供了构建…...

DeepSeek-V4横空出世!AI巨头争相接入,国产大模型引领算力浪潮!

百度正式发布DeepSeek-V4大模型并开源&#xff0c;分为Pro和Flash两个版本。寒武纪、AccioWork、摩尔线程等巨头纷纷完成适配&#xff0c;展现国产大模型强大能力。DeepSeek-V4在上下文处理、推理性能等方面领先&#xff0c;预计将推动国产算力发展&#xff0c;券商看好国产算力…...

Arm CoreSight调试技术与CSAT600工具实战指南

1. CoreSight调试体系与CSAT600工具定位在Arm架构的调试生态中&#xff0c;CoreSight技术栈扮演着关键角色。作为SoC级别的调试解决方案&#xff0c;它通过标准化的硬件组件和访问协议&#xff0c;为开发者提供了从CPU内核到系统总线的全视角调试能力。CSAT600&#xff08;Core…...

【转载】pandas 的速查表

作者&#xff1a;不了哭 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 Pandas 是一个强大的分析结构化数据的工具集&#xff0c;它的使用基础是 Numpy&#xff08;提供高性能的矩阵运算&#xff09;&#xff0c;用…...