TensorRT yolov4 yolov4-tiny yolov5
软硬件环境
Jetson Nano 4G
JP 4.4.1
CUDA 10.2
TensorRT 7.1.3.0
Pytorch 1.6.0
参考大佬项目
https://github.com/enazoe/yolo-tensorrt作者封装了模型的转换
https://github.com/wang-xinyu/tensorrtx
https://github.com/jkjung-avt/tensorrt_demos
简要流程
使用模型框架不同主要使用了pytorch和darknet。
Darknet → ONNX → TensorRT
PyTorch → ONNX/WTS → TensorRT
注意要点
1.CMakelist.txt中TensorRT链接地址。
2.CMakelist.txt中CUDA链接地址。
3.CUDA TensorRT环境变量。
4.Yolov4/v4-tiny 中cfg中batch设置(batch 1或4)。
5.Yolov5 版本和PyTorch版本的对应(Yolov5 v3.1 pytorch 1.6)。
操作流程
只要环境正常,操作上不复杂,使用大佬的封装好了的方法。
git clone https://github.com/enazoe/yolo-tensorrt.git
cd yolo-tensorrt/
mkdir build
cd build/
cmake ..
make
./yolo-trt
注意:目前主版本支持的yolov5为3.0版本,编译之前修改samples/sample_detector.cpp内需要推理的模型如下:
附上yolov4-tiny运行图片,大约推理耗时36—40ms左右:
记录遇坑
本人把下面nvcc目录添加进/etc/environment文件下,就可以了。
CUDACXX=/usr/local/cuda-10.2/bin/nvcc
推理速度记录
系统 | 模型 | 框架 | 输入 | 精度 | 时间(ms) |
---|---|---|---|---|---|
JP4.3 | yolov5s v1.0 | PyTorch 1.4 | 416*416 | — | 60~80 |
JP4.4.1 | yolov4 | Tensorrt 7.13.0 | 416*416 | FP16 | 280 |
JP4.4.1 | yolov4 | Tensorrt 7.13.0 | 416*416 | FP32 | 380 |
JP4.4.1 | yolov4-tiny(batch 1) | Tensorrt 7.13.0 | 416*416 | FP16 | 45 |
JP4.4.1 | yolov4-tiny(batch 4) | Tensorrt 7.13.0 | 416*416 | FP16 | 38 |
JP4.4.1 | yolov5s v3.1 | Tensorrt 7.13.0 | 608*608 | FP16 | 110~130 |
JP4.4.1 | yolov5s v3.1 | PyTorch 1.6 | 608*608 | — | 170~210 |
JP4.4.1 | yolov5s v3.1 | PyTorch 1.6 | 416*416 | — | 120~140 |
不知道为何yolov5s v1.0版本直接在nano JP4.3上能跑100ms以内,如有有了解的大佬请告知一下哈。