RK1126 NPU yolov5 6.2

news2024/10/5 17:18:26

在这里插入图片描述

基于 rk npu , 实现 yolov5 6.2 模型推理

实现过程 ⚡️​

编译 opencv

  1. 需根据自己路径修改.
	cmake -D CMAKE_BUILD_TYPE=RELEASE \
	      -D CMAKE_C_COMPILER=./gcc-arm-8.3-2019.02-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \
	      -D CMAKE_CXX_COMPILER=./gcc-arm-8.3-2019.02-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ \
	      -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.2_gnueabihf \
	      -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \
	      -D OPENCV_FORCE_3RDPARTY_BUILD=ON \
	      -D BUILD_ZLIB=ON \
	      -D INSTALL_C_EXAMPLES=OFF \
	      -D INSTALL_PYTHON_EXAMPLES=OFF \
	      -D WITH_TBB=OFF \
	      -D WITH_V4L=ON \
	      -D WITH_CUBLAS=1 \
	      -D OPENCV_SKIP_PYTHON_LOADER=ON \
	      -D OPENCV_GENERATE_PKGCONFIG=ON \
	      -D WITH_QT=OFF \
	      -D WITH_OPENGL=ON \
	      -D WITH_FFMPEG=ON \
	      -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.2.0/modules \
	      -D ENABLE_CXX11=ON \
	      -D BUILD_EXAMPLES=OFF .. \
	      -D BUILD_opencv_world=ON ..
	  make -j4
	  sudo make install

Q&A ❓​

  1. zlib.h:没有那个文件或目录 #include <zlib.h>
    -D OPENCV_FORCE_3RDPARTY_BUILD=ON \
    -D BUILD_ZLIB=ON \
    
  2. opencv G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64))
    -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake
    

Demo 👀

  1. 参考: https://github.com/shaoshengsong/rockchip_rknn_yolov5
  2. 这里修改了下前处理,使用 letterbox
    cv::Mat letterbox(const cv::Mat &img, cv::Size new_shape, cv::Scalar color, bool _auto, bool scaleFill, bool scaleup, int stride)
    {
        float width = img.cols;
        float height = img.rows;
        float r = cv::min(new_shape.width / width, new_shape.height / height);
        if (!scaleup)
            r = cv::min(r, 1.0f);
        int new_unpadW = int(round(width * r));
        int new_unpadH = int(round(height * r));
        int dw = new_shape.width - new_unpadW;
        int dh = new_shape.height - new_unpadH;
        if (_auto)
        {
            dw %= stride;
            dh %= stride;
        }
        dw /= 2, dh /= 2;
        cv::Mat dst;
        resize(img, dst, cv::Size(new_unpadW, new_unpadH), 0, 0, cv::INTER_LINEAR);
        int top = int(round(dh - 0.1));
        int bottom = int(round(dh + 0.1));
        int left = int(round(dw - 0.1));
        int right = int(round(dw + 0.1));
        copyMakeBorder(dst, dst, top, bottom, left, right, cv::BORDER_CONSTANT, color);
    
        pad_left_ = left;
        pad_top_ = top;
        scale_ = r;
        return dst;
    }
    
  3. inference
    int inference(const cv::Mat &orig_img, rt_detect_result_group_t &detect_result_group){
    	...
    	cv::Mat img = letterbox(orig_img, cv::Size(width_, height_), cv::Scalar(114, 114, 114), false, false, false, 32);
    	cv::Mat resimg;
    	// cv::resize(orig_img, resimg, cv::Size(width_, height_), (0, 0), (0, 0), cv::INTER_LINEAR);
    	cv::cvtColor(img, resimg, cv::COLOR_BGR2RGB);
     ...
    }
    
  4. 执行 ./build.sh
  5. 我用的 adb ,将程序拷贝到 rk1126 板子上.
    adb.exe push xxx  xxxx
    

在这里插入图片描述


