YOLOv7 已经出来一段时间了,之前一直没有时间去看。最近抽空学习了一下,不禁感慨一下,现在的 YOLO 系列目标检测算法真是卷成麻花了,各种算法层出不穷,让人目不暇接。最重要的是,我感觉自己学不动了......

之前 YOLOX YOLOv6 出来后,我分别写了文章介绍如何使用 TensorRT C++ 接口部署这两个模型,并且把代码放在了 gitee 上,感兴趣的可以参考下面的链接:

如何用TensorRT部署YOLOv6

如何用TensorRT部署YOLOX

本文将介绍如何用 TensorRT C++ 接口部署 YOLOv7

1. 下载 PyTorch 模型

YOLOv7 PyTorch 模型可以从 官方GitHub仓库 Releases 中下载,目前的版本号为 v0.1 。下面的操作是下载 yolov7.pt 模型:

wget -c https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt

2. 转换为ONNX模型

下载好PyTorch格式的模型文件后,可以用官方提供的脚本转换为ONNX模型:

python export.py --weights ./yolov7.pt --grid --simplify --img-size 640 640

官方的脚本还提供把NMS操作集成到ONNX模型中的功能,我个人不太想这么做,感兴趣的读者可以试一下。

上面的操作导出的ONNX模型已经把后处理操作集成到了模型中,下图红框中的操作就是把模型三个检测头输出的内容经过处理后再汇总到一起作为输出,这样做的好处是可以避免自己去写复杂的后处理代码。

3. 基于TensorRT部署ONNX模型

如何使用TensorRTC++接口部署ONNX模型可以参考我之前给【自动驾驶之心】公众号写的这篇文章:手把手教学!TensorRT部署实战:YOLOv5的ONNX模型部署

这篇文章以YOLOv5为例,通过大量的代码一步步讲解如何使用TensorRT框架部署ONNX模型,主要目的是希望读者能够通过这篇文章学习到TensorRT模型部署的基本流程,比如如何准备输入数据、如何调用API用模型做推理、如何解析模型的输出结果。相信看完这篇文章的读者 已经基本掌握使用TensorRT部署ONNX模型的基本方法,并且能做到举一反三自己部署其他模型了,比如YOLOXYOLOv6YOLOv7等等。

我就来说一下重点吧,重点就是这篇文章的代码可以直接拿来部署YOLOv7

既然这样,本文就不再重复叙述了。如果还没有看这篇文章的话,那就赶紧点击上面的链接查看吧。

yolov7.onnx模型测试的几个结果如下:

下面是跑视频的结果:

基于TensorRT部署的YOLOv7模型,来看下效果怎么样

在我的GeForce GTX 1050 Ti显卡(只支持FP32)上测试各个模型的耗时如下表所示:

模型输入尺寸耗时
yolov7-tiny.onnx640x6408 ms
yolov7.onnx640x64066 ms
yolov7x.onnx640x640113 ms
yolov7-w6.onnx640x64056 ms
yolov7-e6.onnx640x64083 ms
yolov7-d6.onnx640x640108 ms
yolov7-e6e.onnx640x640126ms

换到装了GeForce RTX 3070显卡(支持FP32FP16)的服务器上去试一下:

模型输入尺寸模型精度耗时
yolov7-tiny.onnx640x640FP322 ms
yolov7.onnx640x640FP3213 ms
yolov7x.onnx640x640FP3220 ms
yolov7-w6.onnx640x640FP3212 ms
yolov7-e6.onnx640x640FP3217 ms
yolov7-d6.onnx640x640FP3221 ms
yolov7-e6e.onnx640x640FP3225ms
yolov7-tiny.onnx640x640FP161 ms
yolov7.onnx640x640FP166 ms
yolov7x.onnx640x640FP169 ms
yolov7-w6.onnx640x640FP166 ms
yolov7-e6.onnx640x640FP167 ms
yolov7-d6.onnx640x640FP169 ms
yolov7-e6e.onnx640x640FP1610ms

果然在高级显卡上就是跑得快呀,等我有钱了一定要去换个好点的显卡!

没啥好总结的,对于这种优秀的开源工作,我只能用两个字来评价:真香!

  • 开发者故事 #8 微软 New Bing AI 申请与使用保姆级教程
  • 手把手教你注册和使用ChatGPT
  • 私信