YOLOv5 V7.0 - rknn模型的验证 输出精度(P)、召回率(R)、mAP50、mAP50-95

1.简介

RKNN官方没有提供YOLOv5模型的验证工具,而YOLOv5自带的验证工具只能验证pytorch、ONNX等常见格式的模型性能,无法运行rknn格式。考虑到YOLOv5模型转换为rknn会有一定的精度损失,但是需要具体数值才能进行评估,所以需要一个可以运行rknn格式的YOLOv5验证工具。

参考目标检测 YOLOv5 - Rockchip rknn模型的测试 包括精度,召回率,mAP等详细信息,这篇文章中的验证工具是基于YOLOv5和RKNN开发环境的旧版本来开发的(YOLOv5 V6.2和rknn-toolkit v1.7.1),无法运行基于YOLOv5 v7.0和rknn-toolkit2 v1.6.0开发的RKNN模型,所以参考这个验证工具里面的RKNN模型的使用方式,和RKNN官方的Python Demo,实现了YOLOv5 V7.0版本的rknn验证工具。

GitHub源码地址:https://github.com/shiyinghan/yolov5_7.0_val_rknn

2.使用方法

2.1 配置RKNN开发环境

参考RKNN-Toolkit2 里面v1.6.0的Quick Start 文档 的第三章“准备开发环境”,安装 RKNN-Toolkit2环境和板端 RKNPU2环境(不确定rknn-toolkit2的其他版本的环境好不好使,工具参考的是rknn-toolkit2的v1.6.0的Python Demo)。
Quick Start 文档 :01_Rockchip_RKNPU_Quick_Start_RKNN_SDK_V1.6.0_CN.pdf

2.2 配置YOLOv5 V7.0的运行环境

下载YOLOv5的v7.0版本并解压,然后下载yolov5_7.0_val_rknn解压并覆盖YOLOv5原版V7.0的文件夹。最后安装YOLOv5 V7.0需要的python依赖库,这里需要注意上一步配置RKNN开发环境的时候,可能安装一下老版本的python依赖库,直接使用YOLOv5 V7.0的requirements.txt安装依赖库可能出现错误,需要手动指定依赖库的版本。

2.3 设置data文件夹下面的yaml配置文件

为了区分原版的val.py,本验证工具使用的时候,需要指定task为test,所以配置文件也需要指定test目录的路径,如下:
在这里插入图片描述

2.4 连接开发板(必须)

本验证工具不支持模拟器运行,需要连接实机进行测试,否则会提示以下错误:
在这里插入图片描述
命令行里面target参数也需要配置为对应的参数,这里使用的是RK3568开发板,所以target设置为’RK3568’。

2.5 运行验证工具

命令行如下:

python val_rknn.py --data coco128_rknn.yaml --batch-size 1 --task 'test'  --weights ./yolov5s-int8.rknn --target 'RK3568'  --anchors ./anchors_yolov5.txt

3.运行效果

yolov5s量化版本rknn模型:
在这里插入图片描述
在这里插入图片描述
yolov5s非量化版本rknn模型:
在这里插入图片描述
在这里插入图片描述
yolov5s原版pt模型:
在这里插入图片描述
在这里插入图片描述

4.结论

类型精度召回率mAP50mAP50-95
pt模型0.7190.6250.7140.475
RKNN量化版0.6880.6550.6990.455
RKNN非量化版0.690.6310.6950.45

可以看出,对比pt原版模型,转换好的rknn的量化和非量化版本的模型精度和mAP都有一些下降。使用rknn模型的项目中,pt原版模型的性能参数只能作为一个参考,需要实际算出rknn模型的性能参数才行。

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

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

相关文章

通过三角形相似原理实现单目测距

根据三角形相似原理计算相机焦距,公式为:F (P * D) / W 其中: F: 待求的相机的焦距 P: 图像中目标的宽度,单位像素 D: 真实目标与相机的距离,单位厘米 W: 真实目标的宽度,单位厘米 计算焦距前,…

太原理工大学Python数据分析原理与应用(课外考题:8~11章)

这部分大概只考10分,且大部分出在选择题,填空最多一两个 (仅供参考) 第十章 (理解概念为主,无需看推导过程) 第十一章

QGraphicsView实现简易地图10『自适应窗口大小』

