Yolov5-DeepSORT-TensorRT
![](https://i-blog.csdnimg.cn/direct/7bc65ff407c24ad791a9933f4cf1028b.gif)
本项目是 Yolo-DeepSORT 的 C++ 实现,使用 TensorRT 进行推理
🚀🚀🚀 开源地址:Yolov5_DeepSORT_TensorRT,求 star⭐ ~
引言
- ⚡ 实时性:推理速度可达25-30FPS
- 🔢 INT8量化:yolo使用INT8量化,量化模型可使用本文提供的 onnx 文件(见正文),或参考我的量化项目 yolov5_quant
- 🐳 快速搭建开发环境:提供了 dockerfile,使用方式见 docker 文件夹
- 📥 无需手动转换模型:下载并使用本文提供的 onnx 文件(见正文),在程序运行时会自动解析 onnx 并序列化出 engine 文件(*.trtmodel)到 workspace 目录下
我的另一个 PyTorch 版本的实现,含撞线检测,可对行人进行计数,开源地址:Yolov5_Deepsort_Person_Count
一、快速使用
💻 环境配置
推荐参考项目内的 README 使用Docker容器,或参考下方自行配置:
- python: 3.8
- cuda: 11.2
- cudnn: 8.2.2.26
- tensorRT: 8.0.3.4
- protobuf: 3.11.4
📥 下载视频&模型
下载本项目并进入目录:
git clone https://github.com/Tongkaio/Yolov5_DeepSORT_TensorRT.git
cd Yolov5_DeepSORT_TensorRT
创建工作目录:
mkdir workspace
下载文件到 workspace 目录下:
文件 | 链接 |
---|---|
*.onnx, test.mp4 | 下载 (提取码: zxao) |
- yolov5s.onnx 导出自 yolov5-6.0,deepsort 的 onnx 导出自 deep_sort_pytorch,可参考脚本 exportOnnx.py
- yolov5s_ptq(_nosens).onnx 是量化模型,参考 yolov5_quant
🏃 运行
修改 MakeFile 中的相关头文件和库文件路径(若使用本项目提供的 docker 则不需要),然后执行:
make run
项目运行时将显示推理结果,按 ESC 退出。
目前在 GeForce RTX 2060 上,推理 test.mp4 的速度约为 40 ms/帧,满足实时性要求。
二、文件说明
-
Infer、Yolo 和 DeepSORT 使用接口模式和 RAII 进行封装:
- infer.h, yolo.h,deepsort.h 仅暴露
create_*
和推理接口 - 使用
create_*
创建对象实例,将自动解析 onnx 文件,生成 engine 并加载
- infer.h, yolo.h,deepsort.h 仅暴露
-
infer.cpp: 分四个线程,两两之间为生产者-消费者关系:
三、项目参考
本项目构建过程中参考了以下优秀的开源项目,在此对这些项目的作者表示感谢:
- https://github.com/GesilaA/deepsort_tensorrt
- https://github.com/onnx/onnx-tensorrt/tree/release/8.0
- https://github.com/shouxieai/tensorRT_Pro