记录原因:
- 因前面完成了yolov4-tiny源码的部署,可以跑到50FPS。但那个跑的是别人的模型,可以识别80类,但是在特定的情况下比如识别螺丝螺帽,只需要两种,在训练的时候直接把种类改掉就好了,但是在Jetson Xavier NX上应该怎么利用TensorRT进行加速的(未进行加速的推大概在5.XFPS,根本无法满足实际应用的需要),所以本文主要是解决“训练完成后得到pth如何在Jetson板子上利用TensorRT进行加速”
- 我们在部署的时候一般的模型格式转化为:Pytorch -> onnx -> trt
一、pytorch转onnx
- pytorch转onnx的部分,参考下面网址,博主在测试predict有pth转onnx的函数,咱们直接调用即可:
bubbliiiing/yolov4-tiny-pytorch - 如果要查看转换完成的onnx网络,可使用下面的工具导入查看netron -onnx网络查看工具
- 经函数测试,我们可以把onnx拷贝到jetson板子上。
二、onnx转trt
- 这部分的话有两种方式:
- 通过官方提供给我们的工具trtexec工具,此处转换是可以成功,但是我没有找到可以运行推理trt的代码,参考那些网上的一些trt推理的代码经常会报错;
- 第二种方式当然就是大佬们的封装了,我参考了下面博主的代码:
TensorRT部署 Jetson可用,这个工程文件里面提供了weight --> onnx,onnx–>trt的两种文件,同时也还有trt的推理程序。
因为大佬们已经做了很多封装工具,像我这种小菜鸡就直接用了。
python3 onnx_to_tensorrt.py -m models --verbose
其中,models表示的onnx的名称,省略了.onnx, --verbose表示我想看到具体的一些日志信息(如果没有的话,可以就会感觉等很久,但是实际也是运行的)
- 3.需要种类名称,因为我们这个是只有2类模型,而原生的yolov4-tiny有80类,所以需要我们修改下名称:具体文件的名字路径为: tensorrt_demos/utils/yolo_classes
ls -l /dev/video*
- 5.运行trt_yolo.py推理文件即可实现推理,5表示摄像头标号:
python3 trt_yolo.py --usb 5 -m models
- 6.查看效果(帧率可到达55FPS左右):
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)