验证onnx格式的yolox

onnx篇---验证onnx转换成功与否 1. 调用opencv 来查看网路输出的结果 use_opencv.py import cv2 import onnxruntime import numpy as np onnx_path_demo = '../data/weights/Yolo_bin.onnx' # onnx_path_demo = 'YOLO.onnx' image_path = '../data/img/0601_Bin_061.jpg' image_src = cv2.imread(image_path) resized 阅读详情
  • 转onnx时decode_in_inference是False,所以需要decode_outputs函数
  • 需要注意的是,yolox的Exp中input_size和test_size是先高后宽,即(h,w)
import onnxruntime   
import cv2, sys, torch, torchvision
import numpy as np

cls_num=3
conf_th=0.35
nms_th=0.45
model_w=640
model_h=352
ow=model_w/32
oh=model_h/32

def decode_outputs(outputs):
        grids = []
        strides = []
        dtype=outputs.type()
        for (hsize, wsize), stride in zip([(oh*4,ow*4),(oh*2,ow*2),(oh,ow)], [8, 16, 32]):
            yv, xv = torch.meshgrid([torch.arange(hsize), torch.arange(wsize)])
            grid = torch.stack((xv, yv), 2).view(1, -1, 2)
            grids.append(grid)
            shape = grid.shape[:2]
            strides.append(torch.full((*shape, 1), stride))

        grids = torch.cat(grids, dim=1).type(dtype)
        strides = torch.cat(strides, dim=1).type(dtype)

        outputs[..., :2] = (outputs[..., :2] + grids) * strides
        outputs[..., 2:4] = torch.exp(outputs[..., 2:4]) * strides
        return outputs

session = onnxruntime.InferenceSession('demo.onnx', None)
input_name = session.get_inputs()[0].name

path='/home/lwd/00000.jpg'
raw=cv2.imread(path)
print(raw.shape)
ih, iw, _ = raw.shape
im=cv2.resize(raw, (model_w, model_h))
print(im.shape)
im=im[..., ::-1]
im=im.astype('float32')/255.0
im-=(0.485, 0.456, 0.406)
im/=(0.229, 0.224, 0.225)
im=im.transpose((2,0,1))
im=np.ascontiguousarray(im, dtype=np.float32)
im=np.expand_dims(im, 0)
print(im.shape)
outputs = session.run(None, {input_name: im})
for i in outputs: print(i.shape)
# post
prediction=torch.from_numpy(outputs[0])
prediction=decode_outputs(prediction)
box_corner = prediction.new(prediction.shape)
box_corner[:, :, 0] = prediction[:, :, 0] - prediction[:, :, 2] / 2
box_corner[:, :, 1] = prediction[:, :, 1] - prediction[:, :, 3] / 2
box_corner[:, :, 2] = prediction[:, :, 0] + prediction[:, :, 2] / 2
box_corner[:, :, 3] = prediction[:, :, 1] + prediction[:, :, 3] / 2
prediction[:, :, :4] = box_corner[:, :, :4]
image_pred=prediction[0]
class_conf, class_pred = torch.max(image_pred[:, 5: 5 + cls_num], 1, keepdim=True)
conf_mask = (image_pred[:, 4] * class_conf.squeeze() >= conf_th).squeeze()
print(conf_mask.sum())
detections = torch.cat((image_pred[:, :5], class_conf, class_pred.float()), 1)
detections = detections[conf_mask]
if not detections.size(0): sys.exit()
nms_out_index = torchvision.ops.batched_nms(
            detections[:, :4],
            detections[:, 4] * detections[:, 5],
            detections[:, 6],
            nms_th,
)
detections = detections[nms_out_index]
print(detections.shape)
res=detections.numpy()
print(res)
res[:,0]=res[:,0]*iw/model_w
res[:,1]=res[:,1]*ih/model_h
res[:,2]=res[:,2]*iw/model_w
res[:,3]=res[:,3]*ih/model_h
for i in res:
	x1=int(i[0])
	y1=int(i[1])
	x2=int(i[2])
	y2=int(i[3])
	cv2.rectangle(raw, (x1,y1), (x2,y2), (0,0,255))