参考文章 📖​

  1. https://github.com/shaoshengsong/rockchip_rknn_yolov5
  2. https://github.com/rockchip-linux/rknpu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware虚拟机Ubuntu磁盘空间扩充详细教程

文章目录 一、写在前面二、具体步骤三、最后总结 一、写在前面 最近在做Linux内核相关实验的时候&#xff0c;发现有时候我们编译出来的内核太大&#xff0c;如果VMware虚拟机空间分配不足会导致编译Linux内核失败&#xff0c;经过摸索&#xff0c;发现可以扩充Ubuntu的磁盘空间…

【Rust日报】2023-06-05 Effective Rust: 35种提升 Rust 代码的方法

Effective Rust: 35种提升Rust代码的方法 这是一本关于 Rust 的最佳实践指南的电子书&#xff0c;其中包含了很多 Rust 编程的技巧和建议。 这篇指南分为多个章节&#xff0c;涵盖了 Rust 编程的各个方面, 他分别从 类型, 概念, 依赖, 工具 等几大类上阐述了 35 种提高 Rust 代…

记录--你真的能区分JavaScript的各种导入导出方式吗?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 前言 &#x1f6f0;&#x1f6f0; 我们在无论是在查阅别人的代码&#xff0c;还是在实际项目开发的过程中&#xff0c;肯定都会使用导入导出的功能&#xff0c;有时候我们会搞混这几种方式到底有什么区…

有哪些比较好的游戏图标推荐

游戏图标设计在游戏UI中占有非常重要的地位。例如&#xff0c;当我们看到一个游戏的启动图标时&#xff0c;很容易区分它是哪个游戏。设计游戏图标不仅是一个图形&#xff0c;也是一个标志。 本文将通过各种游戏图标设计素材分享游戏图标的类别和设计游戏图标的思考。 1. 游戏…

基于SSM+JSP的大学生校园兼职系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

wsl连接usb设备,以及挂载u盘

目录 wsl连接usb设备 安装usbinpd-win 配置 在kali中做写的配置 在wsl中的配置 在kali中查看附加结果 报错 挂载u盘&#xff0c;查看u盘的内容 wsl连接usb设备 安装usbinpd-win winget install --interactive --exact dorssel.usbipd-win 配置 在kali中做写的配置 s…

Java 21 将不再有public static void main !

之前的Java是这样&#xff1a; Java 21会是这样&#xff1a; 看到这个消息&#xff0c;我最大的感受是&#xff1a; 卧槽&#xff0c;怎么就Java 21了&#xff1f;&#xff01;我还在用Java 8 呢&#xff01; 实际上&#xff0c;从Java 8 到Java 21&#xff0c;中间也就是Java…

“Pull”和“Push”支付的区别

下图展示了“Pull”和“Push”支付的工作原理。 当我们在商家处刷信用卡/借记卡时&#xff0c;这是一种“Pull”支付&#xff0c;资金从持卡人的账户发送到商家。商家从持卡人的账户中取款&#xff0c;而持卡人批准交易。 通过Visa Direct或Mastercard Send&#xff0c;推送支付…

WebRTC实战 | 视频云

前言 WebRTC是当前实时通信领域的重要技术之一&#xff0c;具有广泛的应用前景。可以实现音频、视频和数据的实时传输。支持点对点通信、多方会议、屏幕共享等多种应用场景&#xff0c;同时具有高质量、低延迟、强安全性等特点&#xff0c;是开发实时通信应用的理想选择。可以应…

从“嘿,Siri”到元宇宙,苹果还有多远距离要走?

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在当前的科技浪潮中&#xff0c;元宇宙的概念凭借其无限的想象力和可能性&#xff0c;像一颗耀眼的新星吸引着世界的目光。巨大的发展潜力&#xff0c;吸引着一波又一波的企业&#xff0c;前赴后继地向元宇宙发起冲锋。 在这…

