一种新的行人多目标跟踪算法

2021-04-15 03:48
计算机应用与软件 2021年4期
关键词:轨迹行人模板

樊 璐 张 轶

(四川大学计算机学院 四川 成都 610064)

0 引 言

行人检测和跟踪是计算机视觉行业长久以来一直着力解决的问题之一,解决该问题有助于多个行业和技术的发展,包括智能视频监控、人机交互、智能辅助驾驶、自动驾驶、机器人主动视觉等[14]。行人检测即在图像或者视频中识别出行人同时标注每个行人的位置。行人检测的方法一般分为基于模板匹配以及基于统计学习两种方法。基于模板匹配的方法即构建一个可以描述所有行人特征的模板,例如:方向梯度直方图(HOG)[21]行人特征描述子结合支持向量机(SVM)进行行人检测;可变型组件模型(DPM)[19]与HOG特征描述子结合解决了检测中遮挡的问题;局部二值模式(LBP)[23]也可以与HOG和SVM结合成为一个鲁棒的行人检测器。2012年AlexNet[16]在计算机视觉竞赛ILSVRC夺得桂冠之后,深度学习开始在计算机视觉领域大行其道。深度学习通过大量的标注数据、深层的网络结构获取图像的深层特征,从而大大提高了目标识别的精度。对于行人检测的深度学习研究也有了很多成果,比如使用CNN结合部位检测以及DPM进行行人检测[13],使用单一部位检测及其组合进行行人检测[10]。

传统的目标跟踪算法有均值漂移(meanshift)[13]算法、CamShift[22]算法、卡尔曼滤波跟踪算法[25]。2014年提出的KCF[11]算法将相关滤波引入到目标跟踪邻域,利用跟踪的目标信息训练出一个相关滤波器在图像中计算响应值,响应值最高处便是跟踪目标所在的地方。由单目标跟踪扩展到多目标跟踪的算法有基于流网络的方法[18]、基于k最短路径的方法等[17],但这些多目标跟踪方法往往存在较多的缺点,比如漏检测、匹配失败等问题。近年来效果比较好的多目标跟踪方法多是基于track-by-detection框架[12],将检测与跟踪结合,能够达到很好的跟踪效果。

本文同样采用track-by-detection框架,针对行人检测进行优化并得到定位准确率和识别率都较高的检测算法,随后比较并提出更好的目标匹配方法,结合两者构成本文的跟踪框架,取得了比较好的跟踪结果。本文主要贡献如下:(1) 基于YOLO网络优化并训练得到了精确率很高的行人检测器;(2) 基于孪生网络的思想,提出了匹配网络实现检测目标与跟踪轨迹之间的匹配;(3) 针对目标跟踪会出现的目标漂移问题,采用灵活的目标模板更新策略;(4) 为了降低目标匹配时的计算量过大、时间过长的问题,对算法进行了优化,降低了计算量。

1 行人检测算法与目标匹配方法

1.1 行人检测算法选择

传统的行人检测方法存在着许多缺点:使用底层特征,行人特征表达能力不够;特征可分性较差,易发生误检;泛化能力较差,不能适应不同的场景。因此,本文选取深度学习方法作为行人检测器。目前主流目标检测算法包括Faster-CNN、YOLO和SSD。Faster R-CNN[6]作为RCNN目标识别网络发展的最新成果,加入了RPN网络,在精度方面达到很高水平。不同于Faster-RCNN的two-stage结构,YOLO[7]将图像划分为数个网格,一次性预测每个格子包含目标的包围框、定位置信度以及所有类别的预测向量,从而完成目标识别,该算法大大提高了目标识别的速度。SSD[8](Single Shot MultiBox Detector)在YOLO的基础上,除了最后的特征图之外又选择了另外5个特征图进行预测,提高了对不同尺度目标的识别精度。由于目标跟踪对实时性的要求比较高,因此本文选择了耗时最小的YOLO算法作为行人检测器。

本文中采用最新的YOLOv3[1]结构,该结构添加了多个尺度融合的方式进行目标检测,提高了对于小目标的识别精度。YOLOv3的检测过程和网络结构如图1所示。

