手把手教程 | 如何用TensorRT部署YOLOv7

作者 | 一天到晚潜水的鱼  编辑 | 汽车人

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【模型部署】技术交流群

后台回复【模型部署工程】获取基于TensorRT的分类、检测任务的部署源码!

前言

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

e88d4edf8330e4456c8b116bf3f5eda6.png

之前YOLOXYOLOv6出来后,我分别写了文章介绍如何使用TensorRTC++接口部署这两个模型,并且把代码放在了gitee上。

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

实现过程

「1. 下载PyTorch模型」

YOLOv7PyTorch模型可以从官方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模型已经把后处理操作集成到了模型中,下图红框中的操作就是把模型三个检测头输出的内容经过处理后再汇总到一起作为输出,这样做的好处是可以避免自己去写复杂的后处理代码。

0caa7aff97ad78b046554c4ef0d3aba1.png

「3. 基于TensorRT部署ONNX模型」

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

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

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

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

结果

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

670ce75cbb702ebb087f988fff84fded.jpeg 59ba92d74a119fc46e0464aecb1fea34.jpeg 11704bfc9608e5657aaacfd2b4ff9ff8.jpeg

下面是跑视频的结果:

在我的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

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

总结

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

5b2244fc519d547a85e9d36c97a720bd.png

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;

948f8a864337803063b6cd3f0b3c6546.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

20a93b179372eac9e73ac236dc3647c5.jpeg

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值