cv2.imshow('ss', raw)
cv2.waitKey()
【efficientnet pytorch->onnx】pytorch分类模型导出onnx模型并验证 文章目录1 准备工作1.1 efficientnet网络介绍1.2 efficientnet训练分类数据集2 为何要转3 安装相关依赖4 转换过程5 检验生成的onnx模型5.1 onnx.checker检验5.2 np.testing.assert_allclose校验5.3 warning消除记录5.4 测试一张图片校验6 整合到一起的代码 1 准备工作 1.1 efficientnet网络介绍 详见参考链接EfficientNet网络结构及代码详解。 1.2 efficientnet训练分类数据集 详 阅读详情

相关推荐

一键转换onnx、动态batchsize、测试onnx、判断转换前后精度是否一致、将onnx模型的每个节点特征图信息输出(超详细合集、多输入)

最近项目用到onnx,对onnx内容进行总结,每一种都是测过可行,可以根据对应情况修改对应内容。

knowledge112233的博客 4760

onnx精度验证

一、yolov5-v6.1 onnx模型转换 1、export.py 参数设置:data、weights、device(cpu)、dynamic(triton需要转成动态的)、include 建议先转fp32,再转fp16: import onnxmltools from onnxmltools.utils.float16_converter import convert_float_to_float16 # Update the input name and path for your

xiaoxiannvyi的博客 4567

实战避坑:将YOLOX等PyTorch模型转为SNPE DLC时,你必须注意的输入格式与量化数据准备

本文详细解析了将YOLOX等PyTorch模型转换为SNPE DLC格式时的关键注意事项,重点解决输入格式从BCHW到BHWC的转换陷阱,并提供量化数据准备的实用方案。通过对比ONNX与DLC的维度差异、优化前后处理代码,以及生成精准的raw_list.txt文件,帮助开发者避免模型部署中的常见错误,确保在高通骁龙芯片上实现高效推理。

weixin_26759093的博客 166

onnx检测推理

在导出onnx的时候可以把后处理的那部分注释掉,下图是我的处理方式,只在导出onnx时,myexport=1.。导出完毕后,onnx的结构如图。这样在后续转模型的时候就不会出现do not support dimension size > 4 了。得到onnx后,手写后处理,附赠onnx推理代码:import cv2import os# 指定 ONNX 模型文件路径idx += 3# 创建 ONNX 运行时的 Session# 构造输入数据# 进行推理。

qq_33596242的博客 898

《YOLOv11 实战:从入门到深度优化20篇》007、模型导出与转换:ONNX、TensorRT等格式详解

上周三凌晨两点,实验室的服务器还在嗡嗡作响。同事在部署YOLO模型时遇到了诡异的问题:训练时mAP达到78.3%的模型,导出到TensorRT后检测框全部偏移了十几像素。我们对着屏幕上的错位框面面相觑——这不是精度损失,这是坐标系“漂移”了。这种问题在模型部署中太常见了。训练框架和推理引擎像是说不同方言的工程师,都觉得自己理解对了,结果对接起来才发现对“图像左上角坐标”的定义差了半个特征图。今天我们就来彻底拆解模型导出这个黑盒。

985大学毕业,前某大厂员工,啥都会点的程序员! 532

yolox训练自己的数据集

参数–output-name yolox_s.onnx -f E:/code/YOLOX-0.3.0/exps/example/custom/yolox_s.py -c E:\code\YOLOX-0.3.0\YOLOX_outputs\yolox_s\last_epoch_ckpt.pth。YOLOX-0.3.0\tools\demo.py 用demo.py 测试图片,assets/an.png为测试的图片,last_epoch_ckpt.pth为自己训练的模型。nvidia-smi 查看自己的版本。

lovelife110的博客 981

【YOLOX训练部署】将自己训练的YOLOX权重转化成ONNX 并进行推理

使用YOLOX 训练自己的VOC数据集;保存训练模型;将训练模型转化成ONNX格式,并进行推理!

乐亦亦乐的博客 7356

X-AnyLabeling一键可用的YOLOX-s轻量ONNX自动标注方案

直接放进X-AnyLabeling就能用的YOLOX-s自动标注组合:包含已导出的yolox_s.onnx模型文件和配套yolox_s.yaml配置文件,无需转换、不需编译,复制到软件models目录后,在界面下拉菜单里选中即可启动目标检测类图像的离线批量预标注。支持CPU和GPU本地运行,输入尺寸、置信度阈值(0.25)、NMS IoU阈值(0.45)等关键参数已在yaml中预设好,兼顾速度与可用性,中小规模数据集上单图推理通常在100–300ms之间。输出标注格式兼容COCO JSON和LabelImg

