onnx 转换trt出现runtime/api/executionContext.cpp::validateInputBindings

部署运行你感兴趣的模型镜像

报错描述

我在运行代码时出现了这个问题

[08/27/2025-11:28:52] [E] [TRT] 3: [executionContext.cpp::validateInputBindings::1838] Error Code 3: API Usage Error (Parameter check failed at: runtime/api/executionContext.cpp::validateInputBindings::1838, condition: profileMaxDims.d[i] >= dimensions.d[i]. Supplied binding dimension [3,3,128,64] for bindings[0] exceed min ~ max range at index 0, maximum dimension in profile is 1, minimum dimension in profile is 1, but supplied dimension is 3.

我的 deepsort.onnx是INPUTS是
name: input
tensor: float32[batch_size,3,128,64]
在这里插入图片描述

我转换onnx的命令是

trtexec --onnx=deepsort.onnx \
 --saveEngine=deepsort.trt. \
 --plugins=/home/perception/xxx_workspace/lib/linfer/x86/155152215/lib/liblinfer.so \
 --fp16

问题分析

这是使用 trtexec 转换 Deepsort 的 ONNX 模型到 TensorRT 引擎时遇到的错误,通常是因为动态维度(dynamic dimensions)没有正确设置,特别是 batch_size 这个维度。错误信息明确提示输入绑定的维度 [3,3,128,64] 超出了你在转换时指定的 profile 范围(当前 profile 只允许 batch_size 为 1,但你试图传入 3)。简单讲就是输入跟踪的不是1个框,而是变成了多个。就会触发该问题。

解决方案

正确设置动态形状

你需要使用 trtexec 的 --minShapes, --optShapes, 和 --maxShapes 参数来明确指定输入维度(这里是 batch_size)的最小、最优和最大值。
根据你的输入 float32[batch_size,3,128,64],一个可能的转换命令修改如下:

trtexec --onnx=deepsort.onnx \
--saveEngine=deepsort.trt \
--plugins=liblinfer.so \
--fp16 \
--minShapes=input:1x3x128x64 \    # batch_size 最小为1
--optShapes=input:4x3x128x64 \    # batch_size 最优为4(根据你的常见批次大小调整)
--maxShapes=input:20x3x128x64     # batch_size 最大为20(根据你的需求调整)

您可能感兴趣的与本文相关的镜像

TensorRT-v8.6

TensorRT-v8.6

TensorRT

TensorRT 是NVIDIA 推出的用于深度学习推理加速的高性能推理引擎。它可以将深度学习模型优化并部署到NVIDIA GPU 上,实现低延迟、高吞吐量的推理过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

翟羽嚄

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

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

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

打赏作者

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

抵扣说明:

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

余额充值