软硬件环境
- 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"