结合CNN和Bi-LSTM的多行人目标检测跟踪方法
2022-09-09欧群雍谭同德袁红斌
欧群雍,谭同德,袁红斌
(1.郑州工业应用技术学院 信息工程学院,河南 郑州 451150;2.郑州大学 信息工程学院,河南 郑州 450066;3.郑州西亚斯学院 电子信息工程学院,河南 郑州 451150)
0 引言
行人检测跟踪[1]是计算机视觉、视频监控和生物统计学领域中最热门的研究课题之一。虽然提出的多目标跟踪算法很多,但身份切换和遮挡等[2]难题尚未得到较好的解决。特别是在目标交互的拥挤场景中,这类问题会变得更加复杂,跟踪的任务会变得更加困难。
大部分行人跟踪方法以基于检测的跟踪(TBD)为基础[3],将跟踪问题转换为人类检测器检测出的结果之间的数据关联问题。该框架中,首先在视频序列的所有帧中进行目标检测,然后利用数据关联算法对所有帧的检测结果进行关联,从而建立目标轨迹。目标检测和数据关联技术的进步促进了跟踪性能的提高[4]。在检测精度较高的情况下,可以利用帧之间的检测结果的空间重叠,完成检测关联。如文献[5]提出将所有检测结果分类为强(确定)检测和弱(不确定)检测。使用强检测进行初始化和跟踪,弱检测则仅用于在缺失强检测的情况下保持当前轨迹的连续性,在拥挤环境中常会出现漏检、遮挡和目标交互等问题。文献[6]提出了一种融合多特征的Camshift算法与卡尔曼滤波相结合的行人目标检测跟踪方法,利用梯度直方图特征(HOG)结合支持向量机分类器进行多目标检测,利用欧式距离选取距离图像中心像素坐标最近的行人作为跟踪目标。
通过学习判别式目标特征表示,深度学习显著提高了行人跟踪的效果[7]。文献[8]利用从离线预训练卷积神经网络(Convolutional Neural Network,CNN)中得到的目标特征,以在线的方式进行数据关联。文献[9]则在跟踪过程中对预训练CNN进行连续调整,以采用在观察帧中跟踪到的目标外观。文献[10]提出了一种四元CNN在线跟踪方法,并采用了卡尔曼滤波器作为线性运动预测器。文献[11]扩展了文献[10]的方法,提出了一个基于视觉外观的深度关联度量,但由于未考虑每个时间步的后续视频帧,此类方法的整体性能较差。文献[12]提出了特征金字塔网络和Faster R-CNN网络,从而对目标外观、运动和交互进行建模。然而,这些网络的训练需要大量训练数据,且会耗费较大的计算资源。
深度学习算法能够显著提升图像和视频的内容表示,提供更加可靠的特征表征,因此,本文设计了用于行人检测跟踪的CNN与双向长短期记忆(Bi-directional Long-Short Term Memory,Bi-LSTM)相结合的方案。以离线方式求解最小化代价Lifted multicut问题,将关联问题演化为一个聚类任务。通过引入路径预测机制,将最有可能表示同一个人的轨迹片段接合在一起。其主要创新之处总结如下:
① 提出了一个专门用于计算目标匹配的CNN框架,并结合相似性度量和计算出的亲密度,共同形成Lifted跟踪图,有利于后续的运动预测。
② 提出了一个专门用于非线性运动匹配的改进Bi-LSTM框架,并利用从Bi-LSTM得到的运动模式来处理长期遮挡问题。
1 提出的行人检测跟踪方法
提出的行人检测跟踪框架图如图1所示。输入为一个视频帧序列,利用人体检测器来提取所有帧的检测跟踪框。将这些检测跟踪框馈入提出的CNN,以进行训练并计算检测结果的相似度。本文还从检测跟踪框中提取出一些几何线索,例如宽度、高度和位置。在关联图构建过程中,将CNN输出和几何线索考虑为边成本。由此,构建出以检测结果为节点的Lifted跟踪图。利用优化器对该图进行优化,以得到一组原始轨迹片段。提出的Bi-LSTM使用轨迹片段对后续帧中检测结果的移动进行估计。利用该估计,从而:① 处理身份误换和长期遮挡;② 接合多个轨迹片段,从而建立目标的长轨迹。
图1 所提方法的整体框架Fig.1 Overall framework of the proposed method
1.1 目标匹配
本文提出了一个CNN框架进行特征相似度计算。然后,利用该度量定义数据关联图中连接一对检测节点的边成本。为了对同一个人的检测可能性进行量化,取2个RGB检测框图作为输入,并输出这2个检测的相似性得分(以百分比计)。对于CNN的输入,首先,将RGB图像分块重新调整为140 pixel×60 pixel的固定尺寸;然后,按深度堆叠,以形成一个6通道数据张量。
提出的CNN结构如图2所示。在网络训练过程中,使用来自CAVIAR数据集的训练数据,CNN在输入层之后还包含9层。通过3个卷积层对输入数据进行处理,每个卷积层之后均为一个ReLU非线性激活函数。在卷积过程中,使用长度为2的步幅来缩小图片尺寸。其后为4个全连接层,以捕捉图像的相隔较远部分中的特征之间的相关性。为防止过拟合,并提升整体性能,本文在所有全连接层中均采用了50%的Dropout率。将最后一个全连接层的输出馈入一个二元Softmax分类器,生成2个分类标签上的分布(第1个分类表示检测结果属于同一个人,第2个分类表示检测结果属于不同的人)。第1个分类的输出(表示2个输入检测结果较为相似)用于所提行人检测跟踪。
使用CAVIAR数据集对该CNN模块进行训练测试,得到目标跟踪准确度(MOTA)为57.9%,多目标跟踪精度(MOTP)为75.1%,大部分丢失(ML)占比为34.4%。该模块在整个框架中作用巨大,是Lifted 跟踪图的基础,直接影响到预测运动的准确性。另外,该模块对数据张量进行了整合调整,为后续的边成本计算作铺垫。
图2 本文行人匹配的CNN结构Fig.2 CNN structure diagram of the proposed pedestrian matching
1.2 关联图中的亲密度
上一节的CNN框架仅能对目标外观建模,因此,在定义数据关联图中的边成本(亲密度)时,需要考虑额外约束,从而处理网络匹配误差或2个不同目标外观极为相似的情况。即,当检测跟踪框的位置或尺寸不匹配时,需要向具有较高外观相似度的边分配较大惩罚值。此外,为了处理误报检测,本文将检测置信度纳入到边成本中。此处,介绍3个额外的边成本:位置Cp、高度Ch和检测置信度Cs。每个检测跟踪框v∈V包含以下属性:时空位置 (tv,xv,yv)、尺寸hv和检测置信度sv。给定由边{v,w}=e∈E∪E′连接的2个检测v和w,从CNN得到相似度得分Ce。distvw表示2个检测跟踪框的欧氏距离(单位pixel),fr表示视频序列的帧率。则3个额外的边成本可表示如下。
位置:
(1)
(2)
高度:
(3)
(4)
检测置信度得分:
score=min(sv,sw),
(5)
(6)
最终边成本为:
Ct(v,w)=Ce*Cp*Ch*Cs。
(7)
在式(1)和式(3)中,首先通过检测跟踪框的高度对欧氏距离和高度差异进行归一化。由于该高度与目标和相机的距离相关,可将其考虑为一个标度因子。若目标靠近相机,则距离和高度的变化也会较大,反之亦然。归一化步骤在相机位置相对较低的情况下尤为有用。其后,将位置和高度变化除以帧间距,再乘以帧率。由此得到距离和高度的归一化变化率dists和heights。使用训练数据集中的所有视频序列计算出参数{dmax,dmin,hmax,hmin},并作为每个视频序列的输入参数。对于检测成本,若2个置信度得分的最小值低于预定义阈值,则向边成本分配较低的惩罚值。
1.3 利用Lifted multicut进行图分解
针对行人检测跟踪任务,本文使用基于跟踪的检测框架,利用人体探测器生成视频序列的检测假设[13],则跟踪问题被简化为不同视频帧上的检测关联任务。在本文框架中,该问题表示为一个最小化代价Lifted multicut问题[14]。关联图中的每个节点表示单个检测结果,边则连接着不同视频帧的检测结果。此类multicut问题的一个可行解决方案是在时间和空间上对检测结果进行聚类。由此,不需要指定或约束跟踪数量。通过较高的边成本,促进突出显示的节点被标记为同一个目标。在优化过程中,需要将图划分为不同组件,每个图组件代表着对一个人的跟踪。
(8)
式中,集合YEE′⊆{0,1}E∪E′为可行解,该集合中元素y∈YEE′为所有被标注为01标签的边E∪E′。当且仅当某个节点v和另一个节点w之间存在一条路径,且沿该路径的所有的边均被标注为0的情况下,连接节点v和w的Lifted边将被标注为0,其环约束为传递性约束,确保了可行解y能够很好地将图节点聚类定义到轨迹中。详细解释可参阅文献[14]。
本文从检测聚类中生成轨迹,multicut优化针对每个人类目标,在空间和时间上对检测结果进行联合聚类。首先,在每帧中,通过计算属于每个目标的所有检测的位置和尺寸均值,得到该目标的位置和尺寸。其次,连接所有帧上的均值,以得到每个目标的平滑轨迹。
1.4 基于运动预测的遮挡处理
由于CNN的限制,或视频序列过于拥挤,造成Lifted边未能处理一些遮挡的情况下,需要得到目标的运动信息,以处理长期遮挡问题[15]。本文利用从multicut优化中得到的原始轨迹片段的运动信息,对属于同一个人的轨迹片段进行接合。这样能够减少漏检和身份误换的数量,由此提升整体跟踪。
图3给出了利用运动信息,减少遮挡过程中身份误换的方法。在每个时间选择2个轨迹片段,第1个轨迹片段结束的时间早于第2个轨迹片段的开始。此处,将2个轨迹片段之间的帧隙表示为Δt,并将Ti在时间步t处的检测跟踪框表示为Ti{t}。采用运动预测算法,计算在时间步t+Δt处第1个轨迹片段的预测跟踪框,表示为P1{t+Δt};并计算在时间步t处第2个轨迹片段的预测跟踪框,表示为P2{t}。
图3 2个轨迹片段的运动预测Fig.3 Motion prediction of two trajectory segments
如果2个轨迹片段满足以下条件,则将其识别为同一个目标,并在最终解中接合在一起:
overlap1+overlap2≥stitch_thr,
(9)
式中,
(10)
(11)
如果2个轨迹片段的预测检测跟踪框和跟踪检测跟踪框的交并比大于阈值,则将这2个轨迹片段合并为一个新的轨迹片段。若存在多个轨迹片段可接合到Ti,则选择具有最大overlap1和overlap2的轨迹片段。
对于运动预测,还需要克服一些难题:① 带噪检测结果可能会导致目标运动的非线性预测,即,使目标实际运动是线性的;② 如果视频从视线高度的相机位置拍摄,则跟踪框的宽度会改变,以适应人的行走姿态。该问题无法直接解决,因为对于不同的跟踪框尺寸、行走速度甚至走路习惯,宽度的变化模式也会不一样。为此,本文设计了一个Bi-LSTM,并稍作改进,以学习如何根据目标的过去行走模式,生成未来行走模式。具体如图4所示,信息在时间维度和空间维度中传递,隐藏层为2个残差块。其中,2个Bi-LSTM单元组成一个残差块,总共8个Bi-LSTM单元,激活函数采用ReLU。与一般Bi-LSTM不同的是,改进后的Bi-LSTM特点是能融合累积相邻帧的特征,从而更好地对行人信息进行获取。
图4 本文改进Bi-LSTM的网络结构Fig.4 Network structure of the improved Bi-LSTM
在本文Bi-LSTM中,每个时间步的Bi-LSTM的输入是邻近检测跟踪框之间的差异向量{ΔXi,ΔYi,ΔWi,ΔHi} = {Xi-Xi-1,Yi-Yi-1,Wi-Wi-1,Hi-Hi-1}。在输入层和Bi-LSTM单元之间为一个不带激活函数的全连接层(作为线性层)。线性层的输出是大小为M的向量。利用该线性层对输入特征向量的大小进行扩展,以提高训练过程的效率。其后,将扩展输入向量通过Bi-LSTM单元,内部大小为N。每个Bi-LSTM单元向外指向的2个箭头,表示Bi-LSTM单元的2个输出。这2个输出均是大小为N的向量,其中,一个为单元的输出向量,另一个为Bi-LSTM的隐藏状态。对于Bi-LSTM的输出向量,使用另一个线性层将向量大小降为4。该向量表示在下一个时间步的跟踪框变化。在训练过程中,将所有训练输入序列前移一个时间步,并用其作为训练标签。利用L2损失函数对训练标签和网络最终输出进行比较。然后将损失最小化,以通过反向传播算法对网络的权重和偏置进行更新。使用跟踪框参数的变化,而非直接使用跟踪框参数,主要是因为原始跟踪框参数是非定常参数。
2 实验结果和分析
实验在配置为Intel 酷睿i7-4500u双核CPU,2.80 GHz,RAM 16 GB的个人电脑上进行,GPU为NVIDIA ATX Titan X,Windows10操作系统。开发环境为Python 3.5.0语言的PyCharm集成开发工具,使用Keras架构提供的CNN和Bi-LSTM。
2.1 参数与方法实施
在CNN的训练过程中,采用Adam优化器以最小化二元交叉熵损失函数[16]。在每代中,首先随机打乱图像对的次序,采集100对图像作为一个小批量,以零均值正态分布对层权重进行初始化。将学习率初始化为10-4,并每4代降低10倍。为避免过拟合,每1/3代对网络进行一次检验,网络在NVIDIA ATX Titan X上训练。训练速度为每秒300~400个样本,测试速度为每秒1 100个样本,训练过程在10代后收敛,测试准确度峰值为95.8%。使用训练集数据,生成CNN的训练图像对。网络的全连接层中均采用了0.5的Dropout率,训练权重衰减参数设置为0.000 04,批大小设为32,动量设置为0.9。共计638 091个阳性检测对和134 471个阴性检测对用于训练。此外,共计69 308个阳性检测对和76 117个阴性检测对用于验证。生成3种类型图像对:① 通过对后三帧中检测结果的ID进行核查,生成同一个人的成对检测。这些成对检测标注为1,表示阳性对。② 通过检查检测结果的真实ID,得到来自不同人的成对检测。此类检测对被标注为0,表示阴性对。③ 由一个来自真实目标和一个误报检测所组成的检测对,标注为0,即阴性对。
此外,本文通过连接特定帧隙上的检测,来建立关联图。这对于短期遮挡情况下的行人跟踪至关重要。但如果增加帧隙,会降低成对外观相似度特征的可靠性。因此,本文在构建图时,基于输入视频序列的帧率来确定最大帧隙。使用的分数阈值和相应的帧隙范围如表1所示。该阈值会随着帧隙的增加而下降,因为帧隙越大,运动估计的可靠性越低。针对静止相机和移动相机分别使用2组阈值。在移动相机场景中,轨迹的运动较难预测,因此需放宽条件。
表1 不同帧隙下的接合得分阈值
2.2 评价指标
本文利用CLEAR MOT度量[17]来评价所提方法的性能,CLEAR MOT中包括多目标跟踪准确度(MOTA),多目标跟踪精度(MOTP),大部分跟踪占比(MT,跟踪部分与真实重叠超过80%的跟踪轨迹占比),大部分丢失占比(ML,跟踪部分与真实重叠小于20%的跟踪轨迹占比)。MOTA中包含3种错误类型:误检数量(FP)、漏检数量(FN)以及身份误换数量(IDS),本文选择IDS指标。FAF度量表示每帧的平均虚警数,Frag表示跟踪轨迹突然丢失的次数。
2.3 CAVIAR数据集
CAVIAR数据集收集了室内商场环境下行人行走的视频,这些视频大多是静态相机拍摄获得。该数据集的特点是,行人行走过程有时会合并,有时会拆分,因此,视频中的行人很多情况下发生遮挡,这种情形比较适合本文评估的情形。各方法在CAVIAR数据集上的评价结果如表2所示。其中,ML,Frag和IDS越小,表示发生跟踪错误或跟踪丢失的次数越小,也表示跟踪的效果越好。MT表示有效跟踪的占比,MT值越高表示跟踪准确性越高。从表2可以看出,所提方法的行人跟踪效果较好,仅次于胶囊网络方法[18],行人的跟踪片段关联较好,遵循基于检测的跟踪范式,通过聚类图优化得到较短的高置信度轨迹片段,路径预测机制的作用得到了较好的体现。文献[6]的低层视觉特征方法和文献[10]的CNN方法表现不佳,这是因为低层特征在跟踪片段关联方面表现较差。文献[19]采用头部信息和整体信息的融合进行多目标检测,但这些信息必须是针对性的,整体来说,该方法低层特征的融合,其跟踪片段的关联性表现一般。文献[18]采用了胶囊网络进行多个行人的检测跟踪,其特点是不需要太多的训练数据,训练数据泛化能力较强,由于胶囊网络的“等变性”[18],可以保留输入图像的微小变化,整体性能较好。
表2的IDS数值中本文方法最低,最低的IDS值表明行人跟踪过程中,身份切换的次数最少,而引起身份切换的因素一般包括严重遮挡和少数不可控的运行方式,因此,所提方法对这种极端情况处理的较好。图5给出了一个跟踪示例,可以看出,独自行走和交叉穿越的行人被准确标记出来,交叉和遮挡前后的行人依然被准确地标记和跟踪。
表2 CAVIAR数据集上的评估结果
图5 CAVIAR数据集上的行人跟踪结果Fig.5 Pedestrian tracking results on CAVIAR dataset
2.4 PETS2009数据集
为了进一步分析评估所提方法,使用PETS2009 作为评估数据集,PETS2009数据集包含多个人群活动的视频,由1个或多个固定相机拍摄。基本上,每帧的行人数量较多,平均有25个之多。由于频繁地交叉运动和遮挡,因此,跟踪目标的相似性和遮挡导致行人跟踪的难度较大。PETS2009数据集比CAVIAR数据集难度更大。
表3给出了PETS2009数据集上的评估结果。可以看出,由于数据集跟踪的困难,所有对比方法的跟踪性能都有所下降,但本文相较于其他方法依然有一定提高。大部分跟踪占比依然有79.1%,与最优性能的胶囊网络方法[18]相差无几,也就是说,跟踪的连续性和有效性依然较高,同一个人的轨迹跟踪片段连接性较好。由于数据集的难度增加,低级视觉特征的方法在表征目标时会出现明显的性能劣化,这是因为在复杂情形下,目标表征的准确性和跟踪持续性得不到保证。
表3 PETS2009数据集上的评估结果
图6给出了一个行人跟踪示例,其中,白色跟踪框表示独自行走的人,不同颜色表示不同的跟踪群体,虚线表示行走的轨迹,该轨迹长度一般固定,且会随行人行走的方位等信息发生变化。
图6 PETS2009数据集上的行人跟踪结果Fig.6 Pedestrian tracking results on PETS2009 dataset
2.5 遮挡处理分析
遮挡处理非常重要,合理的遮挡处理可以让跟踪的鲁棒性更强,使方法对极端情况的处理更加有效。图7是一个不带遮挡处理的案例,ID4在第57帧中被ID1遮挡,由于没有遮挡处理,ID4变成新的ID44,从而导致跟踪错误;与此同时,ID27也因为新的ID44遮挡,导致原ID27变为ID76。可以看出,不带遮挡处理会产生至少1个以上的身份误换,这也从侧面验证了遮挡处理的重要性。
图7 不带遮挡处理的结果显示Fig.7 Result display without occlusion processing
为了对遮挡处理的性能进行定量分析,表4给出了使用和不使用遮挡处理时,在PETS2009和CAVIAR数据集训练集上的跟踪结果,其中,FP+FN表示误报和漏检数量之和。确定跟踪性能的2个重要指标是:① 误报数和漏检数之和;② ID误换次数。从中可观察到,带遮挡处理的效果明显降低了FP和FN的数值,也明显降低了ID误换的次数。由于PETS2009更加复杂多变,造成了FP+FN数值更高,ID误换次数更多。
一般情况下,较久的遮挡依然会造成ID误换的次数较多。鉴于此,本文使用遮挡前和遮挡后的轨迹片段的运动线索,从而对大概率属于同一个目标的轨迹片段进行准确关联。但长期遮挡、丢失检测、不准确的检测跟踪框,以及人类行走特性依然会造成严重的非线性变化。同时,PETS2009和CAVIAR数据集上的实验也表明,在静态相机场景中,提出的方法能够预测后20帧的检测跟踪框参数,足以有效处理长期遮挡。
表4 带遮挡处理和不带遮挡处理的分析
2.6 消融实验
为了明确提出的和改进的各部分组件在跟踪效果方面的影响,以CAVIAR数据为例进行消融实验。本文方法主要包含5个模块:① 特征提取模块(人体检测器);② CNN目标匹配模块;③ Lifted跟踪图模块;④ 优化的Bi-LSTM模块(针对遮挡处理);⑤ 分类模块(判定目标是与否)。由于分类模块是必须存在的,因此保留分类模块。分别删除其他模块,然后进行实验,其结果如表5所示。可以看出,相比于整个框架,删除某个模块后,其各指标性能均有所下降,这说明各组件在所提方法中均具有一定作用。其中,删除模块①,性能下降最多,MT只有51.7%,这是因为初始特征非常粗糙,所以模块①是核心组件;分别删除模块②或模块③,也明显降低了整个性能。其中,删除CNN目标匹配模块后使得Lifted跟踪图的构建非常粗糙,而删除Lifted跟踪图会使得后续的跟踪预测不准确。删除模块④,使用一般Bi-LSTM会使得整体性能有所下降。因此,改进后的Bi-LSTM对整个框架性能是有益的。
2.7 运行效率分析
在PETS2009和CAVIAR数据集上的训练时长和运行帧率情况如表6所示。其中,本文方法的训练速度和运行帧率排名较为靠前。运行帧率在25 帧/秒以上,基本达到实时要求,训练时长在1 h左右。其中,文献[6]采用低层视觉特征方法,利用SVM检测,卡而曼滤波进行预测,并关联目标,运行效率一般。文献[10]采用一种四元CNN框架,是一种轻量级的方法,在线跟踪速度较快。文献[11]也采用了四元CNN框架,增加了视觉外观的深度信息,牺牲了一部分运行效率。文献[19]采用头部信息和整体信息的融合进行多目标检测,其头部和整个身体的金字塔信息融合较为耗时。文献[18]采用了胶囊网络进行多个行人的检测跟踪,不需要太多的训练数据,数据泛化能力强,训练速度较快,但该方法考虑了行人的复杂姿态估计,但总体运行效率不高。
表6 运行效率比较
3 结束语
本文提出了一种多行人检测跟踪方法,结合了CNN和Bi-LSTM框架。其中,训练CNN以预测2个检测结果属于同一个目标的可能性,并将不同的标准,包括检测的高度、位置和置信度得分,作为图数据关联模型中的边成本。通过求解图模型的最小化代价Lifted multicut问题,得到初始轨迹片段。为减少长期遮挡中的ID误换数量,使用一种改进的Bi-LSTM预测运动信息,将轨迹片段接合在一起。实验结果验证了所提方法的有效性和优越性。未来,将尝试在图模型中加入其他约束,例如身体形态或头部姿态,以扩展所提方法的适用性。