yolov9 tensorrt推理结果全为None

  使用yolov9源码自带export.py函数将pt转为onnx和engine。在写部署代码时,发现使用python写推理代码,无论是fp32还是fp16的engine,最后结果都可以正常输出,但是在使用c++写同样的推理代码时发现使用fp32的engine作为引擎,推理结果正常。而使用fp16的engine作为推理引擎时,输出结果全为nan和0值。已知的是TensorRT版本一致。c++上fp32的engine正常输出,说明代码中预处理没问题,问题肯定就出在转出的engine上。

  基于上述问题,我尝试以下几种方式:(1) 使用开源的基于yolov9的c++版推理代码,进行测试,发现结果认为nan值;(2) 使用预训练模型转为fp16-engine进行推理,发现结果仍为nan;(3) 尝试换用trtexec命令直接转fp16-engine,发现结果认为nan;(4) 最后我发现在使用export.py转onnx和engine时,因为要转为fp6格式,故参数里设置half为True,它会先将加载的pt模型截断到fp16范围内,再进行后续操作。这让我想起之前在转其他模型时这个地方同样出过错,故这里使用export.py转onnx,并将half设为False。转为onnx后再使用trtexec转为fp16范围内的engine。再次推理发现,结果正常输出。
  问题是解决了,但是我目前还不知道为什么,有知道的友友吗?

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于使用YoloV7和TensorRT进行推理的问题,我可以为您提供一些基本的指导。以下是一个简单的步骤: 1. 首先,您需要从YoloV7的库或项目中获取预训练的权重文件和配置文件。 2. 使用TensorRTPython API,您可以将YoloV7模型转换为TensorRT引擎。首先,您需要创建一个TensorRT的Builder对象,然后设置一些重要的参数,例如最大批处理大小(max batch size)和最大工作空间大小(max workspace size)。接下来,您需要创建一个TensorRT网络(network),并将YoloV7模型加载到网络中。最后,使用Builder对象将网络转换为TensorRT引擎。 3. 在推理之前,您需要准备输入数据。根据YoloV7的要求,输入数据通常是图像。您可以使用OpenCV或其他图像处理库加载和预处理输入图像。 4. 在TensorRT引擎上执行推理。通过创建一个TensorRT的执行上下文(execution context),您可以将输入数据传递给引擎,并获取输出结果。输出结果通常是检测到的对象的边界框(bounding boxes)和分类信息。 5. 对于检测到的对象,您可以根据需要进行后处理,例如非最大抑制(non-maximum suppression),以过滤掉重叠的边界框或设置阈值来筛选掉低置信度的检测结果。 这只是一个大致的流程,具体的实现细节可能会因您所使用的库和环境而有所不同。希望这些信息能对您有所帮助!如需进一步指导,请提供更具体的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值