前文链接:QGraphicsView实现简易地图9『层级缩放显示底图』 自适应窗口大小 当地图窗口放大或缩小的时候,需要地图能够动态覆盖整个视口。 1、动态演示效果 2、核心代码 注:WHMapView继承自MapViewvoid WHMapView::resize() {if (m_curLev…

等保测评—Linux核查指令3

二、centos7以下版本 1.开放80,22,8080 端口 /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 2.保存 /etc/rc.d/init.d/iptab…

毕业就业信息|基于Springboot+vue的毕业就业信息管理系统的设计与实现(源码+数据库+文档)

毕业就业信息管理系统 目录 基于Springboot+vue的毕业就业信息管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1学生信息管理 2 公司信息管理 3公告类型管理 4公告信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设…

C语言----汉诺塔问题

1.什么是汉诺塔问题 简单来说,就是有三个柱子,分别为A柱,B柱,C柱。其中A柱从上往下存放着从小到大的圆盘,我们需要借助B柱和C柱,将A柱上的所有圆盘转移到C柱上,并且一次只能移动一个圆盘&#…

基于Springboot+Vue的Java项目-鲜牛奶订购系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

UE5自动生成地形二:自动生成插件

UE5自动生成地形二:自动生成插件 Polycam使用步骤 本篇主要讲解UE5的一些自动生成地形的插件 Polycam 此插件是通过现实的多角度照片自动建模生成地形数据,也是免费的。这里感谢B站up主古道兮峰的分享 Polycam网站 插件下载地址 插件网盘下载 提取码&a…

机器学习第二天(监督学习,无监督学习,强化学习,混合学习)

1.是什么 基于数据寻找规律从而建立关系,进行升级,如果是以前的固定算式那就是符号学习了 2.基本框架 3.监督学习和无监督式学习: 监督学习:根据正确结果进行数据的训练; 在监督式学习中,训练数据包括输…

Adobe系列软件安装

双击解压 先运行Creative_Cloud_Set_Up.exe。 完毕后,运行AdobeGenP.exe 先Path,选路径,如 C:\Program Files\Adobe 后Search 最后Patch。 关闭软件,修图!

参数配置不生效导致海思1151芯片TPC功率超大,引起性能恶化。

• 【Wi-Fi领域】【现网案例4】参数配置不生效导致海思1151芯片TPC功率超大,引起性能恶化。 【问题描述】XXX客户反馈OLT-HG8245W5-6T–Wi-Fi–WA8021V5-LAN-PC组网概率出现近距离测速只有20Mbps 【问题单】DTS2022101410914 【问题分析】 在客户反馈此问题后&#…

矩阵的压缩存储介绍

引入 概述 特殊矩阵的压缩 对称矩阵 三角矩阵 对角矩阵 稀疏矩阵 三元组存储 十字链表法 示例

在Vue中,可以通过使用<slot>元素和name属性来创建具名插槽。这样您就可以为一个组件的不同部分定义不同的内容。 以下是一个简单的示例:

在Vue中&#xff0c;可以通过使用元素和name属性来创建具名插槽。这样您就可以为一个组件的不同部分定义不同的内容。 以下是一个简单的示例&#xff1a; <template><div><header><slot name"header"></slot></header><mai…

KDTree空间搜索算法学习

目录 KDTree&#xff08;K-Dimensional Tree&#xff09;原理步骤空间索引建立例子[^1]回溯搜索例子[^2] 相关包案例[^3]数据KDTree 识别轨道衔接出行轨道衔接单车骑行范围分析结果保存 KDTree&#xff08;K-Dimensional Tree&#xff09;原理 将需要匹配的 K 维空间点建立 K …

数据分析必备:一步步教你如何用numpy改变数据处理(6)

介绍&#xff1a; NumPy 广播&#xff08;Broadcasting&#xff09;是指当两个形状不同的数组进行运算时&#xff0c;NumPy 有能力灵活地改变其中某个&#xff08;些&#xff09;数组的形状从而使得运算可以正常进行。 广播的规则主要包括以下几点&#xff1a; 当一个数组是一个…

项目使用git开发流程

第一步 项目初期&#xff1a;领导负责的工作 01 创建仓库&#xff1a;在码云上面创建仓库地址&#xff0c;创建完成后点击初始化README&#xff1a;郝陶涛/vue-tea 02 领导在桌面上将代码克隆下来&#xff1a;将代码克隆下来之后&#xff0c;切换到代码内部&#xff0c;使用g…

互联网十万个为什么之什么是云计算

云计算是一种通过互联网提供计算资源和服务的技术。它允许用户随时随地访问和使用云平台上的数据、软件和硬件资源。在数字化时代&#xff0c;互联网已经成为基础设施。云计算使得数据中心能够像一台计算机一样去工作。通过互联网将算力以按需使用、按量付费的形式提供给用户&a…

Linux进程地址空间第三讲

至今为止&#xff0c; 我们所学到的大多数的知识&#xff0c; 包括语言&#xff0c; 数据结构&#xff0c; 动静态库等等的 都是在下面这3G&#xff0c; 也就是用户空间里的(进程等待&#xff0c; 信号之类的与内核有关的是在上面那1G里的) 所以对于我们来说&#xff0c; 我们…

【数据结构】链表经典OJ题目练习(2)

面试题 02.02. 返回倒数第 k 个节点 - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;先计算出链表的长度&#xff0c;在将链表中的值存在数组中&#xff0c;在返回第k个节点。 思路2&#xff1a;利用快慢指针&#xff0c;先让快指针走k步&#xff0c;在让快慢指针分…

pnpm和yarn与npm有何不同?

pnpm和yarn与npm的主要区别在于安装机制、性能优化以及兼容性等方面。 首先&#xff0c;从安装机制方面来看&#xff0c;npm不支持并发安装&#xff0c;它会逐个安装依赖项。而pnpm支持并发安装&#xff0c;这显著提高了安装速度。yarn则使用并行下载&#xff0c;这也使得其安…