APP下载

基于视频的多目标车辆跟踪及轨迹优化

2020-03-11李俊彦宋焕生张朝阳侯景严武非凡

计算机工程与应用 2020年5期
关键词:结点滤波器轨迹

李俊彦,宋焕生,张朝阳,侯景严,武非凡

长安大学 信息工程学院,西安710064

1 引言

智能交通系统(ITS)作为现代交通系统的发展方向,综合了通信技术、计算机技术、自动控制技术等众多学科领域研究成果,着眼于保障交通安全、提高交通运输效率,并为交通参与者提供可靠、有效、多样化的交通信息服务。获取信息量丰富、准确性高的交通动态信息是ITS 中的关键,也是进行交通分析、预测和交通控制的重要前提[1]。在众多交通信息来源中,视频数据具有不间断性、直观性、可靠性高等特点。采用机器视觉方法分析交通视频数据是采集交通领域动态信息的重要手段。

针对交通场景中动态信息的采集需求,要获取车辆在当前场景中的行驶轨迹,就需要对车辆进行长时间的目标跟踪。杨剑锋等[2]在相关滤波跟踪框架下加入目标遮挡置信度测量,当判别到目标发生遮挡时,利用目标局部信息获取目标最终位置,达到长时间跟踪目标的目的。李轶锟等[3]为提高fDSST 跟踪算法在目标形变、旋转等情况下的跟踪精度,提出基于TLD 和fDSST 的长时间目标跟踪算法,在目标检测的基础上,加入学习器对跟踪结果进行修正和学习,提高了跟踪精度。

通过视频分析获取的原始车辆轨迹具有检测结点框不稳定、轨迹存在诸多跳跃、平滑性差等缺点。为反映车辆运动的真实情况,需要对原始轨迹进行轨迹优化。道格拉斯-普克(Douglas-Peukcer)算法作为经典的线状要素化简算法,被应用于地图轨迹优化中,通过设定阈值,将复杂多线段分段,用直线段连线近似代替曲线。但这种方法相当于对轨迹进行抽稀,虽然优化了轨迹,但减少了轨迹点。罗成等[4]针对GPS车辆定位数据在弯道处车辆轨迹是折线的问题,提出使用二次B样条拟合算法,通过产生更多的拟合点,使轨迹曲线更加贴切反映车辆真实行驶路线。

上述均是针对单目标的长时间车辆跟踪框架,本文提出利用Yolo3 检测车辆目标,同时,采用KCF 预测目标位置,通过建立匹配代价表,关联多目标车辆,达到对交通场景下车辆轨迹的获取。针对检测框不稳定现象,提出使用Savitzky-Golay 滤波器对车辆轨迹进行优化,提高轨迹的准确性,以提供更加符合车辆在真实世界运动状态的轨迹特征,为获取更加准确的交通参数提供数据基础。

2 车辆目标跟踪

对于交通场景中的多目标跟踪问题,需要根据视频帧中车辆目标的检测结果,匹配当前帧内已有的车辆轨迹。这其中,对于新出现的车辆目标,要创建新的车辆轨迹;对于已经离开相机视野的车辆目标,要对其轨迹进行删除操作。本文中利用Yolo3网络对车辆目标进行检测;同时,针对可能出现的目标检测丢失问题,对车辆历史轨迹通过KCF 算法,预测车辆在当前帧的位置。检测结果与已有轨迹的匹配采用以目标框交叠率IOU(Intersection Over Union)为主,考虑目标框间宽、高比等因素的匹配方法,实现多目标的长时间跟踪。车辆目标跟踪主体框架如图1所示。

2.1 Yolo3算法

Yolo[5-7]实现了一阶端到端的目标检测,其模型预测的核心思想[5]是:Yolo将输入图像划分成S×S 个gridcell,以groundtruth 中心点所在的gridcell 预测该groundtruth标注的目标。每个grid cell 预测B 个数量的边界框(bounding box)及对应的置信度(confidence score)和C 个类别概率值,边界框用x,y,w,h 表征,置信度用c表征,则最终预测值为S×S×(B×5+C)大小的张量,整个模型预测结构如图2[5]所示。

