验证onnx格式的YOLO

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 阅读详情
  • 相关参数改成自己的
  • 注意输出的shape,onnx有时候会合并输出,目前不知道什么原因
import onnxruntime   
import cv2, torch
import numpy as np

anchors=[[22, 55,  38, 44,  32, 88,  70, 56], [22, 22,  17, 35,  37, 24,  27, 34]]
ans=len(anchors[0])//2
cls_num=1
conf_th=0.25
nms_th=0.45
model_w=
model_h=

def get_boxes(output, anchors):
	h=output.size(2)
	w=output.size(3)
	output=output.view(ans,int(cls_num+5),h,w).permute(0,2,3,1).contiguous()
	# conf
	conf = torch.sigmoid(output[..., 4])
	cl = torch.sigmoid(output[..., 5:])
	#conf = output[..., 4]
	#cl = output[..., 5:]
	clv, cli = torch.max(cl, -1)
	#print(conf[conf>0.5])
	conf = conf * clv
	#print(conf[conf>0.15])
	mask = conf > conf_th
	conf = conf[mask].unsqueeze(-1)
	cli = cli[mask].unsqueeze(-1)
	# grid
	FloatTensor = torch.cuda.FloatTensor if conf.is_cuda else torch.FloatTensor
	grid_h, grid_w = torch.meshgrid(torch.arange(h), torch.arange(w))
	grid_h = grid_h.repeat(ans,1,1).type(FloatTensor)
	grid_w = grid_w.repeat(ans,1,1).type(FloatTensor)
	tx = (torch.sigmoid(output[..., 0]) + grid_w) / w
	ty = (torch.sigmoid(output[..., 1]) + grid_h) / h
	tx = tx[mask].unsqueeze(-1)
	ty = ty[mask].unsqueeze(-1)
	# anchor
	aw = torch.Tensor(anchors[0::2]).view(ans,1).repeat(1,h*w).view(ans,h,w).type(FloatTensor)
	ah = torch.Tensor(anchors[1::2]).view(ans,1).repeat(1,h*w).view(ans,h,w).type(FloatTensor)
	tw = torch.exp(output[..., 2]) * aw
	th = torch.exp(output[..., 3]) * ah
	tw = tw[mask].unsqueeze(-1)
	th = th[mask].unsqueeze(-1)
	return torch.cat([tx, ty, tw, th, cli, conf], -1)
	
def iou(a,b):
	A=len(a)
	B=len(b)
	area1=a[:,2]*a[:,3]
	area1=area1.unsqueeze(1).expand(A,B)
	area2=b[:,2]*b[:,3]
	area2=area2.unsqueeze(0).expand(A,B)
	ba=torch.zeros(a.shape).cuda()
	bb=torch.zeros(b.shape).cuda()
	ba[:,0:2]=a[:,0:2]-a[:,2:]/2.0
	ba[:,2:]=ba[:,0:2]+a[:,2:]
	bb[:,0:2]=b[:,0:2]-b[:,2:]/2.0
	bb[:,2:]=bb[:,0:2]+b[:,2:]
	ba=ba.unsqueeze(1).expand(A,B,4)
	bb=bb.unsqueeze(0).expand(A,B,4)
	lt=torch.max(ba[:,:,0:2], bb[:,:,0:2])
	rb=torch.min(ba[:,:,2:], bb[:,:,2:])
	inter=torch.clamp((rb-lt),min=0)
	inter=inter[:,:,0]*inter[:,:,1]
	return inter/(area1+area2-inter)

def nms(box):
	box = box[torch.argsort(box[:,-1])]
	result=[]
	while len(box) > 0:
		result.append(box[0])
		if len(box) == 1: break
		ious=iou(box[0:1, 0:4], box[1:, 0:4])
		#print(ious)
		box=box[1:][ious.squeeze(0) < nms_th]
	return torch.stack(result)

def deal(boxes):
	labels = boxes[:, -2].unique()
	result=[]
	for l in labels:
		box = boxes[boxes[:, -2]==l]
		box = nms(box)
		for b in box: 
			result.append(b)
	return torch.stack(result)

session = onnxruntime.InferenceSession('.onnx', None)
input_name = session.get_inputs()[0].name
for node in session.get_outputs():
	print(node.name)
