前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【目标检测】YOLOv5推理加速实验:TensorRT加速

【目标检测】YOLOv5推理加速实验:TensorRT加速

作者头像
zstar
发布2023-04-12 10:35:34
1.3K0
发布2023-04-12 10:35:34
举报
文章被收录于专栏:往期博文

前言

前两篇博文分别讨论了YOLOv5检测算法的两种加速思路:采用多进程或批量检测,不过效果均收效甚微。本问将讨论使用TensorRT加速以及半精度推理/模型量化等优化策略对检测加速的实际影响。

测试环境

测试图片分辨率:13400x9528

GPU:RTX4090

Cuda:11.7

YOLOv5版本:最新版(v7.0+)

检测策略:将整张图片直接设置img_size为(1280x1280)进行检测(忽略精度,只注重速度)

环境搭建

关于TensorRT的安装在之前博文【目标检测】使用TensorRT加速YOLOv5中已经写过,这里不作赘述。

Tensort模型转换

运行export.py即可将pt模型转换成Tensort(.engine)格式,主要需要改两个参数:

代码语言:javascript
复制
--imgsz : default=[1280, 1280]
--include :engine
--device : 0

实验结论

下面是选用两张13400x9528进行检测,下表是检测结果:

模型名称

检测时间(s)

yolov5n.pt

2.279

yolov5n.engine

2.199

yolov5s.pt

2.368

yolov5s.engine

2.232

可以发现,检测速度是有一定提升的,不过似乎并不明显。

YOLOv5最新版本可以将检测前后三个步骤(预处理、推理、非极大化抑制)分别统计时间,yolov5s.pt和yolov5s.engine的时间如下:

yolov5s.pt Speed: 1.0ms pre-process, 19.5ms inference, 1.5ms NMS per image at shape (1, 3, 1280, 1280) yolov5s.engine Speed: 270.5ms pre-process, 3.0ms inference, 2.0ms NMS per image at shape (1, 3, 1280, 1280)

可以看到,转成TensorRT之后,推理(inference)时间确实如某些资料所述,加速了五倍以上,但预处理时间却慢了不少。这背后的原因有待探究。

在转TensorRT模型过程中,有一些其它参数可供选择,比如,可以使用半精度推理和模型量化策略。

半精度推理即FP32->FP16,模型量化策略(int8)较复杂,具体原理可参考部署系列——神经网络INT8量化教程第一讲!

在模型转换过程中,设置参数--half--int8为True,即可使用这两个策略,相应会增加转换的时间,yolov5n模型转换大概耗时312.8s。

使用该策略后,提升效果还是比较明显的,速度较之前又肉眼可见得变快了。

模型名称

检测时间(s)

yolov5n.engine

1.586

yolov5s.engine

1.607

总结

本实验结果汇总如下表:

模型名称

单帧检测时间

单秒检测帧数

yolov5n.pt

1.140

0.878

yolov5n.engine

1.100

0.910

yolov5n.engine(量化后)

0.793

1.261

yolov5s.pt

1.184

0.845

yolov5s.engine

1.116

0.896

yolov5s.engine(量化后)

0.804

1.245

To do

在实验过程中发现了一个奇怪的现象,按理论来说,模型量化之后,模型体积估计会小不少,然而使用本文方法导出的TensorRT模型体积反而更大,有相关博文指出,使用本方法导出的TensorRT模型和使用Cmake编译形成的TensorRT模型存在效果差异,之后有时间会进一步进行探索(先挖个坑)。

参考资料

常规方法转TensorrRT:https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 测试环境
  • 环境搭建
  • Tensort模型转换
  • 实验结论
  • 总结
  • To do
  • 参考资料
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档