图1 车辆目标跟踪主体框架

图2 模型预测结构

Yolo3[7]网络在目标分类中使用多标签多分类的逻辑回归层;在目标检测中,增加了up down的多级预测,弥补了Yolo颗粒度粗,不擅长检测小目标的弊端,最终在小目标、重叠遮挡物体的识别上取得了较好的效果。

2.2 KCF核相关滤波算法

KCF算法[8-9]是基于相关滤波的目标跟踪算法,计算速度快是KCF的一大优势。本文采用多尺度KCF预测算法,目标位置预测过程如图3所示。

图3 KCF算法目标位置预测过程

当车辆目标首次被检测到时,扩大目标区域,图3中红色框为目标检测框,蓝色框为扩大后的特征提取区域;KCF 算法提取目标HOG[10]特征,初始化跟踪模型;在新一帧图像中,以上一帧目标位置中心点为中心进行3 个尺度下的特征提取和模型检测响应峰值计算,取3 个峰值中最大值对应的尺度,计算目标新位置,图3 中黄色框为目标新的位置框;以此新位置,扩大目标区域后,提取特征并更新跟踪模型。利用KCF算法可以为目标检测丢失和远行无法检测到的车辆提供预测框。

2.3 关联获取车辆轨迹

设第s 帧图像中有轨迹集T={Ti,i=1,2,…,p},和待匹配检测结点集N={Nj,j=1,2,…,q} ,其中轨迹Ti={t=f,f+1,…,s},f 表示目标首次出现的帧号,表示轨迹i 在第t 帧的轨迹结点框,其中为轨迹i 在第s 帧图像执行KCF 预测后的预测结点框,也是该轨迹当前的末结点。关联目标框主要通过计算检测框Nj与轨迹当前帧预测框之间的IOU[11],计算公式如下:

式中,area()表示结点框的面积。分子为两个结点框的交集,分母为两个结点框的并集,mji的计算范围是0到1。

交通视频中多目标车辆轨迹获取的具体实现方法如下:

(1)使用Yolo3对当前帧图像进行车辆目标检测,获取检测结点集Nm={Nj,j=1,2,…,w} 。滤除Nm中不在兴趣区域(ROI)内的检测结点;对检测结点中重叠率大于阈值0.7 的多个检测结点,认为是同一目标的多个检测结果,保留其中置信度最高的作为该目标的检测结点。经过滤除后的检测结点集为N={Νj,j=1,2,…,q},q ≤w,检测结点滤除过程如图4所示。由于Yolo3检测返回结果为bbox_t 类型,包括位置信息(x,y,w,h)、置信度prob、类型信息obj_id等,为方便后续统一使用,转换检测结点为自定义的BoundingBox类型。

图4 检测结点滤除

(2)对已存在的车辆历史轨迹进行KCF预测,以预测结果作为车辆在当前帧的预测结点,转换为Bounding-Box类型。

(3)当前帧有检测结点集N={Nj,j=1,2,…,q}和历史轨迹集T={Ti,i=1,2,…,p},按公式(1)计算上述q 个检测结点与p 个轨迹末结点间的mji,获取当前帧的IOU匹配代价表M=(mji)q×p。

(4)以检测结点为循环主体,判断检测框是否与已有车辆轨迹匹配。基本匹配条件为:mji为行列最大值时,初步认为第j 行对应的检测结点与第i 列对应的轨迹匹配。在匹配过程中,检测框和车辆轨迹会出现以下3种情况。

①mji为行列最大值,验证该检测结点框Nj与对应车辆轨迹中末结点框的宽比例和高比例是否都在0.7~1.4 范围内,满足则认为是匹配成功,以Nj替换轨迹中,重新初始化KCF 跟踪器;否则认为匹配失败,目标以KCF 预测框作为当前帧位置,轨迹不发生变化。

②检测结点Nj没有匹配的轨迹,作为新出现的车辆目标,新建轨迹Tn={Nj},加入轨迹集T 。

③没有结点匹配的车辆轨迹Ti,认为检测框丢失,同①中匹配失败的情况,轨迹不发生改变。

