0
点赞
收藏
分享

微信扫一扫

用 YOLO v5+DeepSORT,打造实时多目标跟踪模型


By 超神经


内容概要:目标跟踪作为一个非常有前景的研究方向,常常因为场景复杂导致目标跟丢的情况发生。本文按照跟踪目标数量的差异,分别介绍了单目标跟踪及多目标跟踪。


关键词:目标跟踪   计算机视觉    教程


目标跟踪 (Object Tracking) 是机器视觉领域的重要课题,根据跟踪目标的数量,可分为单目标跟踪 (Single Object Tracking,简称 SOT) 和多目标跟踪 (Multi Object Tracking,简称 MOT)。


多目标跟踪往往因为跟踪 ID 众多、遮挡频繁等,容易出现目标跟丢的现象。借助跟踪器 DeepSORT 与检测器 YOLO v5,可以打造一个高性能的实时多目标跟踪模型。


本文将对单目标跟踪和多目标跟踪分别进行介绍,文末将详解 YOLO v5+DeepSORT 的实现过程及具体代码。


 单目标跟踪详解


 定义 


单目标跟踪 SOT 是指在视频首帧给出目标,根据上下文信息,在后续帧定位出目标位置,建立跟踪模型对目标的运动状态进行预测。


 应用场景 


SOT 在智能视频监控、自动驾驶、机器人导航、人机交互等领域应用广泛。


用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_数据集

足球比赛中利用 SOT 预测足球运动轨迹


 研究难点 


最主要的三个难点:目标背景的变化、物体本身的变化、光照强度变化。


 主流算法(基于深度学习) 


解决 SOT 问题主要有两种方法:判别式跟踪及生成式跟踪,随着深度学习在图像分类、目标检测等机器视觉相关任务中的成功应用,深度学习也开始大量应用于目标跟踪算法中。


本文主要围绕基于深度学习的 SOT 算法进行介绍。


用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_深度学习_02

各时间节点的代表性目标跟踪算法

2012 年后以 AlexNet 为代表的深度学习方法

被引入到目标跟踪领域中


关键算法:SiamFC


与传统目标跟踪中所用的在线学习方法不同,SiamFC 侧重于在离线阶段学习强嵌入。


它将一个基本跟踪算法,与一个在 ILSVRC15 数据集上进行端到端训练的新型全卷积孪生网络 (fully-convolutional Siamese network) 相结合,用于视频中的目标检测。


用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_目标跟踪_03

全卷积孪生网络架构示意图


实验证明,在模型测试和训练期间,孪生全卷积深度网络对已有数据的利用更加高效。


SiamFC 开创了将孪生网络结构应用于目标跟踪领域的先河,显著提高了深度学习方法跟踪器的跟踪速度,结构简单性能优异。


相关论文:

https://arxiv.org/pdf/1606.09549.pdf


 相关衍生算法 


1、StructSiam


提出了 local structure learning method,同时考虑目标的 local pattern 和结构关系。为此,作者设计了一个局部模式检测模块,来自动识别目标物体的辨别区域。


该模型可以以端到端的方式进行训练。


相关论文:

https://openaccess.thecvf.com/content_ECCV_2018/papers/Yunhua_Zhang_Structured_Siamese_Network_ECCV_2018_paper.pdf


2、SiamFC-tri



相关论文:

https://openaccess.thecvf.com/content_ECCV_2018/papers/Xingping_Dong_Triplet_Loss_with_ECCV_2018_paper.pdf


3、DSiam



DSiam 允许使用任何可行的通用或经过特殊训练的特征,如 SiamFC 和 VGG,且动态孪生网络可以直接在标记的视频序列上进行整合训练,充分利用移动物体丰富的时空信息。


相关论文:

https://openaccess.thecvf.com/content_ICCV_2017/papers/Guo_Learning_Dynamic_Siamese_ICCV_2017_paper.pdf


 多目标跟踪详解


 定义 


多目标跟踪(MOT)是指对视频中每一帧的物体都赋予一个 ID,并将每个 ID 的行为轨迹画出来。


用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_数据集_04

在街景视频中进行多目标跟踪



 应用场景 


MOT 在智能安防、自动驾驶、医学场景等领域,都有广泛应用。


 研究难点 


MOT 目前遇到的最大挑战就是遮挡 (Occlusion),即目标之间的彼此遮挡或环境对目标产生的遮挡。


 主流算法 


1、SORT


Simple Online and Realtime Tracking (SORT) 是一种专注简单高效算法的多目标跟踪方法,它非常实用,可以为在线和实时应用,有效地关联目标。


