软硬件环境
- windows 10 64bit
- pytorch
- yolov5
- deepsort
视频看这里
此处是 youtube 的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。
V4.0更新
- 使能
yolov5的模型组合(model ensembling) - 更新了
track.py,保持了与现有yolov5的代码兼容 - 基于项目 https://github.com/michael-camilleri/deep_sort,实现了论文中提到的
Lambda as per Eq(5) - 兼容了更多的
ReID模型(https://kaiyangzhou.github.io/deep-person-reid/MODEL_ZOO)
很多同学刚接触这个项目,大多数都是直接下载的 zip 文件,那么解压后,项目中的子项目目录是空的,最常见的运行错误就是 No module named 'torchvision',正确的做法是使用 git 去下载源码
git clone --recurse-submodules https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch.git
跟踪的数据源和 yolov5 的保持一致,使用参数 --source
python track.py --source 0 # webcam
img.jpg # image
vid.mp4 # video
path/ # directory
path/*.jpg # glob
'https://youtu.be/Zgi9g1ksQHc' # YouTube
'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream
通过参数 --yolo_model 来指定 yolov5 的模型, 默认使用 yolov5m.pt,在源码根目录,如果本地没有,代码会自动去下载,这个地方,很多同学都碰到了网络连接的问题,如下

最简单的就是自己手动去下载模型,然后放在源码根目录下
另外,ReID 模型也会由代码自动下载(存放在 Google 网盘,没有梯子,国内是连接不上的),下载后的模型存放在 ~/.cache/torch/checkpoints,默认使用的是 osnet_x0_25,其它支持的模型可以到链接 https://kaiyangzhou.github.io/deep-person-reid/MODEL_ZOO 去下载
python track.py --source 0 --yolo_model yolov5m.pt --deep_sort_model osnet_x0_25
V3.0更新
3.0的 release 版本更新了
- 增加了
colab notebook - 增加了处理
MOT16验证的脚本,包括数据的下载、模型的下载、视频的生成等 - 修改
track.py适配新的yolov5 - 目标可视化增加了
id、class和confidence - 添加开源许可证
V2.0更新
2.0 release 版本主要是适配了 yolov5 的5.0版本;增加了在 MOT16 上的验证;自动下载 yolov5 的权重文件。需要注意的是,作者并没有将 yolov5 的源码在自己的仓库中进行管理,因此,需要自己去下载对应版本的 yolov5
找到对应的 tag 标签,比如现在的v2.0版本,点击进入

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

下载 zip 包

然后解压到 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
YOLOv5
前文 YOLOv5目标检测 和 YOLOv5模型训练 已经介绍过了 YOLOv5 相关的内容,在目标检测中效果不错。
DeepSort
SORT 算法的思路是将目标检测算法(如 YOLO )得到的检测框与预测的跟踪框的 iou (交并比)输入到匈牙利算法中进行线性分配来关联帧间 ID。而 DeepSORT 算法则是将目标的外观信息加入到帧间匹配的计算中,这样在目标被遮挡但后续再次出现的情况下,还能正确匹配这个 ID,从而减少 ID 的切换,达到持续跟踪的目的。
目标跟踪
项目地址 https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch,使用的是 Pytorch 深度学习框架,联合 YOLOv5 和 DeepSort 两个目前很火且效果非常不错的算法工程,实现特定物体的目标跟踪。
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
测试效果图

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"