由于车辆目标框底边与路面最为接近,在摄像机标定后,选用车辆目标结点框底边中点P(u,v)表示车辆的位置,同时车辆轨迹的连接也采用车辆目标框底边中点连线绘制。

3 车辆轨迹优化

3.1 Savitzky-Golay滤波器原理

Savitzky-Golay 滤波器[12-13](又称S-G 滤波器)是一种低通滤波器,其滤波系数的计算非常方便,被广泛应用于数据平滑去噪[14]。通过选定大小为2m+1 的窗口,在时域内利用局部最小二乘法构造一个n 阶多项式平滑数据。设有一组数据x(i)(i=-m,…,m),现构造n 阶多项式(2m+1 ≥n)拟合数据,其拟合公式如下:

由式(2)可知,当i=0 时,p0=b0,S-G 滤波器通过计算卷积系数,对滑动窗口内数据以加权平均的方式快速计算窗口中心点数据p(0)。

n 阶多项式残差平方和为:

拟合多项式系数在残差平方和最小时确定。令残差E 中各多项式系数bt的偏导为0,即:

其中t=0,1,…,n,则有:

引入辅助矩阵A=(ait)(2m+1)×(n+1),ait=it,其中-m ≤i ≤m,0 ≤t ≤n,设矩阵B=ATA,则:

设定如下矩阵:

则有:

其中,H 矩阵的首行行向量为所求的卷积系数,仅与n和m 有关,与输入的数据x(i)无关。

3.2 基于Savitzky-Golay滤波器的轨迹优化

基于Yolo3的交通视频车辆检测方法在相邻的视频帧间检测同一个目标,其检测框在大小和位置上会存在抖动,这是造成车辆轨迹不平滑的关键因素。本文中考虑目标框的位置关系,使用S-G滤波器对车辆轨迹点进行平滑处理。

车辆在短时间内的运动认为是匀速直线运动,同时考虑到视频帧率为25 帧/s,采用窗口大小25,1 次多项式平滑车辆轨迹。使用S-G 滤波器分别对车辆轨迹点横、纵坐标做关于时序的滤波处理,轨迹平滑优化具体实现方法如下:

(1)给定滤波相关参数。设滑动窗口大小为25,窗口内多项式拟合次数为1,即初始化m=12,n=1。

(2)计算系数矩阵H 。由公式(7)可知,系数矩阵H=(ATA)-1AT,H 的首行行向量即为卷积系数。

(3)边缘数据处理。由于该方法截断了数据首尾各m 个数据,因此数据两端以端点值各向外扩充m 个数据值。

(4)修正数据。以步骤(2)中计算得的卷积系数对滑动窗口内数据值进行加权平均,计算窗口中心位置处修正值p0,保存修正后数据。

(5)移动窗口。将滑动窗口向后移一个数据位置,执行步骤(4),直至窗口移动到数据尾部。

以上方法对轨迹横、纵坐标的优化结果如图5 所示,其中结点序列按结点获取的时间先后排序。

4 实验结果分析

文中车辆目标检测与跟踪关联算法使用C++编写,运行于Visual Studio 2015 平台,用到的相关库有计算机视觉库OpenCV3.4 和Yolo3 动态链接库;获取车辆的历史轨迹数据后,利用Matlab2016a 对轨迹进行平滑优化。

图5 轨迹点横、纵坐标平滑结果

本文测试视频为杭州高速公路部分路段监控视频,帧速率均为25帧/s,测试场景信息见表1。

表1 实验测试场景

4.1 车辆跟踪

本文采用Yolo3目标检测算法,在车辆目标分类时,将高速公路上的车辆分为卡车(truck)、客车(bus)和小车(car)三大类[15],使用LabelImage标注数据集。按本文提出的车辆目标检测与预测相结合,关联匹配目标获取车辆轨迹的方法对测试视频场景中的车辆进行跟踪轨迹获取,结果如图6 所示。图6 中红色框代表当前帧目标框为检测结点框,黄色框代表目标检测框丢失,以预测框进行绘制。

图6 场景车辆跟踪结果

4.2 轨迹优化