SORT 只是将常见技术(如卡尔曼滤波、匈牙利算法)进行了简单组合,准确率可与当时最先进的在线跟踪器相提并论。


用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_数据集_05

SORT 与其他方法的性能比较

横轴表示准确率,纵轴表示速度

模型位置越高、越靠右,综合表现越佳


由于跟踪方法简单易用,跟踪器的更新速度达到了 260 Hz,比当时最先进的跟踪器快 20 倍。


相关论文:

https://arxiv.org/pdf/1602.00763.pdf


2、DeepSORT


DeepSORT 是 SORT 的升级版,它整合了外观信息 (appearance information) 从而提高 SORT 的性能,这使得我们在遇到较长时间的遮挡时,也能够正常跟踪目标,并有效减少 ID 转换的发生次数。


用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_目标跟踪_06

DeepSORT 在 MOT Challenge 数据集上的表现

真实街景中遮挡情况非常常见



在在线应用阶段,则使用视觉外观空间 (visual appearance space) 中的近邻查询,来建立 measurement-to-track 关联。


实验表明,DeepSORT 使得 ID 转换的次数减少了 45%,在高帧率下整体性能优秀。


此外 DeepSORT 是一个非常通用的跟踪器,可以被接在任何一个检测器上。


相关论文:

https://arxiv.org/pdf/1703.07402.pdf


3、Towards Real-Time MOT




用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_目标跟踪_07

Towards Real-Time MOT 与 SDE 模型

Two-stage 模型以及 JDE 模型对比


与之前的 MOT 系统相比,这两个组件的计算成本都大大降低了,为实时 MOT 算法设计的后续工作,提供了一个整洁快速的基线。


这是业内第一个接近实时的 MOT 系统,它的运行速度更快、精度更高、代码也已开源,非常值得参考。


相关论文:

https://arxiv.org/pdf/1909.12605v1.pdf


 用YOLOv5和DeepSORT进行多目标跟踪


该教程在 OpenBayes.com 运行。OpenBayes 是一个开箱即用的机器学习算力云平台,提供 PyTorch、TensorFlow 等主流框架,以及 vGPU、T4、V100 等多种类型的算力方案,计价模式灵活简单,按使用时长收费。


本教程选用 vGPU 在 PyTorch 1.8.1 环境中运行。


访问完整教程:

https://openbayes.com/console/open-tutorials/containers/BvxvYMbdefV/overview


用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_数据集_08


本项目包括两个部分,首先是 YOLO v5 检测器,用于检测出一系列物体;然后用 DeepSORT 进行跟踪。


第一步 代码环境准备

%cd Yolov5_DeepSort_Pytorch
%pip install -qr requirements.txt  # 安装依赖


import torch
from IPython.display import Image, clear_output  # 显示结果


clear_output()
print(f"Setup complete. Using torch {torch.__version__} ({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})")


第二步 预处理待测视频

!y | ffmpeg -ss 00:00:00 -i test.avi -t 00:00:03 -c copy out.avi -y


第三步 模型推理

!python track.py --yolo_weights /openbayes/input/input1/crowdhuman_yolov5m.pt --source out.avi --save-vid


第四步 格式转换

!ffmpeg -i /openbayes/home/Yolov5_DeepSort_Pytorch/inference/output/out.avi output.mp4 -y


第五步 显示结果

from IPython.display import HTML
from base64 import b64encode
mp4 = open('output.mp4','rb').read()
data_url = "data:video/mp4;base64," + b64encode(mp4).decode()

HTML("""
<video controls>
      <source src="%s" type="video/mp4">
</video>
""" % data_url)


用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_目标跟踪_09

输出多目标跟踪结果


完整 notebook 请访问:

https://openbayes.com/console/open-tutorials/containers/BvxvYMbdefV/overview

 关于 OpenBayes 

OpenBayes 是国内领先的机器智能研究机构,提供算力容器、自动建模、自动调参等多项 AI 开发相关的基础服务。

同时 OpenBayes 还上线了数据集、教程、模型等众多主流公开资源,供开发者快速学习并创建理想的机器学习模型。

你也可以输入一个视频,得到对应的检测和跟踪结果。

完整教程传送门:

https://openbayes.com/console/open-tutorials/containers/BvxvYMbdefV/overvie


参考:

https://zhuanlan.zhihu.com/p/260292966

http://www.cjig.cn/html/jig/2019/12/20191201.htm

https://zhuanlan.zhihu.com/p/96631118



—— 完 ——






用 YOLO v5+DeepSORT,打造实时多目标跟踪模型_目标跟踪_10


举报

相关推荐

0 条评论