图1 YOLO行人检测网络框架

该网络结构接收输入图像,使用DarkNet53提取图像特征,为了更好地适应不同尺度的检测,网络使用了特征金字塔(Feature Pyramid Network,FPN)方式对不同尺度的特征图进行融合,得到三幅包含不同尺度信息的特征图,分别在三幅特征图上预测目标边界并计算类别概率实现目标的识别和定位。

1.2 行人检测算法训练

在训练YOLO进行行人检测时,使用在ImageNet上训练的模型作为预训练参数。训练数据集选择INRIA数据集,其中训练集包含614幅正样本图像,包含行人1 237个,负样本图像1 218幅;测试集包含288幅正样本图像,包含行人589个,负样本图像453幅。数据集涵盖了行人检测中出现的光照、遮挡、姿态等各种不同的情况。同时,还通过翻转、缩放、裁剪、移位等数据增强方法,提高数据集的数量,从而提高检测算法的鲁棒性。

首先计算IoU(Intersection over Union):

(1)

式中:Pred表示预测框;GT表示真实框。IoU值表示预测框与真实框的重叠程度。

计算得每个检测框的最终置信度:

conf=P(object)×IoU

(2)

式中:P(object)表示该检测框包含目标的概率。对于每个框再计算目标为行人的概率:

P(person)=P(person|object)×conf

(3)

由于本文中使用YOLO只进行行人目标检测,因此采用了式(4)中的binary cross-entropy loss取代本来的softmax cross-entropy loss,更好地提升单目标检测的精度。

Eclass=-[y×log(p)+(1-y)×log(1-p)]

(4)

式中:y表示目标的标签,行人标签为1,背景标签为0;p表示目标预测为行人的概率。式(5)所示的YOLO的损失函数综合了预测框与真实框的误差、IoU误差和分类误差。检测过程过程如图2所示。

(5)

图2 YOLO行人检测过程

实验证明经过本文的训练,YOLO行人检测达到了很高的精度,能检测到各种场景中的行人目标。然而,检测方法对各个目标之间并没有区分度,因此并不能将检测目标划分到各自应该在的跟踪轨迹中。所以检测算法需要结合一个匹配算法,才能最终实现跟踪。

1.3 多目标匹配

以往在多目标跟踪中,经常使用匈牙利算法进行检测目标与跟踪轨迹之间的匹配。匈牙利算法即图论中的最大匹配算法。该算法利用检测和跟踪轨迹模板之间的匹配程度,从第一个检测目标开始为其匹配一个最佳的跟踪轨迹,并通过递归计算,找到尽可能多的匹配目标。若某个目标或者某个跟踪轨迹最终没有找到匹配,则进行相应的处理。该方法有两个缺点:一是对于匹配程度计算方法的准确率要求较高;二是其找到的最大匹配有可能不是真实的最佳匹配,会严重影响跟踪的准确率。

KM算法是对匈牙利算法的一个改进,为目标和轨迹构成的二分图分配权重,权重来自于计算得到的目标-轨迹之间的匹配程度,该算法从匹配的角度大大提高了匈牙利算法的准确度。然而,KM算法仍旧无法解决计算匹配程度不准确对多目标跟踪精度的影响。由于孪生网络[24]在图像检索方面的优势早已被证明,近年来,该方法也多次被应用于单目标跟踪,用于匹配前后帧的单一目标。本文也采用该思想,与之不同的是,本文设计了匹配网络来提取行人特征并实现多个目标与多个轨迹之间的匹配。本文匹配网络主要原理可表达如下:

f(z,x)=g(φ(z),φ(x))

(6)

式中:z和x分别表示目标模板图像和检索图像;φ表示使用匹配网络来提取特征;g表示计算特征之间的相似度;f表示比较相似度的结果。事实证明,匹配网络具有良好的图像匹配效果。

本文同样利用该网络结构在图像匹配中的优点,在获得行人检测的结果之后,使用匹配网络将检测结果与跟踪模板进行匹配,获得快速鲁棒的跟踪效果。对于检测到的每一个目标,将其转换为128×128的大小,送入到匹配网络中提取特征,然后计算检测目标的特征与跟踪轨迹模板的特征之间的相似度。本文采用了如图3所示的匹配网络结构,其中特征提取网络的结构如图4所示。

