电话+V:159999-78052 ,欢迎咨询在线视频目标跟踪,[python实用课程],[C++单片机原理],[C#、PHP网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]
在知乎上首次尝试撰写文章,想分享一下博士期间较为熟悉的视觉目标跟踪领域。每年这个时候,我都在忙于赶CVPR,今年却意外地有了闲暇时光。在这段工作之余,我决定写点文章,怀念一下科研的日子。接下来,我将谈谈在CVPR2021和ICCV2021上看到的几篇无监督单目标跟踪算法。
单目标跟踪任务要求跟踪器持续定位给定初始目标的位置和尺寸。与多目标跟踪不同,单目标跟踪需要处理任意物体,而多目标跟踪通常是固定类别的物体,如行人、车辆等。这种“物体不定性”对单目标跟踪算法来说既是挑战,也是机遇。
在相关滤波器统治跟踪领域的早期,基于局部的相关滤波器算法将物体划分成小块,逐帧进行跟踪。令人惊讶的是,即使是像一个人的衣角、身体局部这样的细小目标,也能在较短时间内实现不错的跟踪效果。后续算法甚至跟踪目标的边缘,实现跟踪框的自适应变化。在模型训练时,是否真的需要为每个物体标注明确的物体?在深度学习时代,我们能否无监督地训练深度跟踪器?
在“UnsupervisedDeepTracking”中,基于跟踪器对物体类别不敏感的特性以及物体在视频中的时序特性,我曾经对DCFNet算法进行了无监督训练。基本出发点是随机选择视频中的一个区域,进行前向和反向跟踪,并依据前后跟踪轨迹的一致性进行模型训练。实验结果显示,随意选择视频中的一个区域进行无监督训练,就能将DCFNet训练得相当不错。这一方面源于CorrelationFilter的强大辨别能力,另一方面也得益于CNN作为特征提取网络。
在“ProgressiveUnsupervisedLearningforVisualObjectTracking”中,作者首先使用contrastivelearning学习如何区分前景和背景。在ILSVRC2015中,PUL算法首先使用EdgeBox生成高质量的proposal,并借助前景、背景区分模块进行时序上的训练样本收集。最后,由于无监督收集到的样本不可避免地存在噪声,作者重新优化了SiamFC的lossfunction,以适应当前的无监督数据。该论文主要针对数据采集和模型训练两方面优化无监督跟踪训练,取得了相当优异的性能。
在“LearningtoTrackObjectsfromUnlabeledVideos”中,作者将无监督跟踪分成三个部分:数据生成、单帧训练、多帧训练。在数据生成部分,USOT采用无监督光流的ARFlow方法找到视频中的运动物体,并使用帧间的动态规划算法进行BBox的优化。在单帧内进行目标跟踪,并将跟踪结果组成memoryqueue,学习不同的目标样本如何加权,为在线跟踪阶段的模型更新做好准备。
视频目标跟踪中的马氏链蒙特卡洛方法百度网盘在线观看资源,免费分享给您:
https://pan.baidu.com/s/1yW16ebpdFay6h4dunzj7nA
作者:ANKITSACHAN
编译:ronghuaiyang
导读
从目标跟踪的应用场景,底层模型,组件,类型和具体算法几个方面对目标跟踪做了全方面的介绍,非常好的入门文章。
在今天的文章中,我们将深入研究视频目标跟踪。我们从基础开始,了解目标跟踪的需求,然后了解视觉目标跟踪的挑战和算法模型,最后,我们将介绍最流行的基于深度学习的目标跟踪方法,包括MDNET,GOTURN,ROLO等。本文希望你了解目标检测。
目标跟踪是在视频中随着时间的推移定位移动目标的过程。我们可以简单地问,为什么我们不能在整个视频的每一帧中使用目标检测,然后我们可以再去跟踪目标。这会有一些问题。如果图像有多个物体,那么我们就无法将当前帧中的物体链接到前一帧中。如果你跟踪的物体有几帧不在镜头里,然后重新又出现,我们无法知道它是否是同一物体。本质上,在检测过程中,我们一次只处理一张图像,我们不知道物体的运动和过去的运动,所以我们不能在视频中唯一地跟踪物体。
目标跟踪在计算机视觉中有着广泛的应用,如监视、人机交互、医学成像、交通流监测、人类活动识别等。比如FBI想用全市的监控摄像头追踪一名驾车逃跑的罪犯。或者有一个需要分析足球比赛的体育分析软件。或者你想在购物中心的入口处安装一个摄像头,然后计算每个小时有多少人进出,你不仅要对人进行跟踪,还要为每个人创建路径,如下所示。
当检测失败的时候,跟踪可以接替工作当视频中有一个移动的物体时,在某些情况下,物体的视觉外观并不清楚。在所有这些情况下,检测都会失败而跟踪会成功,因为它也有物体的运动模型和历史记录。
下面是一些例子,其中有目标跟踪在工作和目标检测失败的情况:
目标跟踪是计算机视觉中一个古老而又困难的问题。有各种各样的技术和算法试图用各种不同的方式来解决这个问题。然而,大多数的技术依赖于两个关键的东西:
1.运动模型一个好的跟踪器的关键部件之一是理解和建模目标的运动的能力。因此,一个运动模型被开发来捕捉一个物体的动态行为。预测物体在未来帧中的潜在位置,从而减少搜索空间。然而,只有运动模型可能会失败,因为物体可能会不在视频中,或者方向和速度发生突变。早期的一些方法试图了解物体的运动模式并预测它。然而,这些方法的问题是,他们不能预测突然的运动和方向变化。这些技术的例子有光流,卡尔曼滤波,kanad-lucas-tomashi(KLT)特征跟踪,meanshift跟踪。
2.视觉外观模型大多数高度精确的跟踪器需要了解他们正在跟踪的目标的外观。最重要的是,他们需要学会从背景中辨别物体。在单目标跟踪器中,仅视觉外观就足以跨帧跟踪目标,而在多目标跟踪器中,仅视觉外观是不够的。
跟踪算法的几个组件一般来说,目标跟踪过程由四个模块组成:
1、目标初始化:在此阶段,我们需要通过在目标周围绘制一个边框来定义目标的初始状态。我们的想法是在视频的初始帧中绘制目标的边界框,跟踪器需要估计目标在视频剩余帧中的位置。
2、外观建模:现在需要使用学习技术学习目标的视觉外观。在这个阶段,我们需要建模并了解物体在运动时的视觉特征、包括在各种视点、尺度、光照的情况下。
3、运动估计:运动估计的目的是学习预测后续帧中目标最有可能出现的区域。
4、目标定位:运动估计给出了目标可能出现的区域,我们使用视觉模型扫描该区域锁定目标的确切位置。一般来说,跟踪算法不会尝试学习目标的所有变化。因此,大多数跟踪算法都比目标检测快得多。
跟踪算法的类型1.基于检测与不需要检测的跟踪器1.1基于检测的跟踪:将连续的视频帧给一个预先训练好的目标检测器,该检测器给出检测假设,然后用检测假设形成跟踪轨迹。它更受欢迎,因为可以检测到新的目标,消失的目标会自动终止。在这些方法中,跟踪器用于目标检测失败的时候。在另一种方法中,目标检测器对每n帧运行,其余的预测使用跟踪器完成。这是一种非常适合长时间跟踪的方法。
1.2不需要检测的跟踪:不需要检测的跟踪需要手动初始化第一帧中固定数量的目标。然后在后续的帧中定位这些目标。它不能处理新目标出现在中间帧中的情况。
2.单目标和多目标跟踪器2.1单目标跟踪:即使环境中有多个目标,也只跟踪一个目标。要跟踪的目标由第一帧的初始化确定。
2.2多目标跟踪:对环境中存在的所有目标进行跟踪。如果使用基于检测的跟踪器,它甚至可以跟踪视频中间出现的新目标。
3.在线和离线跟踪器3.1离线跟踪器:当你需要跟踪已记录流中的物体时,使用离线跟踪器。例如,如果你录制了对手球队的足球比赛视频,需要进行战略分析。在这种情况下,你不仅可以使用过去的帧,还可以使用未来的帧来进行更准确的跟踪预测。
3.2在线跟踪器:在线跟踪器用于即时预测,因此,他们不能使用未来帧来改善结果。
4.基于学习和基于训练的策略4.1在线学习跟踪器:这些跟踪器通常使用初始化帧和少量后续帧来了解要跟踪的目标。这些跟踪器更通用因为你可以在任何目标周围画一个框并跟踪它。例如,如果你想在机场跟踪一个穿红衬衫的人,你可以在一个或几个帧内,在这个人周围画一个边界框,跟踪器通过这些框架了解目标物体,并继续跟踪那个人。
在线学习跟踪器的核心思想是:中心的红色方框由用户指定,以它为正样本,所有围绕着目标的方框作为负样本,训练一个分类器,学习如何将目标从背景中区分出来。
4.2离线学习跟踪器:这些跟踪器的训练只在离线进行。与在线学习跟踪器不同,这些跟踪器在运行时不学习任何东西。这些跟踪器在线下学习完整的概念,也就是说,我们可以训练跟踪器来识别人。然后这些跟踪器可以用来连续跟踪视频流中的所有人。
流行的跟踪算法OpenCV的跟踪API中集成了很多传统的(非深度学习的)跟踪算法。相对而言,大多数跟踪器都不是很准确。但是,有时它们在资源有限的环境(如嵌入式系统)中运行会很有用。如果你不得不使用一个,我建议使用核相关过滤器(KCF)跟踪器。然而,在实践中,基于深度学习的跟踪器在准确性方面远远领先于传统跟踪器。因此,在这篇文章中,我将讨论用于构建基于AI的跟踪器的三种关键方法。
1.基于卷积神经网络的离线训练跟踪器这是早期的一系列跟踪器之一,它将卷积神经网络的识别能力应用于视觉目标跟踪任务。GOTURN就是一种基于卷积神经网络的离线学习跟踪器,它根本不用在线学习。首先,跟踪器使用成千上万的视频训练一般目标的跟踪。现在,这个跟踪器可以用来毫无问题地跟踪大多数目标即使这些目标不属于训练集。
GOTURN可以在GPU驱动的机器上运行非常快,即100fps。GOTURN已经集成到OpenCV跟踪API(contrib部分)中。在下面的视频链接中,原作者展示了GOTURN的能力。
视频链接:
https://youtu.be/kMhwXnLgT_I
这些是使用卷积神经网络的在线训练跟踪器。其中一个例子就是多域网络(MDNet),它是VOT2015挑战赛的获胜者。由于卷积神经网络的训练在计算上非常昂贵,所以这些方法在部署期间必须使用较小的网络以快速训练。然而,较小的网络并没有太多的区分能力。一种选择是我们训练整个网络,但在推理过程中,我们使用前几层作为特征提取器,也就是说,我们只改变在线训练的最后几层的权值。因此,我们用CNN作为特征提取器,最后几层可以快速在线训练。本质上,我们的目标是训练一个能区分目标和背景的通用多域CNN。然而,这在训练中带来了一个问题,一个视频的目标可能是另一个视频的背景,这只会让我们的卷积神经网络混淆。因此,MDNet做了一些聪明的事情。它将网络重新安排为两部分:第一部分是共享部分,然后有一部分是独立于每个域的。每个域意味着一个独立的训练视频。首先在k个域上迭代训练网络,每个域都在目标和背景之间进行分类。这有助于我们提取独立于视频的信息,以便更好地学习跟踪器的通用表示。
经过训练,去除领域特定的二分类层,我们得到了一个特征提取器(上文共享网络),它可以以通用的方式区分任何目标和背景。在推理(生产)过程中,最初的共享部分被用作特征提取器,删除特定的领域层,并在特征提取器之上添加二分类层。这个二分类层是在线训练的。在每一步中,通过随机抽样的方式搜索前一个目标状态周围的区域来寻找目标。MDNet是一种最精确的基于深度学习的在线训练,不需要检测,单目标跟踪。
3.基于LSTM+CNN的基于视频的目标跟踪器另一类目标跟踪器非常流行,因为它们使用长短期记忆(LSTM)网络和卷积神经网络来完成视觉目标跟踪的任。循环YOLO(ROLO)就是这样一种单目标、在线、基于检测的跟踪算法。该算法使用YOLO网络进行目标检测,使用LSTM网络进行目标轨迹检测。LSTM与CNN的结合是厉害的,原因有二。
a)LSTM网络特别擅长历史模式的学习,特别适合于视觉目标跟踪。
b)LSTM网络的计算成本不是很高,因此可以构建非常快速的真实世界跟踪器。
YOLOINPUT–原始输入帧
YOLOOUTPUT–输入帧中包围框坐标的特征向量
LSTMINPUT–拼接(图像特征,包围框坐标)
LSTMOUTPUT–被跟踪目标的包围框坐标
上面的图我们这样理解:
初步的位置推断(来自YOLO)帮助LSTM注意某些视觉元素。ROLO探索了时空上的历史,即除了地理位置的历史,ROLO还探索了视觉特征的历史。即使当YOLO的检测是有缺陷的,比如运动模糊,ROLO也能保持稳定跟踪。此外,当目标物体被遮挡时,这样的跟踪器不太会失败。
最近,有更多基于LSTM的目标跟踪器,它们通过许多改进比ROLO好得多。但是,我们在这里选择了ROLO,因为它简单且容易理解。
希望这篇文章能让你对视觉目标跟踪有一个很好的理解,并对一些成功的关键目标跟踪方法有一些见解。
更多内容,请关注微信公众号“AI公园”。
电话+V: 159999-78052
机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。