其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。
导言
基于深度学习的算法在图像和视频识别任务中取得了广泛的应用和突破性的进展。从图像分类问题到行人重识别问题,深度学习方法相比传统方法表现出极大的优势。与行人重识别问题紧密相关的是行人的多目标跟踪问题。
在多目标跟踪问题中,算法需要根据每一帧图像中目标的检测结果,匹配已有的目标轨迹;对于新出现的目标,需要生成新的目标;对于已经离开摄像机视野的目标,需要终止轨迹的跟踪。这一过程中,目标与检测的匹配可以看作为目标的重识别,例如,当跟踪多个行人时,把已有的轨迹的行人图像集合看作为图像库(gallery),而检测图像看作为查询图像(query),检测与轨迹的匹配关联过程可以看作由查询图像检索图像库的过程。如图1。
与传统的行人重识别不同的是,行人多目标跟踪中的检测与行人轨迹的匹配关联问题更加复杂,具体表现在下面三个方面:首先,多目标跟踪中的目标轨迹是频繁发生变化的,图像样本库的数量和种类并不固定。其次,检测结果中可能出现新的目标,也可能不包括已有的目标轨迹。另外,检测图像并不像传统行人重识别中的查询图像都是比较准确的检测结果,通常,行人多目标跟踪场景下的检测结果混杂了一些错误的检测(false-alarms),而由于背景以及目标之间的交互,跟踪中的行人检测可能出现图像不对齐、多个检测对应同一目标、以及一个检测覆盖了多个目标这些情况。如图2中所示为ACF行人检测算法的结果。
如何扩展深度学习在行人重识别问题中的研究成果到多目标跟踪领域,研究适用于多目标跟踪问题的深度学习算法是具有挑战性的问题。近年来,在计算机视觉顶级会议和期刊上,研究者从各方面提出了一些解决方案,发表了一些新的算法试图解决这个问题。在这篇文章中,SIGAI将和大家一起对基于深度学习的视觉多目标跟踪算法进行总结和归纳,以帮助理解基于深度学习框架的多目标跟踪算法的原理和相对于传统算法的优势,如果对本文的观点持有不同的意见,欢迎向我们的公众号发消息一起讨论。
基于深度学习的多目标跟踪算法分类
多目标跟踪算法按照轨迹生成的顺序可以分为离线的多目标跟踪和在线的多目标跟踪算法。离线方式的多目标跟踪算法通常构造为目标检测关系的图模型,其中设计和计算检测之间的相似度或者距离度量是决定图模型构造正确性的关键。在线方式的多目标跟踪算法根据当前检测观测,计算与已有轨迹的匹配关系,计算合适的匹配度量决定了匹配的正确性。因此,无论是离线方式的多目标跟踪还是在线方式的多目标跟踪算法,学习检测结果的特征并计算匹配相似度或者距离度量都是多目标跟踪算法的关键步骤。
基于深度学习的多目标跟踪算法的主要任务是优化检测之间相似性或距离度量的设计。根据学习特征的不同,基于深度学习的多目标跟踪可以分为表观特征的深度学习,基于相似性度量的深度学习,以及基于高阶匹配特征的深度学习(如图3)。
利用深度神经网络学习目标检测的表观特征是简单有效的提升多目标跟踪算法的方法。
例如利用图像识别或者行人重识别任务中学习到的深度特征直接替换现有多目标跟踪算法框架中的表观特征[1],或者采用深度神经网络学习光流运动特征,计算运动相关性[2]。采用深度学习提升多目标跟踪算法更加直接的方法是学习检测之间的特征相似性,比如设计深度网络计算不同检测的距离函数,相同目标的检测距离小,不同目标的检测距离大,从而构造关于检测距离的代价函数[3]。也可以设计二类分类代价,使相同目标的检测特征匹配类型为1,而不同目标的检测特征匹配类型为0,从而学习并输出(0,1]之间的检测匹配度[4]。如果考虑已有轨迹与检测之间的匹配或者轨迹之间的匹配,采用深度学习方法可以用于设计并计算轨迹之间的匹配相似度,这种方法可以认为是基于深度学习的高阶特征匹配方法。采用深度学习计算高阶特征匹配可以学习多帧表观特征的高阶匹配相似性[5],也可以学习运动特征的匹配相关度[6]。
下面我们对一些基于深度学习的多目标跟踪算法进行概要介绍。
深度视觉多目标跟踪算法介绍
3.1 基于对称网络的多目标跟踪算法
一种检测匹配度量学习方法是采用Siamese对称卷积网络,以两个尺寸相同的检测图像块作为输入,输出为这两个图像块是否属于同一个目标的判别[3]。通常有三种拓扑形式的Siamese网络结构,如图4。
经过实验表明,第三种网络结构能够生成更好的判别结果。因此,在文献[3]中,Lealtaixe等人采用第三种拓扑形式的Siamese网络训练并计算两个检测的匹配相似度,原始的检测特征包括正则化的LUV图像I1和I2,以及具有x,y方向分量的光流图像O1和O2,把这些图像缩放到121x53,并且叠加到一起构成10个通道的网络输入特征。卷积网络由3个卷积层(Conv-Layer)、4个全连接层(FC-Layer)以及2元分类损失层(binary-softmax-loss)组成,如图5。损失函数为:
其中( , )表示两个检测和,经过卷积之后的输出特征。y表示是否对应相同目标,如果,来自同一个目标的检测,y=1;否则y=0。
为了学习这个网络,作者从真实跟踪数据中抽取训练样本,从利用检测算法得到同一个轨迹的检测对作为正样本,从不同轨迹中得到检测作为负样本,为了增加样本多样性,增强分类器的泛化能力,负样本还包括从检测周围随机采集的重叠率较小的图像块。
学习过程采用经典的带有动量的随机梯度反向传播算法。最小批大小选择为128,学习率初始为0.01。通过50个回合的训练,可以得到较为优化的网络参数。
在Siamese网络学习完成之后,作者采用第六层全连接网络的输出作为表观特征,为了融合运动信息,作者又设计了6维运动上下文特征:尺寸相对变化,位置相对变化,以及速度相对变化。通过经典的梯度下降提升算法学习集成分类器。
多目标跟踪的过程采用全局最优算法框架,通过对每两个检测建立连接关系,生成匹配图,计算他们的匹配状态。通过最小代价网络流转化为线性规划进行求解。
3.2 基于最小多割图模型的多目标跟踪算法
上述算法中为了匹配两个检测采用LUV图像格式以及光流图像。Tang等人在文献[2]中发现采用深度学习计算的类光流特征(DeepMatching),结合表示能力更强的模型也可以得到效果很好的多目标跟踪结果。
在文献[2]中,作者通过观察目标跟踪问题中的检测结果,发现仅仅考虑两帧之间的检测匹配不是最佳的模型表示。如图6,由于存在很多检测不准确的情况,同时考虑图像之间以及图像内部的检测匹配关系,并建立相应的图模型比仅仅考滤帧间检测匹配的图模型具有更广泛的表示能力。
下图是构造的帧间及帧内连接图模型。
类似于最小代价流模型求解多目标跟踪算法,这种考虑了帧内匹配的图模型可以模型化为图的最小多割问题,如下公式所示:
上式中 表示每个边的代价,这里用检测之间的相似度计算。x=0表示节点属于同一个目标,x=1反之。这个二元线性规划问题的约束条件表示,对于任何存在的环路,如果存在一个连接x=0,那么这个环上的其他路径都是x=0。即,对于优化结果中的0环路,他们都在同一个目标中。所以x=1表示了不同目标的分割,因此这个问题转化为了图的最小多割问题。对于最小代价多割问题的求解,可以采用KLj算法进行求解[7]。
现在的问题是如何计算帧内及帧间检测配对的匹配度量特征。作者采用了深度学习算法框架计算的光流特征(DeepMatching)作为匹配特征[8]。图7是采用DeepMatching方法计算的深度光流特征示例。
基于DeepMatching特征,可以构造下列5维特征:
其中MI,MU表示检测矩形框中匹配的点的交集大小以及并集大小,ξv和ξw表示检测信任度。利用这5维特征可以学习一个逻辑回归分类器。并得到是相同目标的概率pe,从而计算公式(2)中的代价函数:
为了连接长间隔的检测匹配,增强对遮挡的处理能力,同时避免表观形似但是不同目标检测之间的连接,Tang等人在最小代价多割图模型的基础上提出了基于提升边(lifted edges)的最小代价多割图模型[9]。基本的思想是,扩展原来多割公式(2)的约束条件,把图中节点的连接分为常规边和提升边,常规边记录短期匹配状态,提升边记录长期相似检测之间的匹配关系。除了原来公式(2)中的约束,又增加了2个针对提升边的约束,即(1)对于提升边是正确匹配的,应该有常规边上正确匹配的支持;(2)对于提升边是割边的情况,也应该有常规边上连续的割边的支持。如图8。
同样,为了计算边的匹配代价,需要设计匹配特征。这里,作者采用结合姿态对齐的叠加Siamese网络计算匹配相似度,如图9,采用的网络模型StackNetPose具有最好的重识别性能。