点击上方蓝字关注我们
微信公众号: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系统化学习路线图
推荐阅读
CV全栈开发者说 - 从传统算法到深度学习怎么修炼
2022入坑深度学习,我选择Pytorch框架!
Pytorch轻松实现经典视觉任务
教程推荐 | Pytorch框架CV开发-从入门到实战
OpenCV4 C 学习 必备基础语法知识三
OpenCV4 C 学习 必备基础语法知识二
OpenCV4.5.4 人脸检测 五点landmark新功能测试
OpenCV4.5.4人脸识别详解与代码演示
OpenCV二值图象分析之Blob分析找圆
OpenCV4.5.x DNN YOLOv5 C 推理
OpenCV4.5.4 直接支持YOLOv5 6.1版本模型推理
OpenVINO2021.4 YOLOX目标检测模型部署测试
比YOLOv5还厉害的YOLOX来了,官方支持OpenVINO推理