图3 本文的匹配网络结构

图4 匹配网络中的特征提取部分结构

经过匹配网络,每个目标得到一个512×6×6大小的特征图。在计算特征之间的相似度时,本文选用式(7)计算得到相似度。

(7)

式中:A和B分别表示目标图像特征以及跟踪轨迹模板特征中对应的向量。最终,对相似度矩阵进行求和得到最终相似度,如式(8)所示。其中xi指由式(7)得到的余弦距离组成的相似度矩阵中的元素。

Similarity=∑xi

(8)

为了最大化匹配网络对于不同行人的分辨能力,本文使用大量的行人数据集进行训练。由于普通的行人数据集一般都来自于不同的场景,匹配网络可能学习到的是场景之间的分辨能力,而忽略了对于行人之间的分辨能力。因此为更加适合目标跟踪的需求,本文选取了MOT数据集中几个多目标行人跟踪的图像序列训练匹配网络。首先根据MOT数据集提供的标注信息裁剪出所有的行人目标,然后将在同一个跟踪序列的目标归为一类,获得数个不同行人的图像集,并按照2∶1的比例分为训练集和测试集。由于本文的匹配网络是基于行人检测算法的结果,因此匹配网络不再负责目标和背景之间的区别,而只专注于行人与行人之间的差别,也就是说,数据集中不再添加随机选取的背景图像作为负样本。在训练时,每次随机选取数据集中的两个图像,将其归一化到128×128的大小,经过匹配网络获取特征并由余弦距离计算相似度,采用式(9)所示的对比损失函数作为训练的损失函数,其中:当两幅图像来自同一个行人的数据集时,y取1;否则y取-1。

LContrastive=log(1+exp(-y×Similarity))

(9)

经过多次的迭代训练,匹配网络在测试集上达到了很高的正确率,为本文的行人多目标跟踪算法精度提供了保证。

2 多目标跟踪

在选取了合适的行人检测算法并训练得到正确率足够高的匹配网络之后,本文的主要框架已经大致完成。但是,多目标跟踪是一个相当复杂的场景,需要解决的问题如下:第一,跟踪模板的更新问题,频繁更新模板会造成目标偏移,不更新模板又会造成匹配失败。第二,计算量问题,检测结果与模板进行两两匹配需要大量计算,影响算法的实时性,需要限制搜索范围。第三,丢失的目标重新出现,位置发生变化,需要扩大搜索范围。

2.1 模板更新

以往的孪生网络跟踪方法,对于模板多采取不更新的策略,这是由于在跟踪时存在定位的偏差,预测框和真实框的IoU值会比较低,预测框会包含较多的背景信息,较少的目标信息,这时如果进行模板更新,在之后的跟踪过程中,模板与背景的相似度越来越高,陷入恶性循环,最终丢失目标。然而,由于行人移动的灵活性,行人转动、由远到近运动、由近到远运动、进出室内室外造成的光照变化都会造成检测目标与初始模板的相似度降低,导致目标跟踪失败。因此,本文提出了更加灵活的模板更新策略,将初始模板和更新模板结合起来,取得了不错的效果。

对于每一个跟踪目标,本文保存其初始模板,添加一个更新模板,在跟踪过程中,每隔固定时间就要更新一次更新模板,间隔帧数使用Interval表示。跟踪时,首先比较初始模板和检测目标的相似度,也就类似原始的孪生网络跟踪。由于目标的变化,初始模板与目标的相似度可能逐渐降低,当低于设定的阈值时,比较更新模板与目标的相似度,此时的更新模板与当前帧最多相差设定的间隔帧数,因此可以成功匹配。这时更新模板已经比初始模板更能描述目标的特征,因此将更新初始模板为当前使用的更新模板。此外,由于本文采用了鲁棒性强的检测算法,跟踪过程不需要担心模板向背景偏移。综上,本文的每一条跟踪轨迹结构包含如下四个方面:(1) 目标出现总帧数;(2) 目标初始模板;(3) 目标更新后模板;(4) 目标连续丢失的帧数。

