验证onnx格式的yolox

  • 转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 =
### 转换YOLOX模型为ONNX格式的方法 要将YOLOX模型转换为ONNX格式,可以按照以下方式操作。通常情况下,这涉及加载训练好的PyTorch权重并将它们导出到ONNX文件中。 以下是具体的命令和说明: #### 使用Python脚本完成转换 可以通过官方提供的工具或者自定义脚本来执行此过程。假设已经安装了必要的依赖项(如`torch`, `onnx`),则可以运行如下命令来完成转换[^3]: ```bash python tools/export_onnx.py \ -ckpt checkpoints/yolox_nano.pth \ -output_name yolox_nano.onnx \ --opset_version 11 \ --batch_size 1 \ --dynamic_axes False \ --input_shape 416,416 ``` 在此过程中: - `-ckpt`: 指定已训练的YOLOX PyTorch模型路径。 - `-output_name`: 输出的ONNX文件名。 - `--opset_version`: ONNX的操作集版本号,推荐设置为11或更高。 - `--batch_size`: 批量大小,默认设为1即可满足大多数需求。 - `--dynamic_axes`: 是否启用动态输入轴支持,如果不需要可将其置为False。 - `--input_shape`: 输入图像尺寸,需与实际应用一致。 #### 验证生成的ONNX模型 为了验证生成的ONNX模型是否正确无误,可以利用`onnxruntime`库对其进行推理测试。例如,使用下面的代码片段来进行简单的前向传播计算: ```python import cv2 import numpy as np import onnxruntime as ort def preprocess(image_path, input_shape=(416, 416)): image = cv2.imread(image_path) resized = cv2.resize(image, input_shape) normalized = resized.astype(np.float32) / 255.0 transposed = np.transpose(normalized, (2, 0, 1)) expanded = np.expand_dims(transposed, axis=0) return expanded session = ort.InferenceSession("yolox_nano.onnx") input_name = session.get_inputs()[0].name image_data = preprocess("test_image.jpg", input_shape=(416, 416)) outputs = session.run(None, {input_name: image_data}) print(outputs) ``` 以上代码实现了读取图片、预处理以及调用ONNX Runtime进行推断的功能。 --- #### 注意事项 在转换之前,请确认所使用的框架版本兼容性良好。比如,某些特定功能可能仅适用于较新的PyTorch版本。此外,在后续部署阶段可能会遇到其他问题,例如张量形状不匹配等问题,则需要仔细调整参数配置以适应目标平台的要求[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刀么克瑟拉莫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值