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

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

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

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

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

 单目标跟踪详解

 定义 

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

 应用场景 

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

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

 研究难点 

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

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

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

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

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

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

被引入到目标跟踪领域中

关键算法:SiamFC

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

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

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

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

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

作者提出了一种全新的 triplet loss,用于提取跟踪物体的 expressive deep feature。在不增加输入的情况下,该方法可以利用更多元素进行训练,通过组合原始样本,实现更强大的特征。

相关论文:

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 的行为轨迹画出来。

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

 应用场景 

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

 研究难点 

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

 主流算法 

1、SORT

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

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

SORT 与其他方法的性能比较

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

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

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

相关论文:

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

2、DeepSORT

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

DeepSORT 在 MOT Challenge 数据集上的表现

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

作者将绝大部分的计算复杂度,都放到了离线预训练阶段,在这个阶段会用一个大规模行人重识别数据集,学习深度关联度量 (deep association metric)。

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

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

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

相关论文:

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

3、Towards Real-Time MOT

作者提出了一个 MOT 系统,使得目标检测和外观嵌入得以在一个共享模型中学习。也就是说把外观嵌入模型纳入一个 single-shot 检测器中,使该模型可以同时输出检测以及对应的嵌入。

作者还进一步提出了一个简单快速的关联方法,可以与联合模型 (joint model) 一起运行。

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 进行跟踪。

第一步 代码环境准备

%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)

输出多目标跟踪结果

完整 notebook 请访问:

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

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

完整教程传送门:

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

https://blog.csdn.net/lanmengyiyu/article/details/108846295

—— 完 ——


往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑黄海广老师《机器学习课程》课件合集
本站qq群851320808,加入微信群请扫码:

【深度学习】用 YOLO v5+DeepSORT,打造实时多目标跟踪模型相关推荐

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

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

  2. 基于深度学习的YOLO目标检测研究-附Matlab代码

    目录 ✳️ 一.引言 ✳️ 二.YOLO的基本思想 ✳️ 三.实验验证 ✳️ 四.参考文献 ✳️ 五.Matlab代码获取 ✳️ 一.引言 目标检测是计算机视觉中的一个研究热点,在很多领域都有应用需求 ...

  3. win10,vs2015深度学习目标检测YOLOV5+deepsort C++多目标跟踪代码实现,源码注释,拿来即用。

    打死不用CSDN,整改的太恶心了,发什么都审核不过,各种图片和链接不让发.人如果没有立场那还是人吗?不用CSDN并且博客园就很好! DeepSort纯C++ Yolov5[s,l,m系列],详细讲解- ...

  4. 在浏览器中进行深度学习:TensorFlow.js (四)用基本模型对MNIST数据进行识别

    2019独角兽企业重金招聘Python工程师标准>>> 在了解了TensorflowJS的一些基本模型的后,大家会问,这究竟有什么用呢?我们就用深度学习中被广泛使用的MINST数据集 ...

  5. 【深度学习】解析神经网络中的数值稳定性、模型初始化和分布偏移(Pytorch)

    [深度学习]解析神经网络中的数值稳定性.模型初始化和分布偏移 文章目录 1 概述1.1 梯度消失和梯度爆炸1.2 打破对称性 2 参数初始化 3 环境和分布偏移3.1 协变量偏移3.2 标签偏移3.3 ...

  6. 深度学习图像超分辨率最新综述:从模型到应用

    点击我爱计算机视觉标星,更快获取CVML新技术 今日arXiv新上论文<Deep Learning for Image Super-resolution:A Survey>,详细回顾了近年 ...

  7. Keras深度学习实战(1)——神经网络基础与模型训练过程详解

    Keras深度学习实战(1)--神经网络基础与模型训练过程详解 0. 前言 1. 神经网络基础 1.1 简单神经网络的架构 1.2 神经网络的训练 1.3 神经网络的应用 2. 从零开始构建前向传播 ...

  8. 「DLP-KDD 2021征文」及上届论文全集,包含深度学习推荐/广告系统、多目标、模型服务等

    「DLP-KDD 2021征文」及上届论文全集,包含深度学习推荐/广告系统.多目标.模型服务等 在DLP-KDD 2021征稿之际,为大家准备了DLP-KDD2020的全部文章和资源列表,内容涵盖了几 ...

  9. 深度学习论文随记(二)---VGGNet模型解读-2014年(Very Deep Convolutional Networks for Large-Scale Image Recognition)

    深度学习论文随记(二)---VGGNet模型解读 Very Deep Convolutional Networks forLarge-Scale Image Recognition Author: K ...

最新文章

  1. JavaScript容易犯错的九个陷阱
  2. 2011年度最佳10款免费的 WordPress 主题
  3. tensorflow随笔-tf.group
  4. 什么是初效过滤器_初效过滤器怎么样 初效过滤器特点介绍【详解】
  5. 嵌入式Linux中的根文件系统
  6. 如何用PPT编制方案 (5)PPT中的文字设计
  7. Bootstrap3 行内表单
  8. unity场景素材_[游戏素材]游戏场景环境天气变化Unity游戏素材资源
  9. 深度学习网络训练中出现nan的原因分析
  10. chromium 浏览器markdown神器插件
  11. The Triple-A Supply Chain by Hau L. Lee
  12. 让计算机提速的方法,如何让电脑提速(让电脑提速的方法步骤详解 )
  13. clustalw序列比对_COBALT:NCBI在线蛋白多序列比对(比ClustalW还强大的工具)
  14. LTC咨询LTC培训经验分享:华为系智谋帮许浩明老师辅导上市公司欧菲光科技进行基于LTC流程的能力提升
  15. Mac 解压rar格式文件(附解压工具包)
  16. 浅谈Unity中的rotation和Quaternion的乘法
  17. [Java]介绍|环境|编码|数据类型|String|运算符|标准输入|if语句|循环语句|三元运算符|循环语句|swich语句
  18. 洛朗级数与泰勒展开的区别
  19. 小孔成像总结_【初中物理】物理解题技巧+方法总结
  20. redis cluster C 客户端

热门文章

  1. Qomo OpenProject beta1 发布!
  2. 使用 XML Schema 定义元素的基本知识
  3. dbms_lob包学习笔记之三:instr和substr存储过程
  4. JavaScript对象和数组
  5. BZOJ 1207 打鼹鼠
  6. 再谈多态——向上映射及VMT/DMT(转)
  7. .NET中使用Memcached的相关资源整理 转载之DUDU 程序员打杂的站长
  8. 台式计算机是32位还64位,怎么看电脑是32位还是64位
  9. 如何在GraphPad Prism 9图表上添加图片或其他对象
  10. 常见荧光定量 PCR 检测方法比较