27.打包项目

目录 1 打包成dist 2 flask配合dist 3 以文件形式打开 1 打包成dist 项目路径下输入 npm run build 在项目路径下会出现一个dist 打包后直接双击打开index.html是没有用的 因为你双击打开是file协议&#xff0c;你需要一个http协议 2 flask配合dist 我们可以搞一个fla…

「企业信息架构」EA874:信息架构治理概述

信息治理是一个程序&#xff0c;它实现决策权和支持机制&#xff0c;以确保整个企业信息的准确性、完整性、一致性、可访问性和安全性。为了维持信息治理&#xff0c;需要在业务&#xff08;而不是IT&#xff09;中确定和建立几个角色。这三个角色可能单独存在&#xff0c;也可…

分布式光伏消纳的微电网群共享储能配置策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【AUTOSAR】Bootloader说明(四)---- 升级主函数

刷新主函数uds_refresh_main() 当执行完初始化后&#xff0c;DSP进入刷新主函数。 主函数是一个无穷循环函数&#xff0c;完成诊断消息的接收、处理&#xff0c;诊断状态的刷新等。 函数原型 void bblk_normal_isr(void) 函数作用 完成看门狗服务&#xff0c;清楚定时器中…

如何在ImageSpan上面绘制文本?

简介&#xff1a;TextOnImageSpan 前阵子碰到一个需求&#xff1a;在文本中内嵌图标&#xff0c;并在图标上面绘制特定文本。很自然就会想到用SpannableString去实现&#xff0c;但经过一系列的研究捣鼓&#xff0c;发现根本就没有能在图标上绘制文本的span类&#xff0c;于是乎…

单马达可换档六足机器人前进功能的实现

1. 运动功能说明 本文示例将实现R046样机单马达可换档六足机器人前进的功能。 2. 结构说明 本样机只有一个圆周舵机&#xff0c;却可以通过换挡机构实现前进和转向两种行走姿态。 样机由一个圆周舵机带动一个等速齿轮组&#xff08;下图所示两枚蓝色齿轮&#xff09;&#xff0…

C#,码海拾贝(26)——求解“一般带状线性方程组”之C#源代码

在大型稀疏方程组中&#xff0c;最常见的是带状方程组&#xff0c;其系数矩阵是带状矩阵&#xff0c;非零元素仅集中在对角线附近的带状区域内。 特别的&#xff0c;当上下带宽相等时我们A称方程组为等带宽方程组。总带宽为3的等带宽方程组我们又叫三对角方程组。 using Syste…

如何在 Elasticsearch 论坛/社群上提出高质量的技术问题?

在网络的海洋中寻求帮助&#xff0c;有时可能会让你感到茫然。你可能已经准备好详细描述你的问题&#xff0c;但如果你不知道如何有效地提问&#xff0c;你可能会发现自己在等待回答时感到挫败。 这篇文章的目标是为你提供一些提示&#xff0c;让你更快地获取你在论坛上的技术问…

数据库管理-第八十二期 EMCC升级教程(20230606)

数据库管理 2023-06-06 第八十二期 EMCC升级教程1 升级EMCC1.1 升级概览1.2 拷贝相关文件1.3 升级OPatch1.4 升级OMSPatcher1.5 升级WLS1.6 升级OMS 2 升级Agent2.1 升级概览2.2 拷贝相关文件2.3 安装或升级AgentPatcher2.4 升级agent 3 升级Oracle数据库ASH包总结 第八十二期 …

2. 分布式文件系统 HDFS

2. 分布式文件系统 HDFS 1. 引入HDFS【面试点】 问题一&#xff1a;如果一个文件中有 10 个数值&#xff0c;一行一个&#xff0c;并且都可以用 int 来度量。现在求 10 个数值的和 思路&#xff1a; 逐行读取文件的内容把读取到的内容转换成 int 类型把转换后的数据进行相加…