关注
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。再次推理发现,结果正常输出。
  问题是解决了,但是我目前还不知道为什么,有知道的友友吗?

转载自CSDN-专业IT技术社区

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_44846512/article/details/138158790

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--