博主个人微信:xituxiaoshutong100

基于YOLOv5和DeepSort的目标跟踪

YOLO 迷途小书童 9评论

软硬件环境

视频看这里

此处是 youtube 的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

YOLOv5

前文 YOLOv5目标检测YOLOv5模型训练 已经介绍过了 YOLOv5 相关的内容,在目标检测中效果不错。

DeepSort

SORT 算法的思路是将目标检测算法(如 YOLO )得到的检测框与预测的跟踪框的 iou (交并比)输入到匈牙利算法中进行线性分配来关联帧间 ID。而 DeepSORT 算法则是将目标的外观信息加入到帧间匹配的计算中,这样在目标被遮挡但后续再次出现的情况下,还能正确匹配这个 ID,从而减少 ID 的切换,达到持续跟踪的目的。

目标跟踪

项目地址 https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch,使用的是 Pytorch 深度学习框架,联合 YOLOv5DeepSort 两个目前很火且效果非常不错的算法工程,实现特定物体的目标跟踪。

git clone https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git
cd Yolov5_DeepSort_Pytorch
pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txt

然后去下载权重文件,YOLOv5 的权重文件放置在 yolov5/weights 文件夹下,DeepSort 的权重文件 ckpt.t7 放置在 deep_sort/deep/checkpoint 文件夹下

下载链接,百度网盘下载地址, 提取码:u5v3

找个测试视频,来看看效果吧

python track.py --source test.mp4

测试效果图

deepsort

V2.0更新

2.0 release 版本主要是适配了 yolov5 的5.0版本;增加了在 MOT16 上的验证;自动下载 yolov5 的权重文件。需要注意的是,作者并没有将 yolov5 的源码在自己的仓库中进行管理,因此,需要自己去下载对应版本的 yolov5

找到对应的 tag 标签,比如现在的v2.0版本,点击进入

yolov5 deepsort

这样就进入了对应的 yolov5 的版本,这个版本,一般是作者验证过的,靠谱

yolov5 deepsort

下载 zip

yolov5 deepsort

然后解压到 yolov5 的文件夹下即可

或者,使用 git 下载源码

git clone --recurse-submodules https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git

由于更新了 yolov5,因此,pytorch 的版本也需要更新到1.7以上,我这里匹配的是 cuda 10.1。没有 gpu 的直接按照 requirements.txt 来安装

pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

track.py 命令行参数做了一些修改,默认情况下不显示带测试结果的视频,需要加上参数 --show-vid

python track.py --source test.mp4 --show-vid

V3.0更新

3.0的 release 版本更新了

  • 增加了 colab notebook
  • 增加了处理 MOT16 验证的脚本,包括数据的下载、模型的下载、视频的生成等
  • 修改 track.py 适配新的 yolov5
  • 目标可视化增加了 idclassconfidence
  • 添加开源许可证

FAQ

windows 上出现了下面的错误提示

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

解决方法是,在 track.py 中加上语句

import os

os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

参考资料

喜欢 (1)
发表我的评论
取消评论

表情
(9)个小伙伴在吐槽
  1. 您好, 请问一下博主, 这个可以用jetson上的CSI摄像头来进行检测吗? 具体该怎样操作呢?
    匿名2021-09-02 22:40 回复
    • 没玩jetson
      迷途小书童2021-09-05 20:19 回复
  2. 您好, 请问一下博主, 这个可以用jetson上的CSI摄像头来进行检测吗?
    匿名2021-09-02 10:51 回复
    • 应该可以,但是性能会差
      迷途小书童2021-09-02 21:35 回复
  3. 博主您好,使用您的项目效果一直都很好,但是当目标太小时会检测不出来,请问可以怎么处理,https://blog.csdn.net/weixin_41868104/article/details/111596851只像这样增加小目标检测层可以吗,不知道是不是我的实现有问题,添加了小目标检测后还是不行。
    匿名2021-07-16 09:38 回复
  4. 如果要保存结果需要在python track.py --source test.mp4后面加上 --save-vid 路径是Yolov5_DeepSort_Pytorch-master\inference\output 如果要显示需要加 --show-vid
    匿名2021-07-08 17:22 回复
    • 对,根据自己需要添加命令行参数。其实,当拿到一个新项目时,如果不知道怎么用,或者说想知道脚本都有哪些功能,第一个要做的就是python demo.py -h
      迷途小书童2021-07-08 21:13 回复
  5. 请问跟着流程走,命令提示符只显示每一帧处理完了,没有弹出视频框看实时效果是怎么回事?
    匿名2021-06-23 11:22 回复
    • 你看看cv2.imshow有没有被执行?
      迷途小书童2021-06-23 22:16 回复