【已解决】pt文件转onnx后再转rknn时得到推理图片出现大量锚框变花屏

前言

环境介绍:

1.编译环境

Ubuntu 18.04.5 LTS

2.RKNN版本

py3.8-rknn2-1.4.0

3.单板

迅为itop-3568开发板


一、现象

采用yolov5训练并将pt转换为onnx,再将onnx采用py3.8-rknn2-1.4.0推理转换为rknn,rknn模型能正常转换,并且推理显示正常。但将rknn文件放到开发板,使用rknn_toolkit_lite2进行推理时,得到的推理图片出现大量锚框变花屏,如下。
在这里插入图片描述

二、解决

经过排查发现是前面为了解决rknn置信度大于1,图像出现乱框问题在将pt导出为onnx文件时,对yolo.py文件做了修改,引入了sigmoid函数。
models/yolo.py

def forward(self, x):z = []  # inference outputfor i in range(self.nl):if os.getenv('RKNN_model_hack', '0') != '0':x[i] = torch.sigmoid(self.m[i](x[i]))  # convreturn x
# def forward(self, x):
#     z = []  # inference output
#     for i in range(self.nl):
#         x[i] = self.m[i](x[i])  # conv
#         bs, _, ny, nx = x[i].shape  # x(bs,255,20,20) to x(bs,3,20,20,85)
#         x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()
#
#         if not self.training:  # inference
#             if self.grid[i].shape[2:4] != x[i].shape[2:4] or self.onnx_dynamic:
#                 self.grid[i] = self._make_grid(nx, ny).to(x[i].device)
#
#             y = x[i].sigmoid()
#             if self.inplace:
#                 y[..., 0:2] = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i]  # xy
#                 y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i]  # wh
#             else:  # for YOLOv5 on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953
#                 xy = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i]  # xy
#                 wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i].view(1, self.na, 1, 1, 2)  # wh
#                 y = torch.cat((xy, wh, y[..., 4:]), -1)
#             z.append(y.view(bs, -1, self.no))
#
#     return x if self.training else (torch.cat(z, 1), x)

而板子上跑的test_rknn_lite.py后期对数据处理函数与虚拟机上推理导出rknn函数存在差异,而这差异就是对sigmoid函数的处理不同。
在这里插入图片描述

没有sigmoid函数的,不会出现花屏现象!!!

修改过后推理结果正常。

在这里插入图片描述

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

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

相关文章

gem5学习(18):ARM DVFS建模——ARM DVFS modelling

目录 一、Voltage Domains 1、灵活方法:使用命令行标志 2、不太灵活方法:创建 CpuCluster 的子类 二、Clock Domains 三、Adding Clock Domains to an existing simulation 四、The DVFS Handler 1、the number of Voltage Domains does not matc…

养好花草鱼鸟,也能旺家

不少朋友家里既养了鱼鸟,也养了花草,平时逗逗鸟喂喂鱼再赏赏花,真是非常惬意的生活,而用养鱼的水养植物,花草植物会长得格外茂盛。根据这一原理,很多人喜欢在养一些水培花草的时候,顺便养几尾小…

基于SpringBoot+Vue的外卖点餐管理系统

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…

SSM框架,Maven的学习(下)