for line in open("jpg.txt"):
	line=line.strip()
	print(line)
	raw=cv2.imread(line)
	ih, iw, _ = raw.shape
	im=cv2.resize(raw, (model_w, model_h))
	im=im[..., ::-1]
	im=im.astype('float32')/255.0
	image = np.expand_dims(np.transpose(im, (2, 0, 1)), 0)
	outputs = session.run(None, {input_name: image})
	print(type(outputs))
	thld_boxes=[]
	for i,output in enumerate(outputs):
		output=torch.from_numpy(output).cuda()
		print(output.shape)
		boxes = get_boxes(output, anchors[i])
		if len(boxes) == 0: continue
		boxes[:,0] = boxes[:,0] * iw
		boxes[:,1] = boxes[:,1] * ih
		boxes[:,2] = boxes[:,2] / model_w * iw
		boxes[:,3] = boxes[:,3] / model_h * ih
		for b in boxes: thld_boxes.append(b)
	if len(thld_boxes) != 0: 
		boxes=deal(torch.stack(thld_boxes))
		print(len(boxes))
		for b in boxes:
			cx = b[0]
			cy = b[1]
			w = b[2]
			h = b[3]
			cv2.rectangle(raw, (int(cx-w/2), int(cy-h/2)), (int(cx+w/2), int(cy+h/2)), (0,0,255))
	cv2.imwrite("result/"+line.split('/')[-1], raw)

深入浅出之ONNX文件 随着深度学习技术的快速发展,越来越多的企业和个人投入到AI研究与应用中。然而,不同的深度学习框架(如TensorFlow、PyTorch等)之间缺乏统一的模型格式,导致模型在不同框架之间的迁移变得困难。为了解决这个问题,ONNX应运而生,它定义了一组通用的算子集、一系列用于构建深度学习模型的模块以及一种通用的文件格式,使得AI开发人员能够将模型与各种框架、工具、运行时和编译器一起使用。开放神经网络交换 ONNX(Open Neural Network Exchange)是一套表示深度神经网络模型。 阅读详情

相关推荐

【Windows/C++/yolo开发部署02:错误方法】将自定义实例分割模型导出为 ONNX 格式

在深度学习模型部署中,将模型从 PyTorch 格式(.pt)转换为 ONNX 格式是一种常见的需求。ONNX 格式具有良好的跨平台性和兼容性,可以在多种推理框架中使用。

深耕CV 1229

使用 Python 验证 YOLO11 的 ONNX 模型

本文介绍了如何使用Python对YOLO11导出的ONNX模型进行验证。

Darker的博客 1795

YOLO11 ONNX 模型导出与部署全攻略:格式转换 + 多平台落地 + 性能优化(含代码)

本文介绍了ONNX格式在YOLO11模型部署中的关键作用。ONNX作为开放神经网络交换格式,具有跨框架兼容性、推理性能优化和部署灵活性等核心优势。文章详细讲解了YOLO11模型导出为ONNX格式的方法,包括环境准备、基本导出步骤和高级参数配置(如输入尺寸、动态维度、简化优化等)。通过ONNX格式,YOLO11模型可以获得3倍的推理速度提升,并支持从云服务器到边缘设备的多样化部署环境。文章还提供了完整的导出参数参考表,帮助开发者根据实际需求优化模型导出配置。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1329

YOLO11 目标检测 | 导出ONNX模型 | ONNX模型推理

本文分享YOLO11中,从xxx.pt权重文件转为.onnx文件,然后使用.onnx文件,进行任务的。用,便于算法到开发板或芯片的部署。备注:本文是使用Python,编写ONNX模型推理代码的。

黎国溥 2万+

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

睶 38万+

波束管理 Beam Management

Beam Management in 5G NR   波束管理,是5G NR中基于信道质量来动态选择每个UE和gNB之间以什么方向和频率的波束beam来进行通信。   背景   5G NR(New Radio)支持非常高的数据速率和更低的延迟。5G NR支持FR1和FR2频段,FR1为亚6 GHz(450至6000 MHz);FR2为毫米波段(24.25 GHz至52.6 GHz)。   由于毫米波频带使用非常高的频率,因此会导致传播损耗和其他损耗。为了补偿损失,在这种频率下定向通信是必不可少的。

最忆是江南的博客 5826

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

ArcGIS中的Python入门知识点整理

关于Arcpy大家应该都比较熟悉,Python用的好,数据处理快又好!在ArcGIS中ArcPy是一个以成功的arcgisscripting模块为基础并继承了arcgisscripting功能进而构建而成的站点包。目的是为以实用高效的方式通过Python执行地理数据分析、数据转换、数据管理和地图自动化创建基础。ArcPy提供了丰富纯正的Python体验,具有代码自动完成功能。今天我们就看看关于Arcpy相关处理的使用,通过一些简单代码与大家一起认识Arcpy。

