项目链接:GitHub - chenming1656161936/CM_StrongSORT-YOLO-main: 使用tensorrt对YOLOv5检测进行加速,再用StrongSORT作为跟踪器进行跟踪,其中添加count和draw功能
首先安装环境pip install -r requirements.txt然后后cd yolov5安装YOLOv5的环境同样是pip install -r requirements.txt
接下来将yolov5*.pt文件转化为tensorrt能够运行的格式
cd yolov5
python export.py --weights yolov5*.pt --include engine --imgsz 640 640 --device 0
注意这里的--imgsz tensorrt转化的格式中设置的图像大小为多少,进行检测的时候用.engine文件
设置的图像大小就是多少。也就是说导出模型设置的图像大小要和detect时候设置的图像大小一样
生成完.engine文件以后就可以直接将原来检测时候用的.pt文件直接换成对应的.engine文件
然后就进行跟踪
文档中的track_v5.py是根据原始YOLOv5中detect.py文件改的,可以对比一下有很多都是相同的
这里面主要的区别可以自己观察
StrongSORT相关代码都存放在strong_sort文件夹中
StrongSORT代码解读可以参考这篇博客StrongSORT(deepsort强化版)浅实战+代码解析_weixin_50862344的博客-CSDN博客
接下来进行 track_v5.py的使用
这里面的参数设置和YOLOv5当中的是一样的
我们只需要用到哪个在终端中就使用哪个就行
其中--yolo-weights 设置的是检测器的权重文件
--strong-sort-weights 设置的是StrongSORT中提取特征的CNN权重,这里我们使用osnet_x0_25_msmt17.pt这个文件,它存放在weights文件夹中
--source就是你要检测的视频源
--imgsz就是进行检测时候的图像大小
--show-vid就是在进行检测的过程中显示画面
--save-txt就是储存一个txt文件这个文件当中记录的分别是帧数、类别、跟踪时候的ID、边界框的最左边、边界框的最上面、边界框的宽、边界框的高、-1,-1,-1,-1
--save-vid保存生成的视频结果
--count这个参数要配合--save-txt去使用,这个是记录跟踪的类别出现的次数统计,并在视频的左上角进行显示
--draw这个就是绘制目标的运动轨迹这个原理很简单,就是通过cv去绘制框的中点轨迹
--classes这个是可以指定检测的类别可以是一个,也可以是多个
python track_v5.py --yolo-weights yolov5/yolov5*.engine --strong-sort-weights weights/osnet_x0_25_msmt17.pt --source *.MP4 --show-vid --save-txt --save-vid --count
上述代码运行结果显示
跟踪的结果如下面的视频
CM_StrongSORT-YOLO-main
跟踪的好坏很大程度上取决于检测的质量 ,上图使用的是yolov5x.engine文件进行跟踪检测的结果
绘画目标行动路径的结果就不展示了,因为这个数据集会出现很乱的情况,毕竟目标的运动轨迹差不多,就会出现很多线条重叠的情况,可以上传其他数据集,比如足球比赛这种,效果显示会好一些
首先可以去看下StrongSORT和deepsort的论文,因为StrongSORT是根据deepsort改的。理解deepsort的原理以后再去学习StrongSORT相较于deepsort的改进就可以了。我们首先学习deepsort的原理
可以参考:深入浅出——零基础一文读懂DeepSORT(原理篇)_YouOnlyLookOnemiotms的博客-CSDN博客
目标追踪---deepsort原理讲解_炮哥带你学的博客-CSDN博客
然后介绍他们两个的区别
主要在进行外观特征提取的时候,StrongSORT使用了更好的CNN,然后使用了EMA取代了原始的特征库,EMA其中t为时刻也是帧,e为进行级联匹配的状态
然后就是运动方面的区别,StrongSORT应用了一个相机补偿的东西ECC,还换了一个更好的卡尔曼滤波
在进行级联匹配的时候,deepsort它在进行计算的时候是没有考虑运动特征方面的,StrongSORT则是结合了外观和运动两个方面去计算一个类似代价函数的东西去进行级联匹配
他们两个的区别可以参考【目标跟踪算法】Strong SORT多目标跟踪模型论文解析+代码详解_frootguo的博客-CSDN博客