[ai开发]基于深度学习的视频多目标跟踪实现

xiaozhi_5638 xiaozhi_5638     2022-12-17     561

关键词:

据我目前了解掌握,多目标跟踪大概有两种方式:

Option1

基于初始化帧的跟踪,在视频第一帧中选择你的目标,之后交给跟踪算法去实现目标的跟踪。这种方式基本上只能跟踪你第一帧选中的目标,如果后续帧中出现了新的物体目标,算法是跟踪不到的。这种方式的优点是速度相对较快。缺点很明显,不能跟踪新出现的目标。

Option2

基于目标检测的跟踪,在视频每帧中先检测出来所有感兴趣的目标物体,然后将其与前一帧中检测出来的目标进行关联来实现跟踪的效果。这种方式的优点是可以在整个视频中跟踪随时出现的新目标,当然这种方式要求你前提得有一个好的“目标检测”算法。

本文主要讲述Option2的实现原理,也就是Tracking By Detecting的跟踪方式。这篇文章没有源码链接,关于“目标检测”算法的源码可以参见我上一篇文章,至于“轨迹跟踪”算法的源码实现很简单,看完本文相信大家都能写出来,Python实现大概200行不到。

技术分享图片

 

Tracking By Detecting的跟踪过程

Step1:使用目标检测算法将每帧中感兴趣的目标检测出来,得到对应的(位置坐标, 分类, 可信度),假设检测到的目标数量为M;

Step2:通过某种方式将Step1中的检测结果与上一帧中的检测目标(假设上一帧检测目标数量为N)一一关联起来。换句话说,就是在M*N个Pair中找出最像似的Pair。

对于Step2中的“某种方式”,其实有多种方式可以实现目标的关联,比如常见的计算两帧中两个目标之间的欧几里得距离(平面两点之间的直线距离),距离最短就认为是同一个目标,然后通过匈牙利算法找出最匹配的Pair。当让,你还可以加上其他的判断条件,比如我用到的IOU,计算两个目标Box(位置大小方框)的交并比,该值越接近1就代表是同一个目标。还有其他的比如判断两个目标的外观是否相似,这就需要用到一种外观模型去做比较了,可能耗时更长。

在关联的过程中,会出现三种情况:

1)在上一帧中的N个目标中找到了本次检测到的目标,说明正常跟踪到了;

2)在上一帧中的N个目标中没有找到本次检测到的目标,说明这个目标是这一帧中新出现的,所以我们需要把它记录下来,用于下下一次的跟踪关联;

3)在上一帧中存在某个目标,这一帧中并没有与之关联的目标,那么说明该目标可能从视野中消失了,我们需要将其移除。(注意这里的可能,因为有可能由于检测误差,在这一帧中该目标并没有被检测到)

技术分享图片

 

存在的问题

上面提到的跟踪方法在正常情况下都能够很好的工作,但是如果视频中目标运动得很快,前后两帧中同一个目标运动的距离很远,那么这种跟踪方式就会出现问题。

技术分享图片

如上图,实线框表示目标在第一帧的位置,虚线框表示目标在第二帧的位置。当目标运行速度比较慢的时候,通过之前的跟踪方式可以很准确的关联(A, A’)和(B, B’)。但是当目标运行速度很快(或者隔帧检测)时,在第二帧中,A就会运动到第一帧中B的位置,而B则运动到其他位置。这个时候使用上面的关联方法就会得到错误的结果。

那么怎样才能更加准确地进行跟踪呢?

 

基于轨迹预测的跟踪方式

既然通过第二帧的位置与第一帧的位置进行对比关联会出现误差,那么我们可以想办法在对比之前,先预测目标的下一帧会出现的位置,然后与该预测的位置来进行对比关联。这样的话,只要预测足够精确,那么几乎不会出现前面提到的由于速度太快而存在的误差。

技术分享图片

如上图,我们在对比关联之前,先预测出A和B在下一帧中的位置,然后再使用实际的检测位置与预测的位置进行对比关联,可以完美地解决上面提到的问题。理论上,不管目标速度多么快,都能关联上。那么问题来了,怎么预测目标在下一帧的位置?

方法有很多,可以使用卡尔曼滤波来根据目标前面几帧的轨迹来预测它下一帧的位置,还可以使用自己拟合出来的函数来预测下一帧的位置。实际过程中,我是使用拟合函数来预测目标在下一帧中的位置。

技术分享图片

如上图,通过前面6帧的位置,我可以拟合出来一条(T->XY)的曲线(注意不是图中的直线),然后预测目标在T+1帧的位置。具体实现很简单,Python中的numpy库中有类似功能的方法。

 

仍然存在的不足

即使如此完美了,还是存在不足。

技术分享图片

轨迹预测的前提是需要知道目标前面若干帧的轨迹信息,因此在刚开始,目标的轨迹是预测不到的,或者说预测得不准。所以在刚开始的几帧,我们还是需要使用原来的方式进行对比关联。

 

目标跟踪检测算法(四)——多目标扩展

...ttps://blog.csdn.net/qq_34919792/article/details/89893665【嵌牛导读】基于深度学习的算法在图像和视频识别任务中取得了广泛的应用和突破性的进展。从图像分类问题到行人重识别问题,深度学习方法相比传统方法表现出极大的优势。与行... 查看详情

目标跟踪的深度学习方法与opencv实现(代码片段)

目录概述31.1.背景31.2.目标跟踪问题描述31.3.目标跟踪测试数据集及性能评价标准4算法选型102.1.现有算法分类102.2.图像目标跟踪方法111.概述1.1.背景行为识别的前提是需要对人体目标进行识别和跟踪,现阶段我们已经通过使用开源... 查看详情