xjt921122的博客 1771

YOLO11模型导出:ONNX格式转换详细步骤

本文介绍了如何在星图GPU平台上自动化部署YOLO11镜像,快速构建高性能目标检测开发环境。该镜像预装Ultralytics 8.3.9、PyTorch 2.3及ONNX导出工具链,支持一键训练与导出动态尺寸ONNX模型,典型应用于工业质检、智能安防等实时目标检测场景。

weixin_36074800的博客 746

2.ROS实用工具:坐标变换

本文围绕ROS坐标变换展开,介绍其在机器人系统中的关键作用,即统一不同传感器和执行器坐标系,服务数据融合等操作。基于ROS的tf库,从广播和监听TF变换两方面阐述实现过程,涵盖新建工作包、编写广播和监听代码、配置构建文件及编译等步骤。此外,介绍启动节点管理器后运行广播和监听节点的方法,并通过rqt_graph、rqt_tf_tree、tf_echo等工具可视化和获取坐标系变换信息。借助这些内容,读者不仅能掌握ROS坐标变换的实现,还能对机器人坐标变换系统的调试和理解有更深入认识 。

qq_74168740的博客 1172

Coze 上 OpenClaw 完整使用攻略(零代码 + 24 小时在线 + 飞书 / 微信接入)

Coze(扣子)是目前国内零门槛部署 OpenClaw 最友好的平台,无需服务器、不用命令行,5 分钟即可拥有可执行本地 / 云端任务的 AI 助手,还能一键发布到飞书、微信、钉钉等 IM。

hy行者勇哥的博客 2921

使用C#调用Yolo26模型的ONNX

IoU阈值,默认0.5(超过此值认为重叠需要抑制)

At02i663F的博客 367

【图论】系列(七)图论的中心性度量方法及重要性评价指标

图论中的中心性度量方法是用来衡量图中各个节点(或顶点)相对重要性的指标。

qq_30066733的博客 1075

YOLO26 实测记录:从模型下载、预测验证到 ONNX Runtime 推理部署

本文记录一次 YOLO26 模型的完整测试流程,主要包括环境验证、官方模型下载、测试模型预测、自定义数据集训练、模型导出为 ONNX、.pt与.onnx推理结果对比,以及使用 ONNX Runtime 手动验证导出的 ONNX 模型。这篇文章的目标不是系统分析 YOLO26 的网络结构,而是从工程实践角度梳理一套可复现的测试流程。整个流程可以概括为:模型环境验证 → 官方模型预测 → 自定义数据训练 → 模型导出 ONNX → PT 与 ONNX 结果对比 → ONNX Runtime 独立推理验证。

CYD的博客 315

基于Simscape的双PID比例调速阀与比例溢流阀液压控制系统建模与仿真

本文提出了一种基于Simscape的双PID液压控制系统建模方法,通过比例调速阀和比例溢流阀实现液压缸速度与压力的解耦控制。系统采用Simscape Fluids物理建模,精确模拟液压元件非线性特性。文章详细介绍了液压被控对象建模过程,包括动力单元、比例阀组合建模、执行机构及传感器配置。同时设计了双PID控制器架构,分别控制速度环和压力环,并给出参数整定建议。该方法通过物理网络直接模拟流体流动和压力动态,相比传统传递函数法具有更高精度,为液压系统仿真提供了有效解决方案。

AI的内部世界的博客 284

【面试系列】数据分析师高频面试题及详细解答

本文为数据分析师岗位提供了详尽的面试题库和解答,涵盖初级、中级和高级三个层次。初级面试题涉及基本的数据处理和统计分析知识,如SQL查询、数据清理和基础统计概念。中级面试题则重点考察数据可视化、复杂查询和数据建模等技能。高级面试题则深入探讨高级统计方法、大数据处理和高级分析工具的使用。通过这些问题和解答,候选人可以全面了解数据分析师岗位所需的技能,帮助其更好地准备面试。常考知识点总结部分则系统归纳了数据分析师岗位的关键技能领域。

在路上的专栏 5222

YOLO26模型导出ONNX:跨平台部署转换实战指南

本文介绍了如何在星图GPU平台上自动化部署最新 YOLO26 官方版训练与推理镜像,实现目标检测与姿态估计模型的ONNX格式转换。基于该平台,用户可快速完成模型导出与验证,应用于视频监控、动作识别等跨平台AI推理场景,显著提升部署效率。

weixin_42605397的博客 1094

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