2.2 优化计算

虽然本文采用的行人识别算法和孪生网络匹配算法在速度上都很快,但是当跟踪行人目标较多时,计算量会快速增加,影响到算法的整体速度。因此本文添加位置约束算法降低计算量。

位置约束即根据跟踪轨迹在上一帧的位置,限定匹配算法在当前帧的匹配范围。以往的位置约束算法都是使用欧氏距离来限定,图像在x轴和y轴的距离在这种距离计算方法中是等价的。但是由于行人往往宽度与高度差别比较大,因此在图像上,行人横向移动速度往往大于纵向速度,因此本文考虑到目标本身的宽度和高度,在x轴和y轴设定不同的距离限制,为每个跟踪轨迹和检测目标都设置一个位置权重,计算如下:

locWeight(Pm,Trackn)=

(10)

式中:Pi表示第i个行人检测目标;Trackn表示第n个跟踪轨迹;x、y、width、height分别表示跟踪框或者检测框的中心坐标和尺寸;λx和λy分别表示x轴和y轴距离范围权重。在本文算法中,λx和λy分别取2和1。在约束算法下,跟踪轨迹在当前帧最相似的目标得分计算如下:

Pmax=argmax(locWeight(Pm,Trackn)sim(Pm,Trackn))

(11)

式中:sim(·)表示相似度计算,如果最高得分大于设定阈值,则对应的检测目标即为是轨迹的最新位置,否则认为跟踪轨迹丢失,丢失计数增加1,如式(12)所示。

(12)

然而由于目标在跟踪过程中会出现丢失的情况,在重新查找时,该目标可能位置发生变化,出现在搜索区域之外,此时要扩大目标的搜索范围。本文根据目标连续丢失的帧数调整λx和λy,动态选择搜索范围,取得了良好的效果。

(13)

(14)

2.3 行人多目标跟踪算法流程

解决了上述问题,本文提出的基于孪生网络匹配的多目标跟踪算法已经完成。算法流程如算法1所示。

算法1行人多目标跟踪算法

输入:图像帧,跟踪轨迹集合traces。

输出:更新后的跟踪轨迹集合traces。

1. 进行行人检测,得到行人数量n

2. if(n!=0)

3. 提取行人特征

4. if(traces==0)

5. 新增trace

6. else在位置约束下与初始模板匹配,得到匹配度

7. if匹配度大于阈值

8. 成功匹配,更新trace

9. else在位置约束下与更新模板匹配,得到匹配度

10. if匹配度大于阈值

11. 成功匹配,更新trace

12. else 新增trace

13. 更新未匹配trace的丢失帧数

3 实 验

本文旨在构建一个快速鲁棒的行人多目标跟踪算法,因此选择从MOT多目标跟踪数据集中选择带有标注的行人多目标跟踪序列,具体包括MOT16-02、MOT16-04、MOT16-05、MOT16-09、MOT16-10、MOT16-11。选取的数据集涵盖了移动摄像拍摄序列、静态摄像头拍摄序列、室内场景、室外场景、不同光照场景、大目标行人和小目标行人等情况,如图5所示,确保能够准确测试出行人检测的准确率、孪生网络匹配的准确率以及多目标跟踪的效果。此外,由于MOT数据集本身并不是专用来进行行人多目标跟踪的,在数据集中还包含了汽车、自行车、摩托车等本文实验不需要的标注数据,因此要对标注数据进行处理,只保留标签为1(表示行人)和标签为7(表示静止的人)的标注数据。本文的实验均在配有GTX-1050Ti与英特尔酷睿i5-8300H 2.3 GHz的Windows 10操作系统电脑上进行。

图5 MOT数据集示例

3.1 行人检测实验

为了选择更加合适的行人检测器,由于YOLOv3、mobileNet[4]-SSD和VGG16-SSD都是实时性比较好的检测器,因此本文选择这三种方法训练比测试在MOT数据集上的准确率,结果如图6所示。

图6 行人检测算法对比

可以看到,YOLOv3行人检测器的精度要远超mobileNet-SSD和VGG16-SSD,并且该算法在实时性上也达到了很高的速度。

