『深度应用』YoloV5 RTX2080Ti TX2 Nano NGX TensorRT与PyTorch速度对比

2,132 阅读3分钟

欢迎大家关注小宋公众号《极简AI》-- 基于深度学习的理论学习与应用开发技术分享,笔者会经常分享深度学习干货内容,大家在学习或者应用深度学习时,遇到什么问题也可以与我在上面交流知无不答。

1. 概述

更新:增加在英伟达 TX2 平台的测试速度,TX2 平台平均耗约 42ms,相较于 RTX2080Ti 速度慢了 7 倍(42ms/6ms)。

增加在英伟达 Nano 平台的测试速度,Nano 平台平均耗时约 120ms,相较于 RTX2080Ti 速度慢了 20 倍(120ms/6ms)。

增加在英伟达 NGX 平台的测试速度,NGX 平台平均耗时约 15ms,相较于 RTX2080Ti 速度慢了 2.5 倍(15ms/6ms)。

此次实验是为了探究 YoloV5 在 RTX2080Ti 平台上使用 TensorRT 对于模型推理的加速效果,同时也比对一下 RTX2080Ti 平台上 GPU 对于 i7-8700 CPU 的加速。

照例先提出来实验硬件环境:

  • 系统:Ubuntu 18.04.3 LTS
  • CPU:Intel® Core™ i7-8700 CPU @ 3.20GHz × 12
  • GPU:GeForce RTX 2080Ti
  • Cuda:10.1
  • Pytorch:1.5.0
  • TensorRT:7.1.0

2. 实验

实验参考代码如下:

PyTorch 模型训练与推理代码:

github.com/ultralytics…

TensorRT7 模型转换与推理代码:

github.com/wang-xinyu/…

1.i7-8700 CPU&PyTorch 推理实验

输入尺寸:576x960

CUDA_VISIBLE_DEVICES=-1 python detect.py --weights  runs/hm960_945/weights/best.pt  --img 960 --conf 0.15 --source  data/hels/testimgs/

输出平均耗时:420ms ;GPU 占用:0MB

image 1/8 /home/song/code/yolov5/data/hels/testimgs/lADPD26eMep_iEjNBDjNB4A_1920_1080.jpg: 576x960 1 hs, Done. (0.511s)
image 2/8 /home/song/code/yolov5/data/hels/testimgs/lADPD26eMep_iEnNBDjNB4A_1920_1080.jpg: 576x960 1 ns, 1 hs, Done. (0.481s)
image 3/8 /home/song/code/yolov5/data/hels/testimgs/lADPD2eDNKD3Ng7NBDjNB4A_1920_1080.jpg: 576x960 2 ns, 2 hs, Done. (0.416s)
image 4/8 /home/song/code/yolov5/data/hels/testimgs/lADPD2sQs0W5CEfNBDjNB4A_1920_1080.jpg: 576x960 2 ns, Done. (0.422s)
image 5/8 /home/song/code/yolov5/data/hels/testimgs/lADPD3lGrdjbTqnNBDjNB4A_1920_1080.jpg: 576x960 1 hs, Done. (0.441s)
image 6/8 /home/song/code/yolov5/data/hels/testimgs/lADPD3zULH2hzqjNBDjNB4A_1920_1080.jpg: 576x960 1 ns, 2 hs, Done. (0.963s)
image 7/8 /home/song/code/yolov5/data/hels/testimgs/lADPD4PvKccrNg_NBDjNB4A_1920_1080.jpg: 576x960 1 ns, Done. (0.448s)
image 8/8 /home/song/code/yolov5/data/hels/testimgs/lADPD4d8qGv1TqvNBDjNB4A_1920_1080.jpg: 576x960 2 ns, 3 hs, Done. (0.417s)

2.RTX 2080Ti GPU&PyTorch 推理实验

输入尺寸:576x960

CUDA_VISIBLE_DEVICES=0 python detect.py --weights  runs/hm960_945/weights/best.pt  --img 960 --conf 0.15 --source  data/hels/testimgs/

输出平均耗时:12ms GPU 占用:1000MB

image 1/8 /home/song/code/yolov5/data/hels/testimgs/lADPD26eMep_iEjNBDjNB4A_1920_1080.jpg: 576x960 1 hs, Done. (0.012s)
image 2/8 /home/song/code/yolov5/data/hels/testimgs/lADPD26eMep_iEnNBDjNB4A_1920_1080.jpg: 576x960 1 ns, 1 hs, Done. (0.014s)
image 3/8 /home/song/code/yolov5/data/hels/testimgs/lADPD2eDNKD3Ng7NBDjNB4A_1920_1080.jpg: 576x960 2 ns, 2 hs, Done. (0.015s)
image 4/8 /home/song/code/yolov5/data/hels/testimgs/lADPD2sQs0W5CEfNBDjNB4A_1920_1080.jpg: 576x960 2 ns, Done. (0.011s)
image 5/8 /home/song/code/yolov5/data/hels/testimgs/lADPD3lGrdjbTqnNBDjNB4A_1920_1080.jpg: 576x960 1 hs, Done. (0.011s)
image 6/8 /home/song/code/yolov5/data/hels/testimgs/lADPD3zULH2hzqjNBDjNB4A_1920_1080.jpg: 576x960 1 ns, 2 hs, Done. (0.012s)
image 7/8 /home/song/code/yolov5/data/hels/testimgs/lADPD4PvKccrNg_NBDjNB4A_1920_1080.jpg: 576x960 1 ns, Done. (0.014s)
image 8/8 /home/song/code/yolov5/data/hels/testimgs/lADPD4d8qGv1TqvNBDjNB4A_1920_1080.jpg: 576x960 2 ns, 3 hs, Done. (0.011s)

3.RTX 2080Ti GPU&TensorRT7 推理实验

输入尺寸:576x960

./yolov5m -d ../testimgs/
503ms
6ms
6ms
5ms
6ms
6ms
6ms
5ms

 输出平均耗时:6ms GPU 占用:700MB

3. 总结

通过这个对比实验可以发现:

1.RTX2080Ti 相较于 i7-8700 CPU 速度提升非常明显(420ms-->12ms),速度提升了 35 倍

2.TensorRT7 相较于 PyTorch 在相同环境下也有不错的速度提升(12ms-->6ms),速度提升了 1 倍的同时,GPU 显存占用(1000MB-->700MB)也降低了 30%。也能保证推理的精度基本不变(1% 的波动,在可接受范围)。

3. 对于端测设备如 TX2 与 Nano,相较于 i7-8700 CPU 速度提升数倍,但是较 2080Ti 速度的下降还是明显的,NGX 平台下降不明显 2 倍多,对实时性要求高时可以选配。

-1. 参考

分类网络对比实验:

blog.csdn.net/herr_kun/ar…

实验参考开源:

YoloV5:github.com/ultralytics…

TensorRTX:github.com/wang-xinyu/…