简介:对视频中的多目标检测和跟踪算法进行简要概述。
随着科技的不断进步和发展,人们的科技意识也在不断提高,人工智能技术也在逐渐改变着人类的生产和生活方式。回望过去几年,全世界各大互联网公司都在不断加强对人工智能领域的投资,将来人工智能领域会不断地蓬勃发展,对人工智能领域的研究也是大势所趋。在图像处理和计算机视觉这两个领域,全球的广大学者也取得不错的成绩。计算机视觉本质上就是研究视觉感知问题,通过采集的视频或图像进行处理,以获得相应场景中的信息。计算机视觉主要包括图像处理、目标检测、目标跟踪、目标识别、行为分析等方面。计算机视觉的最终目的就是希望人类能像计算机一样能轻松自如的处理各种复杂的事物,并且计算机也被希望能够像人类一样可以有自主适应环境的能力,能够自主的思考和学习。但是仅凭人类的视觉是有限的,比如在相互拥挤的场景中,视觉上的遮挡使人类很难对其进行跟踪,但是通过计算机视觉中的方法可以补充和完善人类视觉的不足。因此,对计算机视觉的研究逐渐成为一个流行的趋势。
目标跟踪按照跟踪的环境分为单摄像头跟踪和多摄像头跟踪,多摄像头由于视野范围较广能够更好的处理遮挡情况下的目标跟踪,但是,解决多个摄像头之间的关联是个棘手的问题。按照跟踪目标的多少可以分为单目标和多目标的跟踪,多目标跟踪比单目标跟踪要复杂,涉及数据关联。单目标跟踪可以简单理解为对一个目标连续数据的滤波,多目标跟踪需要在单目标跟踪的基础上进行数据关联,这是多目标跟踪的关联,数据关联的好坏基本决定了多目标跟踪的优劣。由于多目标跟踪能为更高层次的分析和决策提供支持,所以多目标跟踪应用的范围更广。但是在多目标跟踪中依然存在一些难题,比如目标发生形变、目标外形相似、目标被遮挡、目标不规律运动、目标背景发生变化等问题。但是作为计算机领域的核心课题,依然有着广泛的应用:
治安监控领域:随着人们安全意识的提高,视频监控已经部署在各种场景中。在视频监控中可以对其中的可疑人员进行密切跟踪,从而可以帮助警察对不法分子进行跟踪,帮助其破案。
军事领域:随着科技发展水平的提高,科技对军事的作用越来越显著。现代战争中可以利用多目标跟踪对敌人和军事武器装备进行定位和跟踪,能够大大提高作战效率。
人机交互领域:人机交互刚开始主要是通过鼠标、键盘等硬件设备进行操作。但是现在已很难满足人们的需求,现代意义上的人机交互可以实现通过表情、姿势等与计算机进行交流。而这一切都离不开目标的检测和跟踪。随着多目标跟踪应用领域的不断扩展,多目标跟踪技术也在不断地提高,目前比较主流的方法是通过机器学习或神经网络进行跟踪,虽然跟踪准确率有所提高,但是,因为跟踪对象存在遮挡、形变、外形相似等因素的影响,多目标跟踪技术需要更优化的算法来提高准确率和实用性。
多目标跟踪作为计算机视觉一个重要的研究领域,其研究的主要目的是为了估计在感兴趣区域内的目标数量以及每个目标的状态,然后对其感兴趣区域进行跟踪。这一过程包括目标检测、跟踪和数据关联,数据关联主要用到外观特征、运动特征、形状特征等。现在的多目标跟踪算法主要是基于深度学习和机器学习算法来实现。
多目标跟踪的研究具有非常实用的现实意义,主要在智能监控、动作与行为分析、自动驾驶、虚拟现实和娱乐互动等领域都有重要的应用。例如,在自动驾驶系统中,目标跟踪算法要对运动的车、行人、其他动物的运动进行跟踪,对它们在未来的位置、速度等信息作出预判;在虚拟现实领域里,需要根据摄像头捕捉到的人物动作和轨迹,实现人机交互的目的;在智能安防领域,在部署的监控系统环境下,利用安防巡逻机器人对行人进行定位、跟踪以及目标身份的识别;在医疗卫生领域,利用核磁共振、药物专向靶入技术等医疗辅助技术的帮助下,可以对病人的病变位置进行跟踪,观察其病变位置是否扩散。所以多目标跟踪在各个领域都有着广泛的用途,使其研究具有非常重要的现实意义。
目标检测,也称之为目标提取。包括目标分割和识别,目标分割就是对图像按照某个特定的要求进行分割,然后对感兴趣的区域进行进一步处理。目标识别就是从所有的目标中区分出其中一种目标的过程。目标检测的过程就是将目标分割和目标识别结合起来,目标检测结果的优劣直接影响目标跟踪的效果。因此目标检测在跟踪的整个过程中尤为重要。特别是在行人大幅度运动、光线大幅度变化以及存在严重遮挡这种复杂情况下,需要更加优化的算法进行目标检测。目标检测分为两种,一种是传统的方法,即检测出视频中的目标而不进行分类。另一种是利用深度学习模型,首先对图像提取特征,然后对检测到的目标进行分类。目标检测领域涌现出不少比较成熟的算法,但检测效果各有优劣。比较常用的目标检测算法有帧间差分法、背景减除法、光流法、R-CNN、Fast R-CNN、Faster R-CNN、YOLO(You Only Look Once)、SSD(Single Shot Detector)等算法。
帧间差分法是在提出利用深度学习模型进行目标检测之前比较常用的目标检测算法之一。帧间差分法就是将图像前后两帧或三帧进行相减以获得目标的运动轨迹,其比较适合运动物体的检测。可以根据灰度值的变化判断目标是处于静止状态还是运动状态,灰度值变化小则认为目标是静止的,而如果灰度值变化比较大则认为是有物体运动导致的,判断为运动状态。如果是运动状态则标记这些区域,然后根据这些标记区域能够快速检测出场景中的运动目标。
但是,帧间差分法的缺点是检测的目标不完整,因为相邻帧之间的变化很小,即使是运动物体也不容易检测。帧间差分法通常不单独用在目标检测中,单独使用的目标检测往往效果不佳,所以根据算法取长补短的思想经常与其它的检测算法结合使用,可以使目标检测的效果更佳。
背景减除法[思想和帧间差分法相似,将视频序列中的当前帧与背景图像进行差分,如果当前帧与背景区域差别不大的话则认为是背景区域,相差比较大的话则认为是运动区域。此算法中背景图的选择不是一成不变的,而是随着外部环境的变化不断更新。背景减除法的核心部分就是对背景区域的选择和建模,目前有很多背景建模方法,主要分为回归和非回归递推。非回归递推包括帧间差分法、中值滤波方法等。回归递推包括卡尔曼滤波法、混合高斯模型等。背景减除法速度快、较准确、鲁棒性较好,也是比较适合对运动物体的检测,但是对于背景图像实时性更新较难。因此,优化此算法可以从背景图像更新方面入手。
光流法[按照光流的稀疏程度可以分为稀疏光流法和稠密光流法。光流法对外界环境的要求比较高,如噪音、光照会影响目标检测的效果,而且光流法不太适合实时的目标检测。所以,近几年在目标检测方面很少用到光流法。
传统的目标检测算法只能对目标进行检测,不能对分类。伴随着人工智能和卷积神经网络的发展,目标检测得到了更好的发展。利用深度学习网络模型进行特征提取,从而实现目标检测。不仅可以实现目标检测还可以对检测到的目标进行分类,如对视频序列中的行人、车辆、猫、狗实现分类。而且检测的准确率、实用性和速度也有所提高。
Alexe等人提出了Alexnet网络结构,在 2012 年ImageNet图像分类任务竞赛中AlexNet一鸣惊人,对 128 万张 1000 个分类的预测结果超过其他算法模型准确率,打败其它非DNN网络。Girshick等人提出R-CNN(Regions with CNN features)算法,该算法是用来做目标检测的经典算法,2014 年提出,在目标检测的精确度上取得不错的成绩。但是,R-CNN的缺点就是训练的过程比较繁琐,而且会占用大量的时间和磁盘空间。为了解决这些问题在 2015 年Girshick提出Fast R-CNN目标检测算法。Fast R-CNN解决了训练过程繁琐的问题,更加注重时间和空间的利用,进而提高了目标检测的速度。Redmon等人在 2016年提出YOLO目标检测算法,该算法既可以针对大目标检测也可以针对小目标检测。其检测精确度更高,速度更快。
多目标跟踪算法分为生成式和判别式两种,生成式的跟踪算法是对视频序列中出现的新的图象帧寻找与目标最相似的位置。判别式的跟踪算法首先对目标提取关键特征,然后通过分类找到与目标最相似的位置。无论是生成式跟踪算法还是判别式跟踪算法都是寻找与目标模型最相似的区域。目标跟踪可以自主的对感兴趣的区域进行初始化也就是人工标注第一帧的方法,也可以是基于训练检测器的初始化。基于训练检测器的初始化首先需要目标检测,然后链接到已有的轨迹中。这种策略也通常被称为“Tracking -By- Detection”。跟踪目标的数量、跟踪目标的类型全部由检测算法的结果来决定,无法预知。也就是说多目标跟踪过程包含一个独立的目标检测过程。这种方法性能比较依赖于检测算法的好坏。基于人工初始化的目标跟踪是目标跟踪领域研究刚起步的时候比较常用的方法,目前用的比较少。其缺点就是只能对出现在第一帧中的目标进行跟踪,没办法处理对中间帧出现的目标进行跟踪。按照轨迹生成的顺序可以分为离线的多目标跟踪和在线的多目标跟踪算法。一般而言,在线多目标跟踪更适用于实际情况,即视频一般时序列化得到,用到的是直到当前帧的前面所有帧的信息。但是,离线多目标跟踪因为是通过提前获取视频中所有帧的观测目标,经分析计算组成最后的输出,所以更可能得到全局最优解。对于是采用离线的多目标跟踪算法还是在线的多目标跟踪算法还是要根据具体跟踪的场景来确定。
比较经典的多目标跟踪算法有卡尔曼滤波、粒子滤波、核相关滤波器(Kernel Correlation Filter,KCF)、时空上下文算法、马尔科夫决策算法等。 卡尔曼滤波早在 60 年代被提出,之后应用在目标跟踪领域,如今仍然是目标跟踪领域中比较常用的算法。卡尔曼滤波算法是对跟踪目标进行状态估计,如果被跟踪的目标被遮挡时无法检测出具体的位置,就需要使用卡尔曼滤波进行预测目标下一时刻可能出现的位置。从而能够实现准确的目标跟踪,能够解决目标丢失的情况,卡尔曼滤波也有其缺点,如果物体运动过快会出现跟踪失败的情况。而粒子滤波算法是一种应用于非线性状态的跟踪,同样也可以对目标的运动状态进行预测。2014 年由Caseiro R等人[提出来核相关滤波算法(KCF),作为经典的相关滤波算法无论在目标跟踪的准确度还是速度上都取得不错的成绩。Yu等人提出马尔科夫决策算法(MDP),采用集目标检测与目标跟踪于一体的TLD算法。作者把在线多目标跟踪问题看成MDP做决定的问题,一个目标的生存期由一个MDP建模,多个目标的跟踪就用多个MDPs建模。策略学习以强化学习的方式进行,在进行数据关联时,能够从在线学习和离线学习中获益。MDP还可以基于目标的当前状态和历史信息做决定,除了学习策略的优势,所提框架能够处理目标的出生状态或死亡状态和跟踪状态或丢失状态,根据奖励函数对各个状态进行转换。马尔科夫决策算法可以针对单摄像头的多目标跟踪也可以是多摄像头的多目标跟踪。多摄像头的多目标跟踪中摄像头之间的关联可以形式化为无向加权图的优化问题。Zhang等人提出了时空上下文跟踪算法(STC)。时空上下文跟踪算法的原理是利用时间信息和空间信息进行跟踪,在时间信息中利用相邻帧目标位置不会变化太大,在空间信息中利用目标和目标周围的背景存在某种特定的关系,如行人旁边有一棵树,那么此行人就和这棵树在空间上是关联的。当目标的外观发生很大变化时,这种关系可以帮助区分目标和背景。时空上下文算法可以解决存在遮挡时的目标丢失或跟踪漂移问题。
多目标跟踪算法的难点就是解决对多个跟踪目标的数据关联问题,经常使用的是匈牙利算法。尽管目标跟踪也向深度学习方向发展,但是发展还是比较缓慢。主要还是使用传统的跟踪算法,但最近比较主流的跟踪算法融合了传统的目标跟踪和基于深度学习网络模型的跟踪算法。
