报错描述
我在运行代码时出现了这个问题
[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(根据你的需求调整)
1164

被折叠的 条评论
为什么被折叠?