3.2 多目标匹配算法

对于匹配网络的实验测试,本文选择将MOT数据集中的行人截取出来,按照跟踪轨迹的标签进行分类,获取多个行人图像组。任意选取两幅行人图像送入匹配网络获取特征,使用余弦距离计算相似度,如果相似度大于设定的阈值,则说明匹配网络判断这两幅图像来自同一个行人的图像序列,否则认为是不同的行人。然后根据这两幅行人图像的标签判断匹配网络是否判断错误。数据集中共存在539条行人跟踪轨迹,经过提取,得到相同数量的行人数据集。对匹配网络进行数次实验,设定不同阈值获取实验结果,如图7所示。

图7 不同阈值下匹配网络行人匹配精度

由实验结果可知,当阈值设置低于10时,发生误匹配的几率增大,准确率较低。而行人的运动变化使得相似度降低,匹配精度随着阈值增大而下降。因此,本文在算法中选取阈值为10。

由于行人运动虽然灵活但是速度并不快,经过大量实验证明,行人多目标跟踪中,目标距离视点一般在5~15 m,目标在图像中高度一般在100到300像素,当选取时间间隔为5帧时,能捕捉到大部分目标的外观变化,因此本文选择5帧作为固定间隔,即将式(13)、式(14)中的Interval设置为5。

3.3 行人多目标跟踪实验

对于多目标跟踪,本文选择MOT-01、MOT-03、MOT-06、MOT-07、MOT-08、MOT-12数据集,依然去除标注信息中的非行人信息。因为本文算法是基于检测的多目标跟踪,因此每个图像序列在测试时都不给定初始跟踪框。对于每个数据集获得的结果如表1。

表1 本文算法多目标跟踪结果

MOTA(multiple object tracking accuracy)代表多目标检测精度,考虑了跟踪时所有帧中对象匹配错误,主要是FN(false negatives)、FP(false positives)、IDSW(ID Switch),计算公式如下:

(15)

MOTP(multiple object tracking precision)表示检测器的定位精度:

(16)

式中:d表示预测框与真实框的IoU距离;t表示在当前帧匹配成功的数目。

MT表示至少在80%匹配成功的跟踪轨迹;ML表示在小于20%的时间成功匹配的跟踪轨迹;FP表示错误匹配的目标数;FN表示没有匹配成功的目标数;ID switch表示每条轨迹分配的ID发生变化的次数。部分跟踪结果如图8所示。

图8 MOT16部分跟踪结果

本文算法与其他多目标跟踪器对比结果表2所示。可以看到,MOTP只比HDTR算法稍差,也达到了很高的精度;MOTP在所有算法中最高,证明了本文算法的检测精度;MT指标也高于大部分算法,证明了本文在长时间跟踪的效果;FN证明本文发生误检的情况比较少。综合来看,本文算法在多个评价指标都达到了不错的水平,是一个合格的行人多目标跟踪器。除此之外,本文算法在实验硬件条件下能达到最高每秒3帧,在所有算法中也有竞争力。

表2 多目标跟踪结果对照

4 结 语

针对行人多目标跟踪的难题,本文对YOLO行人检测算法进行了优化,并解决了多目标匹配的问题。首先,设计并训练了行人检测器以及用来提取行人特征的匹配网络,并使用余弦距离来计算特征之间的相似度;其次,本文还解决了多目标跟踪中出现的误匹配、目标变化造成匹配失败、目标匹配计算量大以及目标丢失无法再次找回等问题。实验证明,虽然在算法实时性并不能达到很高的水平,但是算法在精度上有一定的提升,可以应用于多个场景的行人多目标跟踪。此外,本文算法在MOT-01数据集的表现不佳,后续工作将改进本文算法以提高在光线较暗的场景中的检测和匹配精度。

猜你喜欢
轨迹行人模板
高层建筑中铝模板系统组成与应用
铝模板在高层建筑施工中的应用
解析几何中的轨迹方程的常用求法
特高大模板支撑方案的优选研究
毒舌出没,行人避让
无从知晓
Inventors and Inventions
路不为寻找者而设
我是行人