依赖传递和依赖冲突 依赖传递指的是当一个模块或库 A 依赖于另一个模块或库 B,而 B 又依赖于模块或库 C,那么 A 会间接依赖于 C。这种依赖传递结构可以形成一个依赖树。当我们引入一个库或框架时,构建工具(如 Maven、Gradle&…

2024.02.05

复习单向,双向链表,并且实现两种链表的增加和删除功能。 单链表头插 Linklist insert_head(datatype element,Linklist head) { //创建新节点 Linklist screate_node(); if(NULLs) return head; s->dataelement; //1,判断链表为空 if(NULLhea…

第三篇:SQL数据模型、通用语法和语法分类

一,SQL数据模型 (一)关系型数据库(RDBMS) 1.概念 (百度百科)指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这…

【蓝桥杯选拔赛真题64】python数字塔 第十五届青少年组蓝桥杯python 选拔赛比赛真题解析

python数字塔 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要求 (注:input()输入函数的括号中不允许添加任何信息) 提示信息: 数字塔是由 N 行数堆积而成,最顶层只有一个数,次顶层两个数,以此类推。相邻层之间的数用线连接,下一层的每个数与它上一层左上…

网络安全大赛

网络安全大赛 网络安全大赛的类型有很多,比赛类型也参差不齐,这里以国内的CTF网络安全大赛里面著名的的XCTF和强国杯来介绍,国外的话用DenCon CTF和Pwn2Own来举例 CTF CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相…

EasyX图形库学习(三、用easyX控制图形界面中的小球、图片-加载、输出)

目录 小球视频 图像输出函数 loadimage用于从文件中读取图片 putimage在当前设备上绘制指定图像。 initgraph 函数 图片输出 代码详解: 1. 初始化图形界面 2. 设置背景颜色并清除屏幕 3. 加载并显示图片 4. 等待用户输入并退出程序 图形界面中的小球 1…

在云计算环境下保护Java应用程序的有效措施

云计算(Cloud)技术是近年来计算机科学的一个重要突破。大多数组织已经通过将自己的应用程序移入云平台而获益。不过,如何保证应用程序在第三方服务器上的安全性,是一项艰巨的挑战。 在本文中,我们将重点讨论Java&…

C++ dfs搜索枚举(四十八)【第八篇】

曾经我们讲过枚举算法,那假设我们把枚举算法应用到搜索里呢? 1.搜索枚举 以前我们在进行枚举的时候是用了多层循环嵌套,但是当枚举的变量过多或者是输入的数量的时候就很难利用循环完成枚举了,不过我们可以尝试利用搜索进行枚举。…

自动化诊断测试之CANoe.DIVA入门

目录 0 前言 1 CANoe.DIVA基础 2 CANoe.DIVA TIPs 0 前言 写在前面:如对本文有任何疑问欢迎评论区讨论,希望和大家一起进步。同时HIL测试群欢迎大家加入如有需要也可私信我拉你。VT和DIVA都可以做UDS的自动化测试,但相对VT来说使用DIVA生成…

Redis学习及总结

Redis 快速入门 Redis属于非关系型数据库 SQL应用场景 数据结构固定相关业务对数据安全性一致性要求高 NoSQL应用场景 数据结构不固定对一致性,安全性要求不高性能要求高 🎯需要使用Xftp 传输压缩包到虚拟机上 安装好Redis后, 执行命令…

系统架构设计师-21年-上午答案

系统架构设计师-21年-上午答案 更多软考资料 https://ruankao.blog.csdn.net/ 1 ~ 10 1 前趋图(Precedence Graph)是一个有向无环图,记为:→{(Pi,Pj)|Pi must complete before Pj may strat},假设系统中进程P{P1,P2,P3&#xf…

UE5 PAK包热加载

参考知乎UE5 Pak学习与应用(一)运行时导入模型 - 知乎 使用的版本为UE5.1 使用插件为HorPatcher和EasyFile Dialog HotPatcher:UE资源热更打包工具HotPatcher | 循迹研究室 ,Github地址为:GitHub - hxhb/HotPatcher: Unreal Engine hot update manage …

最小生成树超详细介绍

目录 一.最小生成树的介绍 1.最小生成树的简介 2.最小生成树的应用 3.最小生成树的得出方法 二.Kruskal算法 1.基本思想: 2.步骤: 3.实现细节: 4.样例分析: 5.Kruskal算法代码实现: 三.Prim算法 1.基本思想…

【多模态大模型】视觉大模型SAM:如何使模型能够处理任意图像的分割任务?

SAM:如何使模型能够处理任意图像的分割任务? 核心思想起始问题: 如何使模型能够处理任意图像的分割任务?5why分析5so分析 总结子问题1: 如何编码输入图像以适应分割任务?子问题2: 如何处理各种形式的分割提示?子问题3:…

【数据结构和算法】--- 基于c语言排序算法的实现(1)

目录 一、排序的概念及其应用1.1排序的概念1.2 排序的应用1.3 常见的排序算法 二、插入排序2.1直接插入排序2.2 希尔排序2.2.1 预排序2.2.2 缩小gap2.2.3 小结 三、选择排序3.1 直接选择排序3.2 堆排序 一、排序的概念及其应用 1.1排序的概念 排序: 所谓排序&…

RTE2023第九届实时互联网大会:揭秘未来互联网趋势,PPT分享引领行业新思考

随着互联网的不断发展,实时互动技术正逐渐成为新时代的核心驱动力。 在这样的背景下,RTE2023第九届实时互联网大会如期而至,为业界人士提供了一个探讨实时互联网技术、交流创新理念的绝佳平台。 本文将从大会内容、PPT分享价值等方面&#…

ShardingSphere 5.x 系列【6】YAML 配置介绍

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 前言2. YamlConfiguration3. 常用配置项3.1 JDBC 驱动3.2 数据源3.3 规则…