深度学习在视频多目标跟踪中的应用综述

...经典的指标完整的MOT指标ID分数2.3、基准数据集3、MOT中的深度学习3.1、深度学习中的检测步骤3.1.1、FasterR-CNN3.1.2、SSD3.1.3、Otherdetectors3.1.4、cnn在检测步骤中的其他用途3.2、深度学习在特征提取和运动预测中的应用3.2.1、自动编码... 查看详情

深度学习在视频多目标跟踪中的应用综述

...经典的指标完整的MOT指标ID分数2.3、基准数据集3、MOT中的深度学习3.1、深度学习中的检测步骤3.1.1、FasterR-CNN3.1.2、SSD3.1.3、Otherdetectors3.1.4、cnn在检测步骤中的其他用途3.2、深度学习在特征提取和运动预测中的应用3.2.1、自动编码... 查看详情

目标跟踪综述(主要是深度学习)

...少成功应用,并逐渐在性能上超越传统方法。本文对现有基于深度学习的目标跟踪算法进行了分类梳理。经典的目标跟踪方法目前跟踪算法可以被分为产生式(generativemodel)和判别式(discriminativemodel)两大类别。产生式方法运用生成... 查看详情

深度学习与视频分析简介

...监控智慧门店安防监控参考文献与学习路径视频分析简介基于AI的视频分析是视频监控行业讨论很多的话题之一。某些应用程序能够显著提升数据分析速度,自动开展重复性任务。但现今,AI解决方案无法取代人类操作员的经验... 查看详情

运动对象检测和描述

运动图像检测基于背景减法目标跟踪,背景分割器:KNN、MOG2和GMGBasicmotiondetectionandtrackingwithPythonandOpenCV使用背景减除进行目标检测用OpenCV实现多目标追踪(C++/Python)通过形态学改善图像过滤,追踪人脸,检测前景/背景区域和深度... 查看详情

深度学习与视频分析简介

...监控智慧门店安防监控参考文献与学习路径视频分析简介基于AI的视频分析是视频监控行业讨论很多的话题之一。某些应用程序能够显著提升数据分析速度,自动开展重复性任务。但现今,AI解决方案无法取代人类操作员的经验... 查看详情

深度学习在目标跟踪中的应用

...功应用,并逐渐在性能上超越传统方法。本文对现有基于深度学习的目标跟踪算法进行了分类梳理,希望能给读者带来启发。开始本文之前,我们首先看上方给出的3张图片,它们分别是同一个视频的第1,40... 查看详情

目标跟踪(3)multitracker:基于opencv(c++/python)的多目标跟踪

参考技术A在这篇文章中,我们将介绍如何使用通过MultiTracker类实现的OpenCV的多对象跟踪API。我们将共享C++和Python代码。大多数计算机视觉和机器学习的初学者都学习对象检测。如果您是初学者,您可能会想为什么我们需要对象... 查看详情

多目标跟踪算法|deepsort(代码片段)

...段的算法,达到实时跟踪效果,曾被应用于工业开发。DeepSort是基于Sort目标跟踪进行的改进,它引入深度学习模型,在实时目标跟踪过程中,提取目标的外观特征进行最近邻近匹配。目的:改善有遮挡情况... 查看详情

深度学习在目标跟踪中的应用

...功应用,并逐渐在性能上超越传统方法。本文对现有基于深度学习的目标跟踪算法进行了分类梳理& 查看详情

基于ai深度学习的安全帽检测算法,如何应用在实际场景中?

...戴状况,成为企业安全生产监管中不容忽视的环节。基于AI深度学习的目标检测算法也日益成熟且进步,通过AI安全帽检测算法,可以有效地来检测工人是否合规穿戴个人防护装备,提高视频监控在行业多 查看详情

areviewofvisualtrackingwithdeeplearning

...已广泛应用于军事,医疗等领域。近年来,计算机视觉中深度学习的热潮为实现具有更高性能的视觉跟踪提供了一种新途径。本文首先介绍了视觉跟踪和深度学习的概念和研究现状,然后重点介绍了深度学习在视觉跟踪中的代表... 查看详情

目标跟踪的深度学习方法与opencv下的kcf方法

目标跟踪的深度学习方法与opencv实现kcf方法necther6人评论7357人阅读2018-04-0914:53:55目录概述31.1.背景31.2.目标跟踪问题描述31.3.目标跟踪测试数据集及性能评价标准4算法选型102.1.现有算法分类102.2.图像目标跟踪方法111.概述1.1.背景行... 查看详情

第65篇smiletrack:基于相似度学习的多目标跟踪

文章目录摘要1、简介2、相关工作2.1、Tracking-by-Detection2.1.1、检测方法2.1.2、数据关联方法2.2、Tracking-by-Attention3、方法3.1、体系结构概述 查看详情

基于python环境搭建-yolo实现吸烟行为监测

...前景。近年来,由于卷积神经网络的发展和硬件算力提升,基于深度学习的目标检测取得了突破性的进展。目前,深度学习算法已在计算机视觉的整个领 查看详情

python进阶:带你学习实时目标跟踪

...求算法的速度场合很适用8.GOTURN:OpenCV中自带的唯一一个基于深度学习的算法,运行短发需要提前下载好模型文件分别对应的伴生的函数:kcf:cv2.legacy.TrackerKCF_createcsrt:cv2.legacy.TrackerCSRT_createboosting:cv2.legacy.Tra 查看详情