w1x2y3的博客 429

YOLOX-ONNXRuntime in Python

This doc introduces how to convert your pytorch model into onnx, and how to run an onnxruntime demo to verify your convertion. Download ONNX models. Model Parameters GFLOPs Test Size mAP Weights YOLOX-Nano 0.91M 1.08 416x416

548

树莓派4在Bookworm Raspbian系统下无法进入桌面模式(启动后出现彩色画面,然后一直黑屏,但是可以正常启动和ssh)

本文记录了这段比较坎坷的探索之路,由于你的问题不一定是我最终解决方案的,可能是前面探索路上试过的,所以建议按顺序看排除前置问题。 双十一又买了个树莓派 4B,插上之前树莓派 4B 的 TF 卡直接就能使用(毕竟是一样规格的)。但是由于用来连接硬盘的 USB 线是坏的,我以为是系统问题就进行了重装(所以坏掉的线还是直接扔了好)。 重新安装系统就装了最新的 2023-10-10 版本的 64 位的 Raspberry Pi OS,但是出现了一个问题: 启动后出现彩色画面,然后一直黑屏。

ZhongUncle的博客 3735

【Gin框架入门到精通系列01】Gin框架介绍与环境搭建

本文是Gin框架入门到精通系列的第一篇,系统介绍Gin框架的基本概念、核心特性以及环境搭建。无论你是Go语言新手还是有经验的开发者,都能通过本文快速掌握Gin框架的基础知识,创建并运行你的第一个Gin应用。

GopherTribe的博客 1560

保姆级教程:在Docker里用RKNN-Toolkit2把YOLOX的ONNX模型转成RKNN(附完整代码)

本文提供了一份详细的教程,指导如何在Docker环境中使用RKNN-Toolkit2将YOLOX的ONNX模型转换为RKNN格式。涵盖环境配置、量化数据集准备、模型转换代码解析及性能调优,帮助开发者高效完成模型部署。

weixin_30847865的博客 245

Windows防火墙服务异常修复指南:0x80070422与0x6D9报错实战处理

本文针对Windows防火墙服务异常导致的0x80070422与0x6D9报错,提供了从基础到进阶的实战修复指南。核心是通过services.msc服务管理器检查并修复Windows Firewall服务,包括设置启动类型、检查依赖服务等关键步骤。同时介绍了当基础方法失效时,如何使用命令行工具、系统文件检查器(SFC/DISM)以及排查组策略与第三方软件冲突等深度解决方案,帮助用户彻底解决防火墙服务无法启动或访问的问题。

m9n0o的博客 542

【端侧部署yolo系列】yolox部署至全志开发板

部署模型不限于YOLO系列,更多模型参考awnpu_model_zoo。所有案例均支持扩展至全志旗下多个搭载NPU的芯片平台,如V853、MR536及T736等,同时兼容Linux与Android系统。本期内容是以ppyoloe模型和t736(Linux)为例。

troyteng的博客 1450

深入解析CRC-16校验算法及其Verilog硬件实现

本文深入解析了CRC-16校验算法的原理及其在Verilog中的硬件实现方法。从基础的模2除法到串行和并行实现方案,详细介绍了LFSR结构、状态转移分析以及工业应用中的优化技巧。通过实际案例和性能对比,帮助开发者理解如何选择适合的CRC实现方案,确保数据传输的可靠性。

yolo5detector的博客 322

鸿蒙实战开发教程-注册登录页面

在密码输入框中,只要设置TextInput的类型就可以实现带眼睛logo的密码输入框效果:

2401_82546228的博客 3559

避坑指南:YOLOX训练个人数据集时,除了改类别名你还需要注意这几点

本文深入解析YOLOX训练个人数据集时的关键注意事项,从数据集配置、模型架构适配到训练过程诊断,提供全面的避坑指南。特别针对验证集指标异常、Loss曲线解读等常见问题,给出实用解决方案,帮助开发者高效完成YOLOX模型训练。

weixin_30321449的博客 437

【论文学习】《Fully-Convolutional Siamese Networks for Object Tracking》2016年SiamFC 全卷积孪生网络用于目标跟踪

