当前栏目
YOLOv5,YOLOv6,YOLOv7在TensorRT推理速度比较
点击上方蓝字关注我们
微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识
引言
这个周末两天把YOLOv5,YOLOv6,YOLOv7从训练到部署测试了一波,YOLOv6堪称Bug之王,如果没有点代码能力跟工程能力用就崩溃,YOLOv7模型太多让人眼花缭乱,对比论文宣传的各种速度快过YOLOv5,实测一言难尽,到处都是坑!
测试方式
我横向对比了 YOLOv5s、YOLOv6s、YOLOv7-tiny、YOLOv7 四个模型在TensorRT上的推理速度,首先当然是用各种官方的脚本导出ONNX格式模型,然后基于TensorRT8.4.x自带的工具模型转变转换为FP16半精度推理engine文件。
测试环境
Windows10 64BitVS2017专业版CUDA11.0.xTensorRT8.4.0.6Pytorch1.7.1+cu110Python3.6.5显卡RTX3050Ti
测试数据是同一段视频!
代码的前后处理完成重用!
01
TensorRT的engine文件生
YOLOv5s、YOLOv6s、YOLOv7-tiny、YOLOv7 四种文件都需要从pt转onnx,这步直接用各自的github脚本导出就好了,总体来说YOLOv5的脚本最容易使用,最人性化,其他两个开发文档跟Tag版本已经尼玛的严重不匹配。得到onnx格式文件,把这几个onnx文件都copy到安装好的TensorRT的bin目录下面,然后分别执行这几条命令行就可以转换生成engine文件了,命令行如下:
trtexec --onnx=yolov5s.onnx --saveEngine=yolov5s_16.engine --fp16trtexec --onnx=yolov6s.onnx --saveEngine=yolov6s_16.engine --fp16trtexec --onnx=yolov7-tiny.onnx --saveEngine=yolov7-tiny_16.engine --fp16trtexec --onnx=yolov7.onnx --saveEngine=yolov7_16.engine --fp16
每个大概需要3~5分钟左右完成转换,可能看显卡性能吧,在我笔记本上就是这个转换时间,
02
TensorRT上推理测试对比
转换好之后。就可以写程序测试了,因为我之前写好了一个YOLOv5s的TensorRT推理的C++类,我几乎全部重用了代码,很快就完成了YOLOv6s跟YOLOv7-tiny跟YOLOv7的TensorRT推理代码修改,然后测试结果截图如下:
YOLOv5s 最新版本6.x推理
YOLOv6s模型推理
YOLOv7-tiny模型推理
然后我还发现一个奇怪的现象,YOLOv7官方提供的对象检测模型不管什么时候,手里面那个东西就是检测说cellphone,可能社交媒体吹多了自带cellphone属性了。
这个是YOLOv7推理
就这速度论文也敢写超过YOLOv5!
总结
转换模型之后对比一下模型文件
你就会发现在这些FP16模型中,yolov5s模型是最小的,速度最快当之无愧,在精度方面跟YOLOv6s、YOLOv7-tiny、YOLOv7只有细微差异。然后综合我这两天完成这件事在YOLOv6、YOLOv7上遇到各种坑,我只能说搞工程选YOLOv5就对了,其他的都是嘴炮!工程化做的都是一塌糊涂,还有很大的改进空间。搞工程还是要脚踏实地,嘴炮一时爽,落地就死亡!
扫码获取YOLOv5 TensorRT INT8量化脚本与视频教程
扫码查看OpenCV+OpenVIO+Pytorch系统化学习路线图
推荐阅读
OpenCV4.5.4 人脸检测+五点landmark新功能测试
OpenCV4.5.x DNN + YOLOv5 C++推理
OpenCV4.5.4 直接支持YOLOv5 6.1版本模型推理
OpenVINO2021.4+YOLOX目标检测模型部署测试
比YOLOv5还厉害的YOLOX来了,官方支持OpenVINO推理
相关文章
- 服务器对cpu的性能要求比较高_服务器cpu家用缺点
- 10大机器学习算法,Python与R代码比较
- 记一道比较特别的『内存取证』题
- 比较MongoDB和MySQL:优势、劣势与适用场景(mongo与mysql)
- Linux 和 Niux:比较两个开源操作系统的优缺点(linuxniux)
- 比较Linux:利用diff命令(linuxdiff)
- 比较:Oracle与SAP的对比(oracle和sap)
- Linux分支:定义与比较(linux的分支)
- MySQL 存储引擎之比较(mysql存储引擎比较)
- MySQL表结构比较:轻松找出差异(mysql比较表结构)
- 比较Linux与VS2010的优势与劣势(linux vs2010)
- 比较直接内存与Redis的优势和劣势(直接内存还是redis)
- 比较本地缓存与Redis访问速度(本地缓存和redis速度)
- 比较拉锯本地数据库与Redis的速度比较(本地数据库快还是redis快)
- Tidb与Redis的比较开启创新的时代(tidb与redis)
- 利用Oracle数据库实现横向数据比较(oracle中的横向比较)
- Redis集群的优势与不足比较(redis 集群对比)
- Oracle 两张表的比较与分析(oracle 两张表对比)