YoloV3 TensorRT + deepsort 目标跟踪 加速

时间:2024-05-23 19:33:18

前言

知乎原文

最近刚好需要利用目标跟踪整一些项目, 于是不太熟悉tensorflow的我找了一下torch的实现,不过找到的项目还是最基本的yolov3或者tiny的实现, 在速度上稍微慢一些, 实际在nano上实测约750ms左右的速度, 于是就启动了这个加速版本yolov3搭配deepsort的推断项目, 这篇文并不会说明完整的实现过程, 只会说明到一些实现的步骤

运行环境

  1. JetsonNano, 这里其实一般的x64结构都可以运行的, 而且速度一定更快
  2. Jetpack 自带TensorRT 5.1.6.1
  3. onnx 1.4.0 , 这里1.4.1也是可以的 注意就这两个版本 其余都不要 !

简要的实现概述

  1. 利用onnx将darknet权重输出为onnx格式, 这部分利用原先tensorrt自带的sample即可完成, 但不同的是我的文件支持python3, github上很多转换文件必须用的python2, 太麻烦
  2. 利用tensorRT将输出后的onnx转换为engine, 同样利用trt官方sample可完成
  3. 保持原来TensorRTsample 的preprocess, postprocess部分, 其中postprocess做了一些修改为了将输出与deepsort的postprocess进行合并, 否则会有bbox偏移的问题
  4. OpenCV实现支持onboard webcam / usb webcam / video tracking

速度表现

这里速度评测都是从摄像头截取第一帧之后开始, 到最终整个deepsort图像后处理完, 而不是单纯计算检测backbone的时间

Backbone before TensorRT TensorRT(detection + tracking) FPS(detection + tracking)
Yolov3_416 750ms 450ms 1.5 ~ 2
Yolov3-tiny-416 N/A 100-150ms 8 ~ 9

如果单纯计算img从输入到engine到engine输出的情况下, end-to-end的速度如下

Backbone before TensorRT TensorRT(detection)
Yolov3_416 N/A 250ms
Yolov3-tiny-416 N/A 35ms

接下来就看一下实际路上追踪行人的效果, 我觉得是非常不错的

实现效果:

检测路上的行人效果是很好的,看完整视频的效果移步到bilibili
YoloV3 TensorRT + deepsort 目标跟踪 加速
YoloV3 TensorRT + deepsort 目标跟踪 加速

项目地址

tracklite 觉得有用可以小小的star please

任何问题欢迎issue, 也欢迎一起交流讨论工程上的一些实现

后续

接下来还是会继续更新一下关于x64结构上的实现, 继续评测一下速度的表现

还有最重要的 继续挖掘强大的跟踪算法融入到项目中, 并且得支持tensorRT才可以

写些打加啦

知乎原文