在这项工作中,我们脱离了跟踪中采用的传统在线学习方法,并展示了一种专注于在离线阶段学习强嵌入的替代方法。与在分类设置中的使用不同,我们证明,对于跟踪应用,孪生全卷积深度网络能够更有效地使用可用数据。这不仅反映在测试时,通过执行有效的空间搜索,也反映在训练时,其中每个子窗口都有效地代表一个有用的样本,而几乎没有额外的成本。实验表明,深度嵌入为在线跟踪器提供了自然丰富的特征来源,并使简单的测试时策略表现良好。我们相信这种方法是对更复杂的在线跟踪方法的补充,并期望未来的工作能够更彻底地探索这种关系。

SkyLeopard的博客 2418

旷世yolox自定义数据训练和验证和onnx导出推理

参考我曾经写的一篇mmdetection中,数据集那一块内容:记录一次 mmdetection 自定义数据训练和推理_记录一次mmdetection自定义数据训练和推理-优快云博客总体参考如下(还有其他优快云和知乎贴子):1. 环境安装除了安装基础的python,pytorch等,重点是mmcv和mmcls!

何小义的博客 1197

python实现Markowitz模型 (附完整源码)

python实现Markowitz模型 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 402

SCI一区论文投稿终极技巧:Expert Systems With Applications;Knowledge-Based Systems

投稿计算机1区论文(如KBS、ESWA)的核心技巧包括:1)关键词选择需平衡范围与相关性,避免过细或过泛;2)研究内容聚焦单一核心创新点,避免内容分散;3)必须设计消融实验量化创新点的贡献;4)公开实验代码和数据集,确保可验证性;5)合理使用AI工具仅辅助写作,核心内容需自主完成;6)实验数据必须真实可靠。特别强调1区期刊对创新性和实验严谨性的高要求,需避免常见拒稿原因如内容分散、缺乏验证等。这些策略可提高投稿成功率,但前提是研究本身具有实质性创新。

ZhangJiqun&191cm&85kg 1153

YOLOX模型部署Android端-NCNN方法

YOLOX模型在Android手机端的部署方法-NCNN方式

@木子李的博客 4494

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

YOLOX实战:超详细!手把手教你使用YOLOX进行物体检测(附数据集)

手把手教物体检测——YOLOX 摘要 YOLOX: Exceeding YOLO Series in 2021 作者单位:旷视科技 代码:https://github.com/Megvii-BaseDetection/YOLOX 论文:https://arxiv.org/abs/2107.08430 YOLOX 是旷视开源的高性能检测器。旷视的研究者将解耦头、数据增强、无锚点以及标签分类等目标检测领域的优秀进展与 YOLO 进行了巧妙的集成组合,提出了 YOLOX,不仅实现了超越 YOLOv3、YOLO

AI浩 8884

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

YOLO X Layout模型部署:ONNX格式转换与优化

本文介绍了如何在星图GPU平台上自动化部署yolo_x_layout文档理解模型镜像,实现PDF扫描件中的标题、表格、图片等元素的智能识别与结构化解析。通过ONNX格式转换与优化,该模型可高效运行于CPU/GPU环境,广泛应用于合同解析、文档数字化等典型场景,显著提升企业文档处理自动化水平。

weixin_31715353的博客 398

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

使用YOLOX进行物体检测

YOLOX 是旷视开源的高性能检测器。旷视的研究者将解耦头、数据增强、无锚点以及标签分类等目标检测领域的优秀进展与 YOLO 进行了巧妙的集成组合,提出了 YOLOX,不仅实现了超越 YOLOv3、YOLOv4 和 YOLOv5 的 AP,而且取得了极具竞争力的推理速度。 其中YOLOX-L版本以 68.9 FPS 的速度在 COCO 上实现了 50.0% AP,比 YOLOv5-L 高出 1.8% AP!还提供了支持 ONNX、TensorRT、NCNN 和 Openvino 的部署版本,本文将详细介绍如

二爷的博客 1982

使用TensorRT加速YOLOX目标检测算法

这篇文章主要讲述如何通过tensorrt进行网络推理,以及我的工程的使用,下一节将会讲述如何将yolox部署到jetson开发板中。

m0_75272311的博客 2369
上一篇: yolo格式转labelme格式并验证
下一篇: yolox转rknn
刀么克瑟拉莫
博客等级 码龄14年 68粉丝 268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刀么克瑟拉莫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值