轻松将 YOLO 的 PT 模型转为 ONNX 格式,如何将 PT 格式模型转为 ONNX 格式模型。

轻松将 YOLO 的 PT 模型转为 ONNX 格式,如何将 PT 格式模型转为 ONNX 格式模型。 训练时用的框架(比如 PyTorch)和部署时的推理引擎(比如 TensorRT、OpenVINO)格式不兼容。这时,ONNX(Open Neural Network Exchange)格式就成了 “桥梁”—— 它是一种跨框架的模型格式,几乎所有主流推理引擎都支持。 如果你刚好在使用 YOLO 训练目标检测模型,这个脚本可以帮你快速把训练好的 .pt 模型转为 ONNX 格式,还自带模型验证功能。

CV 小涵的博客,计算机本硕211毕业,研究计算机视觉、模型微调、RAG等方向,收藏有国内外优质数据集,解决视觉相关项目方案,欢迎交流讨论。 1253

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

YOLO11 ONNX转换:跨平台推理的模型导出与验证步骤

本文介绍了基于星图GPU平台自动化部署YOLO11镜像的完整流程,重点实现模型向ONNX格式的转换与跨平台推理验证。通过该平台,用户可快速完成YOLO11模型导出、结构优化与多环境部署,典型应用于工业质检中的实时目标检测任务,提升AI模型在边缘设备与生产环境的落地效率。

weixin_42513928的博客 961

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

YOLO26如何导出ONNX模型?推理格式转换详细步骤

本文介绍了基于星图GPU平台自动化部署最新 YOLO26 官方版训练与推理镜像的方法,支持一键导出ONNX模型并完成格式验证。该环境适用于模型微调、AI应用开发等场景,结合ONNX Runtime实现跨平台部署,提升从训练到生产的落地效率。

weixin_35899324的博客 954

YOLO在C#中的完整训练、验证与部署方案

YOLO在C#中的完整训练、验证与部署方案

m0_37302966的博客 2225

YOLO11模型导出ONNX,跨平台部署更方便

本文介绍了如何在星图GPU平台上自动化部署YOLO11镜像,快速实现目标检测模型的ONNX格式导出与跨平台部署。用户可一键启动预置环境,三步完成导出,并将模型应用于安防监控、物流分拣等典型工业视觉场景,显著提升AI落地效率。

weixin_32099703的博客 1037

RT-DETR训练自己的数据集+测.pt+转onnx+测.onnx(YOLO收录版)

模型文件(如 best.pt、last.pt)默认会保存在 runs/detect/trainXX/ 目录下,你可以运行以下命令查找最新训练的结果:ls -lt runs/detect/6、在ultralytics-main\ultralytics这个文件夹里,输入训练命令(可使用tail -f train.log查看训练日志)5、改数据集路径,复制一份这个coco.yaml然后重命名,改成自己数据集路径,和分类。4、先改模型的配置文件,改下nc那个数字,我是yolo数据集标签0-6,所以改7。

weixin_46406816的博客 1345

YOLO与ONNX格式转换指南:打通不同框架的壁垒

在工业检测等实时场景中,YOLO凭借高速推理成为首选目标检测模型。然而训练与部署环境差异大,跨框架迁移困难。ONNX作为通用中间格式,能有效打通PyTorch到TensorRT、OpenVINO等推理引擎的链路。通过合理设置opset版本、动态轴和输出命名,并剥离NMS后处理,可实现高效稳定的模型导出与多端部署。

weixin_33240461的博客 936

YOLO11模型导出ONNX流程分享

本文介绍了基于星图GPU平台,如何利用YOLO11镜像自动化部署并完成模型导出ONNX格式的全流程。该方案支持动态输入与NMS集成,适用于工业质检、智能安防等场景下的AI模型微调与跨平台部署,提升推理兼容性与落地效率。

weixin_34581040的博客 418

DAMO-YOLO模型ONNX格式转换与优化指南

本文介绍了如何在星图GPU平台自动化部署“实时手机检测-通用基于DAMO-YOLO和TinyNAS WebUI”镜像,实现高效的目标检测模型转换与优化。该镜像支持将DAMO-YOLO模型转换为ONNX格式并进行性能优化,适用于智能手机等移动设备的实时物体检测场景,提升部署效率和推理速度。

weixin_42263617的博客 228
上一篇: Lightweight and Progressively-Scalable Networks for Semantic Segmentation简记
下一篇: python直接在RGB调整饱和度,亮度,对比度
刀么克瑟拉莫
博客等级 码龄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、付费专栏及课程。

余额充值