前言
最近刚好需要利用目标跟踪整一些项目, 于是不太熟悉tensorflow的我找了一下torch的实现,不过找到的项目还是最基本的yolov3或者tiny的实现, 在速度上稍微慢一些, 实际在nano上实测约750ms左右的速度, 于是就启动了这个加速版本yolov3搭配deepsort的推断项目, 这篇文并不会说明完整的实现过程, 只会说明到一些实现的步骤
运行环境
- JetsonNano, 这里其实一般的x64结构都可以运行的, 而且速度一定更快
- Jetpack 自带TensorRT 5.1.6.1
- onnx 1.4.0 , 这里1.4.1也是可以的 注意就这两个版本 其余都不要 !
简要的实现概述
- 利用onnx将darknet权重输出为onnx格式, 这部分利用原先tensorrt自带的sample即可完成, 但不同的是我的文件支持python3, github上很多转换文件必须用的python2, 太麻烦
- 利用tensorRT将输出后的onnx转换为engine, 同样利用trt官方sample可完成
- 保持原来TensorRTsample 的preprocess, postprocess部分, 其中postprocess做了一些修改为了将输出与deepsort的postprocess进行合并, 否则会有bbox偏移的问题
- 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
项目地址
tracklite 觉得有用可以小小的star please
任何问题欢迎issue, 也欢迎一起交流讨论工程上的一些实现
后续
接下来还是会继续更新一下关于x64结构上的实现, 继续评测一下速度的表现
还有最重要的 继续挖掘强大的跟踪算法融入到项目中, 并且得支持tensorRT才可以
写些打加啦