1、算法简介
DeepSort是对Simple Online and Realtime Tracking(Sort)的扩展,它通过预先训练的深度关联度量来整合外观信息。使用视觉外观空间中的最近邻查询来建立测量到跟踪的关联,能够通过更长时间的遮挡来跟踪对象,有效减少身份切换的数量。使 Sort 成为当时最先进的在线跟踪算法,而且该算法易于实现并实时运行。
Wojke N , Bewley A , Paulus D . Simple Online and Realtime Tracking with a Deep Association Metric[C].IEEE International Conference on Image Processing (ICIP),Beijing,China. 2017:3645-3649.
上图是在具有频繁遮挡的常见跟踪情况下,我们的方法在 MOT 数据集 上的示例输出。
我们在 MOT16 基准测试上评估我们的跟踪器的性能。该基准评估了七个具有挑战性的测试序列的跟踪性能,包括带有移动摄像头的正面视图场景以及自上而下的监控设置。
跟踪 MOT16 Bench挑战的结果,我们将非标准检测与其他已发表的方法进行比较。可以看指标箭头,向上表示越高越好,向下表示越低越好。Deep Sort在ID这项远远优于Sort,同时保持有竞争力的 MOTA 分数、跟踪碎片和漏报,这也是本文的核心贡献。
2、准备工作
1、从下面三个网址 git clone
源代码,第1个是deepsort源代码,第2个是yolov5源代码,第3个是行人id模型。
1、https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch2、https://github.com/ultralytics/yolov53、https://github.com/KaiyangZhou/deep-person-reid
2、按下面目录放置好,最外层是下载的第一个文件夹yolov5-deepsort-pytorch,然后将yolov5文件夹移到该目录下,如下图所示:
3、然后在strong_sort下面的deep下放入我们下载好的deep-person-reid文件夹。
4、创建一个weights模型文件夹,然后放入你需要的weights,这个大家应该很熟悉了,一个是yolov5s.pt,还有一个是osnet_x0_25_msmt17.pth,前者从上面的yolo下载页面上可以找到;后者在strong_sort/deep/checkpoint下,直接复制过来即可。就像这样:
3、环境配置
如果之前没有部署过深度学习算法,强烈建议先看yolov5环境的详细部署:Ubuntu20.04部署yolov5目标检测算法,开发板/无人机应用
1、安装anaconda,然后创建一个python3.8的环境,相信大家应该很熟悉了,这里就不再赘述。激活该环境,然后cd到最外层目录,输入下面命令来安装requirements.txt所需的库。deepsort是基于sort和yolo的,所以环境需求就是yolo的环境。
pip3 install -U -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
使用上面方法会非常顺利地安装成功,不需要科学上网。
2、进入deep-person-reid目录,运行python setup.py develop
,即可安装好REID环境。
4、算法运行
进入配置的anaconda环境,输入python track.py运行程序,可以加入参数进行调整,比如下面五种参数很常用。
python track.py --yolo-weights weights/yolov5m.pt // yolov5权重文件 --source test.mp4 // 输入视频文件 --show-vid // 显示跟踪视频 --classes 0 2 // 0 = 行人类别, 2=小汽车类别。 --save-vid // 保存跟踪视频
我们看下单个视频的运行效果,通过yolo检测之后,deepsort对目标进行相邻帧的跟踪:
效果很不错,可以有效减少因遮挡产生的ID切换。怎么样,你学会了吗?
本文首稿完成于2022-06-29 15:51:17