验证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万+

饥荒联机版Mod开发——modmain环境与API深度解析

本文深入解析饥荒联机版Mod开发中的modmain.lua环境与核心API,详细讲解环境表构建原理、API注册与调用时机,并提供高级开发技巧与最佳实践。通过源码分析和实际案例,帮助开发者掌握Mod开发核心技术,解决常见问题,提升开发效率与代码质量。

weixin_30312563的博客 432

OpenMythos深度解析

本文深入解析了kyegomez/OpenMythos项目如何从第一性原理重建Claude Mythos的核心架构。该项目并非直接复制Claude,而是基于公开论文和实验结果推测其可能的设计理念,构建了包含多模态注意力、深度推理引擎、知识检索模块等六大核心组件的模块化架构。重点剖析了分组查询注意力(GQA)的实现细节,展示了KV头扩展等关键技术。该项目已成为大模型开源社区最受关注的研究之一,为理解Claude的架构思想提供了有价值的参考。

Crown_22的博客 518

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

理解ADC:为什么需要抗混叠滤波器?

本文介绍 ADC 的混叠现象,引出抗混叠滤波器,并介绍一种开关电容滤波器,它具有很小的增益过渡带。

疯狂的运放 5937

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

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

weixin_36074800的博客 746

保姆级避坑指南:用Docker在Ubuntu 22.04上部署Isaac Sim 5.1.0,搞定宇树G1仿真环境

本文提供了一份详细的保姆级避坑指南,帮助用户在Ubuntu 22.04上通过Docker部署Isaac Sim 5.1.0,并成功搭建宇树G1仿真环境。文章涵盖了环境准备、Docker与NVIDIA容器工具包的配置、Isaac Sim镜像的定制化拉取与配置,以及宇树G1仿真环境的实战调试,旨在帮助开发者高效解决部署过程中的常见问题。

weixin_33728268的博客 207

华为OD机考双机位C卷 - 完美走位 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 完美走位(OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 1125

使用C#调用Yolo26模型的ONNX

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

At02i663F的博客 367

rk3568 rk628桥片 rgb2hdmi

RK628 是瑞芯微全新推出的视频桥接芯片,支持丰富的显示接口,支持高分辨率大屏产品转换需求。基于DRM、FB的显示框架易于使用。 输入信号支持:HDMI、RGB、BT.1120,输出信号支持 HDMI、GVI、Dual LVDS、Dual MIPI、MIPI-CSI、RGB、BT.1120,最高支持4K 60fps 输入/输出转换,并且支持输入到输出 1/4~4倍的缩放。

weixin_35723192的博客 450

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

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

CYD的博客 315

基于STM32设计的电能质量控制系统_353

本项目基于STM32F103RCT6微控制器设计了一套电能质量控制系统,实现了对火焰、烟雾、环境温湿度、电压、电流及功率等多项参数的实时监测与报警。系统通过MQ2烟雾传感器、火焰传感器、SHT30温湿度传感器及电力参数采集模块采集数据,采用高电平触发有源蜂鸣器进行异常报警。采集的数据通过ESP8266无线模块以AP+TCP模式上传至基于Qt开发的手机APP和电脑上位机,实现远程实时监控和历史数据管理。系统配备1.44寸LCD显示屏,实现本地数据显示。软件采用Keil5开发,采用寄存器编程方式,提高系统响应速

253

YOLOv11改进 - 卷积Conv | PConv(Pinwheel-shaped Conv): 风车状卷积用于红外小目标检测 | AAAI 2025

本文介绍了风车状卷积(PConv)和基于尺度的动态(SD)损失在YOLOv11中的结合应用。PConv采用不对称填充,通过特殊结构设计、卷积运算和分组卷积技术,能更好地适应红外小目标的像素高斯空间分布,在少量增加参数的情况下极大扩展感受野。SD损失可根据目标大小动态调整尺度和位置损失的影响。我们将PConv集成到YOLOv11的主干网络低层,并在相关配置文件中进行设置。实验证明,YOLOv11 - PConv在IRSTD - 1K和SIRST - UAVB数据集上取得显著性能提升,验证了方法的有效性和泛化能

魔改工程师的博客 1334

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

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

weixin_42605397的博客 1094

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

轻松将 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

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

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

weixin_42513928的博客 961

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、付费专栏及课程。

余额充值