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.结论
| 类型 | 精度 | 召回率 | mAP50 | mAP50-95 |
|---|---|---|---|---|
| pt模型 | 0.719 | 0.625 | 0.714 | 0.475 |
| RKNN量化版 | 0.688 | 0.655 | 0.699 | 0.455 |
| RKNN非量化版 | 0.69 | 0.631 | 0.695 | 0.45 |
可以看出,对比pt原版模型,转换好的rknn的量化和非量化版本的模型精度和mAP都有一些下降。使用rknn模型的项目中,pt原版模型的性能参数只能作为一个参考,需要实际算出rknn模型的性能参数才行。
相关文章:
YOLOv5 V7.0 - rknn模型的验证 输出精度(P)、召回率(R)、mAP50、mAP50-95
1.简介 RKNN官方没有提供YOLOv5模型的验证工具,而YOLOv5自带的验证工具只能验证pytorch、ONNX等常见格式的模型性能,无法运行rknn格式。考虑到YOLOv5模型转换为rknn会有一定的精度损失,但是需要具体数值才能进行评估,所以需要一个…...
CUDA、CUDNN、Pytorch三者之间的关系
这个东西嘛,我一开始真的是一头雾水,安装起来真是麻烦死了。但是随着要复现的项目越来越多,我也不得不去学会他们是什么,以及他们之间的关系。 首先,一台电脑里面允许有多种版本的cuda存在,然后cuda分为run…...
vue-cli2,vue-cli3,vite 生产环境去掉console.log
console.log一般都是在开发环境下使用的,在生产环境下需要去除 ,如果手动删除未免也太累了,我们可以用插件对于具体环境全局处理。 vue-cli2 项目build 下面webpack.prod.config.js 文件中: plugins: [new webpack.DefinePlugin({process.en…...
Docker-Compose编排LNMP并部署WordPress
前言 随着云计算和容器化技术的快速发展,使用 Docker Compose 编排 LNMP 环境已经成为快速部署 Web 应用程序的一种流行方式。LNMP 环境由 Linux、Nginx、MySQL 和 PHP 组成,为运行 Web 应用提供了稳定的基础。本文将介绍如何通过 Docker Compose 编排 …...
附录C:招聘流程
< 回到目录 附录C:招聘流程 _xxx_公司的招聘 使命 只雇佣顶级人才。 他们是能够胜任工作,并与 _(你的公司名称)_ 的企业文化相匹配的超级明星。 方法 记分卡。招聘经理创建一份文件,详细描述此职位的工作内容…...
1688快速获取整店铺列表 采集接口php Python
在电子商务的浪潮中,1688平台作为中国领先的批发交易平台,为广大商家提供了一个展示和销售商品的广阔舞台;然而,要在众多店铺中脱颖而出,快速获取商品列表并进行有效营销是关键。 竞争对手分析 价格比较:…...
CTF-WEB(MISC)
安全攻防知识——CTF之MISC - 知乎 CTF之MISC杂项从入门到放弃_ctf杂项 你的名字-CSDN博客 CTF MICS笔记总结_archpr 掩码攻击-CSDN博客 一、图片隐写 CTF杂项---文件类型识别、分离、合并、隐写_ctf图片分离-CSDN博客 EXIF(Exchangeable Image File)是…...
Ubuntu如何更换 PyTorch 版本
环境: Ubuntu22.04 WLS2 问题描述: Ubuntu如何更换 PyTorch 版本考虑安装一个为 CUDA 11.5 编译的 PyTorch 版本。如何安装旧版本 解决方案: 决定不升级CUDA版本,而是使用一个与CUDA 11.5兼容的PyTorch版本,您可…...
python flask css样式无效
解释: Flask是一个Python的轻量级Web框架,它没有为CSS提供任何内置的支持。如果你在Flask项目中引入了CSS文件,但是这个CSS没有生效,可能的原因有: 路径不正确:你的CSS文件没有放在正确的目录下࿰…...
大数据学习笔记14-Hive基础2
一、数据字段类型 数据类型 :LanguageManual Types - Apache Hive - Apache Software Foundation 基本数据类型 数值相关类型 整数 tinyint smallint int bigint 小数 float double decimal 精度最高 日期类型 date 日期 timestamps 日期时间 字符串类型 s…...
vue3 下载图片(包括多图片下载)
单图片下载 //使用 download(https://img1.baidu.com/it/u1493209339,2544178769&fm253&app138&sizew931&n0&fJPEG&fmtauto?sec1715101200&t854f3434686cfd2cba9d6a528597d15c)//下载逻辑 const download async (modelUrl) > {const respons…...
LabVIEW如何通过子VI更改主VI控件属性?
在LabVIEW中,可以通过使用Local Variable或Property Node来实现主VI控件属性的更改。这些方法可以在主VI和子VI之间传递数据和控件属性。 Local Variable: 使用Local Variable可以在子VI中直接访问并修改主VI中的控件属性。在子VI中创建Local Variable,并…...
关于MS-DOS时代的回忆
目录 一、MS-DOS是什么? 二、MS-DOS的主要功能有哪些? 三、MS-DOS的怎么运行的? 四、微软开源MS-DOS源代码 五、高手与漂亮女同学 一、MS-DOS是什么? MS-DOS(Microsoft Disk Operating System)是微软公…...
数据库索引(Mysql)
简述:数据库索引是加速数据检索,提高查询效率的一种数据结构 语法规则 创建索引 --通用语法规则 --[内容] 可选参数 --UNIQUE: 可选关键字,用于创建唯一索引,确保索引列的值是唯一的 CREATE [UNIQUE] INDEX 索引名 ON 表名(字段名,...) [ASC | DESC];…...
异常-Exception
异常介绍 基本概念 Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)执行过程中所发生的异常事件可分为两大类 1,Error(错误):Java虚拟机无法…...
ctfshow——SQL注入
文章目录 SQL注入基本流程普通SQL注入布尔盲注时间盲注报错注入——extractvalue()报错注入——updataxml()Sqlmap的用法 web 171——正常联合查询web 172——查看源代码、联合查询web 173——查看源代码、联合查询web 174——布尔盲注web 176web 177——过滤空格web 178——过…...
第十三章 计算机网络
这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层:中继器,集线器(多路中继器) 数据链路层:网桥,交换机(多端口…...
商品详情 API 返回值说明
商品详情API接口在多个领域和场景中都有广泛的应用,以下是一些常见的应用场景: 竞品分析:企业可以利用商品详情API接口获取竞品的所有详细信息,如价格、发货地、上架时间、销售量等。通过分析这些竞品信息,企业可以更…...
层级实例化静态网格体组件:开启大量模型处理之门
前言 在数字孪生的世界里,我们常常需要构建大量的模型来呈现真实而丰富的场景。然而,当使用静态网格体 (StaticMesh )构建大量模型时,可能会遇到卡顿的问题,这给我们带来了不小的困扰😣。那么&…...
【网络知识】光猫、路由器 和 交换机 的作用和区别?
数字信号:是指自变量是离散的、因变量也是离散的信号,这种信号的自变量用整数表示,因变量用有限数字中的一个数字来表示。在计算机中,数字信号的大小常用有限位的二进制数表示。 模拟信号:模拟信号是指用连续变化的物…...
保姆级教程:用TensorFlow 2.x和EfficientNetB0搞定CASIA-HWDB手写汉字识别(附完整代码)
从零构建手写汉字识别系统:TensorFlow 2.x与EfficientNetB0实战指南 在数字化办公场景中,手写体识别技术正逐渐成为提升效率的隐形助手。无论是银行票据处理、教育作业批改还是历史档案数字化,准确识别手写汉字的能力都显得尤为重要。本文将带…...
Windows远程桌面终极解锁指南:如何免费开启多用户并发连接
Windows远程桌面终极解锁指南:如何免费开启多用户并发连接 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版无法使用远程桌面而烦恼吗?RDP Wrapper Library这款开源工具能…...
毕业设计:基于springboot的林业产品推荐系统(源码)
4 系统设计当前,系统的类型有很多,从系统呈现的内容来看,系统的类型有社交类,有商业类,有政府类,有新闻类等。那么,在众多系统类型中,先明确将要设计的系统的类型才是系统设计的首要…...
CANN/asc-devkit MrgSort合并排序函数
MrgSort 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/ca…...
Go语言事件驱动:CloudEvents
Go语言事件驱动:CloudEvents 1. CloudEvents实现 type Event struct {SpecVersion stringType stringSource stringID stringData []byte }2. 总结 CloudEvents是云原生事件的标准格式,促进跨服务的事件交互。...
大模型微调实战:用LoRA技术微调LLaMA 2模型
在人工智能技术飞速发展的当下,大语言模型(LLM)在自然语言处理领域展现出了强大的能力。LLaMA 2作为Meta推出的开源大模型,凭借其出色的性能和广泛的适用性,成为了众多开发者和研究人员的首选。对于软件测试从业者而言…...
化工行业节能改造数据监测系统方案
针对工厂存在能源利用不足、设备利用率偏低、人工抄表粗放等痛点,某化工企业通过落实多项节能数字化改造措施,实现变废为宝、节能增效等多种能源效益。主要举措包括:通过回收高温蒸汽驱动闲置汽轮机实现发电、通过回收富余蒸汽为生产提供热源…...
LeetCode 找到最终的安全状态题解
LeetCode 找到最终的安全状态题解 题目描述 给定一个有向图,找到所有安全节点。安全节点是永远不会走向环的节点。 示例: 输入:graph [[1,2],[2,3],[5],[0],[5],[],[]]输出:[2,4,5,6] 解题思路 方法:拓扑排序 思路&am…...
视听融合新范式!黎阳之光打破视觉边界,声影协同赋能全域智慧管控
长久以来,图形图像可视化技术早已成为智慧安防、低空管控、工业监测领域的主流应用,依托高清视频、三维实景、数字孪生图形图像能力,实现场景直观呈现、目标可视追踪、环境全景复刻,为各行各业搭建起可视化智慧管理体系。深耕图形…...
Gemini 垂直行业模型路由:按意图选择不同Prompt与参数集
在AI开发社区里,不少工程师都在尝试把多个大模型接入实际项目。工具整合站点作为AI模型聚合平台,让开发者能快速对比Gemini与其他模型在不同行业场景下的表现。今天我们来聊聊如何为Gemini搭建一套垂直行业模型路由机制,根据用户意图自动选择…...