车辆在真实世界中的运动为平滑的曲线运动。但在车辆目标轨迹获取的过程中,直接获取的原始轨迹是折线状,平滑性差,且存在诸多跳跃。这主要是目标检测获取的检测结点框不稳定造成的。同时,加上摄像机因为天气或架设地点等原因振动,使获得的车辆轨迹跳跃更加明显。选取3辆车辆轨迹如图7所示。

图7 车辆轨迹图

图8 轨迹优化结果图

图7 中列举了三辆车的运动轨迹。图7(a)、(c)中车辆轨迹存在明显的抖动,造成这种现象的主要原因是因为车辆目标多为truck 和bus 类型,车辆目标大,且图中目标处于弯道上;图7(b)中车辆类型是car,目标小,且车辆呈直线运行,所以车辆轨迹近似直线。使用S-G滤波器对上述获取的3条轨迹进行优化,优化结果如图8所示。从图8中可以看出,S-G滤波器对轨迹的优化,改善了车辆轨迹抖动、不平滑的状况。

4.3 轨迹优化结果对比

对表1 测试场景中获取的车辆轨迹首尾处各去除10%的轨迹数据,从车辆轨迹中选取近场景处的连续25帧轨迹数据,计算轨迹点间连线长度之和。设场景中有h 条轨迹,轨迹点在图像中像素坐标为P(u,v),轨迹长度计算见公式(8):

式中,a 表示计算轨迹点连线之和中的起始帧号。令l1和l2分别表示优化前和优化后的计算结果,表2列举了图7中3辆车轨迹优化前后轨迹长度l 的计算结果。

表2 车辆轨迹优化前后l 计算结果表

从表2中Δ 的计算结果可以看出:Δ 不为0,说明优化轨迹与原始轨迹间确实存在差异;结合图7与图8,Δ值越大,车辆轨迹抖动就越严重,说明S-G 滤波确实起到了平滑抖动、优化轨迹的作用。

令误差Δ= ||l1-l2表征轨迹结点连线之和在优化前后的差值,各场景中Δ 的统计结果见表3。

表3 测试场景中误差Δ 统计信息表

为了验证本文中轨迹优化对获取交通参数精度的提高,计算轨迹上短时间内多个连续的平均速度。车辆速度的计算需要用到摄像机的标定信息。设图像上一点的像素坐标为P(u,v),对应于真实世界的三维坐标为L(XW,YW,ZW),则两者存在以下关系[16]:

式中,d 为间隔帧数,车辆平均速度的单位为km/h。标定表1中的测试场景,令d=10,Δt=1/25=0.04 s计算车辆的平均速度,以5 次连续的车辆平均速度为例,轨迹优化前后对比结果见表4。

表4 轨迹优化前后车辆平均速度Vˉ对比表 km/h

从表4中车辆平均速度可以看出,未经优化的车辆轨迹计算出的车辆平均速度在短时间内存在较大的跳跃性,这在真实车辆运行过程中是不可能发生的;经过S-G滤波器优化后的轨迹,车辆平均速度相较优化前更为平稳,表明对交通视频中轨迹优化可以提高交通动态信息获取的准确性。

5 结束语

交通视频分析是获取动态交通流参数的重要方法之一。本文介绍了一种Yolo3 目标检测和KCF 预测算法相结合的长时间车辆目标轨迹获取方法,并针对原始车辆轨迹中跳跃,折线明显,不能精确描述车辆真实运动状况的问题,提出利用S-G滤波器对车辆轨迹进行优化,提高轨迹结点位置信息的准确性。通过图8中的轨迹拟合前后对比图和表4 中车辆轨迹优化后平均速度更为平稳可知,S-G滤波方法在对车辆轨迹的优化上是有效的。

猜你喜欢

结点滤波器轨迹
LEACH 算法应用于矿井无线通信的路由算法研究
基于八数码问题的搜索算法的研究
轨迹
轨迹
从滤波器理解卷积
开关电源EMI滤波器的应用方法探讨
轨迹
进化的轨迹(一)——进化,无尽的适应
基于Canny振荡抑制准则的改进匹配滤波器
基于TMS320C6678的SAR方位向预滤波器的并行实现