我国汽车保有量以及公路总里程数逐年快速递增, 为了获取大量准确的交通信息, 将其作用于交通管理控制系统, 实现交通的快速调度, 判断甚至预测交通事件, 提高道路运行效率、实现交通管理智能化. 因此, 加强交通场景视频的分析技术和分析能力, 提高交通视频中的信息采集能力是当前智能交通系统建设的当务之急.
对交通视频中目标车辆进行长时间的跟踪并对行驶轨迹进行提取分析, 就可以得到静态和动态的道路交通信息. 目前已有的目标跟踪算法可以分为基于生成式模型方法和基于判别式模型方法[1]. 其中, 基于生成式模型方法[2]在当前帧对目标区域建模, 在下一帧寻找和模型相似性最强的区域作为目标预测位置, 典型代表算法有: 粒子滤波算法[3]、Meanshift算法[4]和卡尔曼滤波算法[5]等. 基于判别式模型方法将目标跟踪问题看作分类或回归问题, 用分类器学习将目标从背景中分离, 典型代表算法有: TLD算法[6]、CN算法[7]、DSST算法[8]等.
近年来, 相关滤波算法由于其兼备速度和精度而成为目标跟踪领域的主流研究方向之一. 相关滤波算法属于判别式模型方法, 其主要思想是在图像中对每个感兴趣目标产生高响应, 对背景则产生低响应. 其中, 基于最小化平方和误差(Minimum Output Sum of Squared Error, MOSSE)算法[9]首次将相关滤波应用于目标跟踪中, 采用灰度特征, 跟踪速度高达615 fps. CSK[10]在MOSSE的基础上引入了循环矩阵和核的概念, 这是核相关滤波算法(Kernel Correlation Filter, KCF)的原型, 但它用的是灰度特征, 速度达到320 fps, 精度比MOSSE有很大的提升. 本文所使用的KCF算法[11]通过岭回归计算判别函数, 引入循环移位的方法作近似密集采样, 引入核方法并加入HOG特征[12], 在保持快速计算的情况下也提高了跟踪效果.
随着GPU的出现和卷积神经网络的不断发展与突破, 基于深度学习的目标检测和跟踪算法兴起并蓬勃发展. 在目标检测方向, 2014年, Girshick等人首次将CNN引入到目标检测中, 提出了R-CNN[13]的目标检测算法. 之后Girshick等人针对R-CNN中存在的问题, 先后提出了Fast R-CNN[14]、Faster R-CNN[15]和Mask R-CNN[16]. 为了进一步提高目标检测的速度, 2015年, Joseph等人提出了YOLO算法[17], 之后经过YOLOv2[18]、YOLOv2[19]和YOLOv4[20]的改进, 在目标定位以及小目标的检测上都取得了很好的检测效果. 在目标跟踪方面, Bewley等人提出的Sort[21]以及Deep Sort算法[22]旨在提升跟踪速度. Sort算法使用卡尔曼滤波算法对目标进行预测, 计算IoU度量目标框间的距离, 通过匈牙利算法进行最优关联匹配. Deep Sort在Sort的基础上进行改进, 使用Faster R-CNN检测目标, 仍使用卡尔曼滤波预测, 在距离度量上综合了马氏距离和最小余弦距离.
综上所述, 本文提出利用YOLOv4算法检测目标车辆. 然后, 根据不同的视频场景条件和项目需求, 选择不同的跟踪算法预测下一帧的目标位置, 建立匹配代价表, 关联目标车辆, 得到交通视频场景下连续的目标车辆轨迹. 最后, 提取得到的车辆轨迹, 利用提出的轨迹分布算法得到车辆分布图和交通场景俯视图, 对获取交通参数提供了真实的数据基础和更加准确直观的参考意义.
1 多目标车辆跟踪框架 1.1 基于YOLOv4的目标检测对于交通场景下的多目标跟踪问题来说, 首先需要得到交通视频帧中车辆目标的检测结果, 然后再根据不同的跟踪算法进行各个检测框之间的对比和匹配, 以此得到交通场景中车辆的跟踪轨迹. YOLOv4算法是一个快速且高精度的检测网络, 因此本文采用YOLOv4算法检测车辆目标.
YOLO算法是一种端到端的目标检测算法, 算法的输入是一张待检测的图像, 输出是输入图像中待检测目标的边界框坐标、边界框中包含目标的置信度及边界框的类别概率. YOLOv4以在检测方面更为优秀的CSPDarknet53网络为主干网络, 利用残差网络来进行深层特征的提取, 最终经过多尺寸的特征层得到待检测目标的类别和位置. YOLOv4的整体框架和YOLOv3是一样的, 主要是在YOLOv3的基础上在输入端、特征提取网络以及预测模块等方面进行了改进, 提高了算法的检测精度和处理效率. 图1为YOLOv4在本文实验场景下的结果示意图.
1.2 基于检测结果的轨迹关联策略
对于基于视频的多目标跟踪问题来说, 在得到交通视频帧中车辆目标的检测结果之后, 需要进一步根据不同的跟踪算法进行当前帧各个检测框和已有轨迹之间的匹配, 来得到交通场景中车辆的完整跟踪轨迹. 多目标车辆跟踪主体框架如图2所示, 具体流程如下:
(1)使用YOLOv4目标检测算法, 我们可以得到输入的每一帧图像的车辆目标检测结点集合
(2)在第一帧时, 将步骤(1)预处理后的每个检测框都初始化成一条轨迹; 在其后一帧时, 则对已存在的历史轨迹都用KCF算法进行预测, 得到车辆目标在当前帧的预测结点.
(3)假设当前在第
按式(1)计算
${C_{ij}} = \frac{{area(Dec{N_i}) \cap {{area}}(N_j^t)}}{{area(Dec{N_i}) \cup area(N_j^t)}}$ | (1) |
其中,
如果
车辆轨迹在视频帧中的显示, 仅是对轨迹结点目标框的下底边中点进行连线操作.
1.3 轨迹预测方法在1.2节中, 我们以KCF算法为例, 在本文提出的基于检测结果的轨迹关联策略中对视频帧已存在的历史轨迹都进行预测, 得到车辆目标在当前帧的预测结点, 使用预测结点来关联历史轨迹集合和每一帧的检测结果, 最终达到目标车辆跟踪的目的. KCF是在2014年提出来的一种鉴别式跟踪方法, 其利用脊回归训练一个回归器. 在新一帧图像中, 以上一帧图像的目标位置进行循环移位采样, 然后利用此回归器可以得到样本块的响应值, 响应值的峰值点所在位置就是目标在新一帧图像的位置. 并将此位置采样结果作为训练样本再去进一步更新回归器. KCF无论是在跟踪速度还是在跟踪效果上的效果都相当不错, 因此被广泛应用于实际场景中.
在实验过程中我们发现, 用KCF跟踪算法做历史轨迹的预测其实还存在一定的问题, 比如计算量大, 对高速运动的目标以及遮挡情况严重的目标会比较敏感. 而高速公路交通场景中, 道路大多为直线型, 其目标车辆的运动也是基本保持匀速状态的. 因此, 我们使用基于稀疏帧检测的多目标跟踪方法, 对历史轨迹集合进行预测, 纠正1.2节中的跟踪方法. 如图3所示, 可以根据不同的场景以及项目需求, 具体选择不同的轨迹预测方法.
例如在视频整体条件比较好(天气、光照条件等)、遮挡情况不严重以及目标运动速度不快的情况下选择传统跟踪方法(KCF算法); 在视频整体情况比较差、遮挡情况严重以及目标运动速度快的情况下选择本文提出的基于稀疏帧检测的跟踪方法.
基于稀疏帧检测的跟踪方法流程如图4所示, 图4仅使用前几帧为例来说明具体原理, 后续帧的操作以此类推.
基于稀疏帧检测的跟踪方法具体过程如下:
(1)在对视频帧使用YOLOv4目标检测算法之后, 得到此帧图像的车辆目标检测结点集合, 如同1.2的步骤(2), 对检测结点进行预处理. 基于稀疏帧检测的跟踪方法本质上是做两次检测计算速度, 然后根据速度跳
(2)对第1帧(当前帧号对24取余为1)和第5帧(当前帧号对24取余为5)的检测结点集做预处理后, 如1.2的步骤(3), 对这两帧的检测结点集合利用交并比得到一个匹配代价表. 将匹配上的结点初始化成轨迹集合tracks_old, 也就是说没有匹配上的结点就认为目标丢失. 并且根据匹配成功的两帧检测结点的世界坐标计算每一条轨迹的真实速度
(3)具体方法实现如同步骤(2), 但此时操作的是第25帧(当前帧号对24取余为1)和第29帧(当前帧号对24取余为5), 并且此时将匹配上的结点初始化成轨迹集合tracks_new, 根据匹配成功的两帧检测结点的世界坐标计算每一条轨迹的真实速度
(4)此时得到的是tracks_old的每一条轨迹在第5帧的速度
(5)计算
${d_{ij}} = \sqrt {{{({x_{1i}} - {x_{2j}})}^2} + {{({y_{1i}} - {y_{2j}})}^2}} $ | (2) |
如果
(6)此时我们有tracks_old (保存的是第29帧图像中的目标轨迹)和第29帧目标的速度, 因此清空tracks_new. 再对第49帧(当前帧号对24取余为1)和第53帧(当前帧号对24取余为5)进行检测框匹配, 匹配上的结点将其初始化成轨迹集合tracks_new. 继而使用tracks_new各条轨迹的速度和末结点世界坐标进行反向预测, tracks_old各条轨迹进行前向预测, 如步骤(4); 再如步骤(5), 建立匹配代价表, 进行轨迹连接, 出界轨迹进行删除, 新出现的目标轨迹加入进tracks_old; 最后清空tracks_new. 此后满足步骤(1)中取余条件的各帧也依次进行操作.
基于稀疏帧检测的跟踪方法在计算目标的真实速度时所用到的世界坐标, 是相机标定的结果, 由于相机标定并非本文的重点, 因此本文不多加赘述. 车辆轨迹的显示也如1.2节所述, 仅对每条轨迹的结点集合连线即可.
2 交通场景下的多目标跟踪轨迹分布在传统的智能交通系统中, 对视频帧中的车辆进行检测和跟踪之后, 具体检测框及车辆目标的轨迹显示都在当前视频图像中. 但是为了更加直观的显示出以车辆为主的交通数据和交通信息, 全面提升交通管理部门的实时监测、整体协调、全面布局能力, 可建立起车辆分布图以及交通场景俯视图, 从而为交通部门以及交通运输业提供一种更智能更直观的方案.
本节基于单相机的检测跟踪系统, 通过视频监控系统中车辆轨迹的提取, 提出了一种轨迹分布算法, 建立了车辆分布图及交通场景俯视图. 主体框架如图5所示.
交通场景下的目标轨迹分布算法具体步骤如下:
(1)假设当前视频在第k帧, 虽然对当前帧整幅图像进行目标检测, 但轨迹分布算法只需对感兴趣区域ROI (Region Of Interest)内的目标车辆进行跟踪. 因此, 首先要在图像中进行道路块的设定, 也就是需要沿着道路边缘用鼠标点击选择4个点, 得到感兴趣区域ROI, 如图6中道路边缘的4个绿色圆点.
(2)在获取ROI道路区块后, 在进行检测跟踪的同时, 初始化车辆分布图及交通场景俯视图. 首先清空之前帧的分布图和俯视图, 再根据ROI道路块的大小, 重新设定车辆分布图和交通场景俯视图大小.
(3)构建车道分布模型. 车辆分布图以图6为例, 黑色实线表示中央隔离带; 黄色实线表示车道虚线; 白色实线表示垂直于道路方向的分割线, 把道路分割成15 m宽的道路块. 假设ROI区块长度为150 m, 则车辆分布图有15列道路块. 交通场景俯视图以图7为例, 两条黑色实线表示中央隔离带区域, 黄色实线表示车道虚线. 图6和图7中均用1、2、3、4代表一一对应的车道一、车道二、车道三、车道四, 也就是说, 无论视频场景以及相机架设位置如何变化, 视频图像中ROI道路区块的左下角点始终对应车辆分布图和交通场景俯视图的左上角点.
(4)如图4所示, 此时第k帧图像的目标检测和ROI内目标跟踪也已完成. 得到当前帧在ROI道路区块内所有目标车辆的跟踪轨迹集, 此时用每条轨迹末结点的位置, 也就是当前帧检测结点的位置绘制车辆分布图; 用轨迹结点集绘制交通场景俯视图.
1)要绘制车辆分布图, 首先计算当前每条轨迹末结点距ROI左下角点x轴方向的真实世界距离ΔX, 及距ROI左下角点y轴方向的真实世界距离ΔY. 如图6所示, i为垂直于道路方向的索引, j为沿车道方向的索引, 车辆分布图左上角道路块的i和j都为0. i等于ΔX除以单个道路块真实高度(垂直于道路方向, 根据道路实际情况制定), j等于ΔY除以单个道路块真实宽度(沿道路方向的15 m); i、j从0开始, 所以向下取整. 此时, 车辆分布图中索引为i、j的道路块为此帧的车辆位置.
2)绘制交通场景俯视图, 只需计算出每条轨迹结点在俯视图图像坐标系的坐标, 然后进行连线显示即可. 假设当前帧第
由于原图像也就是ROI使用的是相机坐标系, 相机架设位置即原点位置, 则图7中道路左下角即为坐标系原点. 交通场景俯视图使用图像坐标系, 图像左上角为原点位置. 所以如式(3)所示, 需计算出ROI区块的比例系数
$\left\{ {\begin{array}{*{20}{c}} {rateX = \dfrac{{{p_w}}}{{{m_w}}}} \\ {rateY = \dfrac{{{p_h}}}{{{m_h}}}} \end{array}} \right.$ | (3) |
其中,
如图7所示, 图像坐标系中, 沿道路方向的是x轴; 相机坐标系中, 沿道路方向的是y轴. 所以结点的图像坐标
本实验的硬件支持是Intel(R) Core(TM) i7-8700型号的CPU和NVIDIA GTX2080Ti显卡支持的计算机. 本文的车辆目标检测跟踪算法及分布算法都使用C++编写, 运行于Qt 5.10.1平台, 辅助环境为CUDA v10.0, OpenCV 3.4.0和YOLOv4动态链接库.
本文测试视频为隧道和高速公路部分路段监控视频, 充分考虑了视频场景条件优秀及一般的交通情况, 视频帧率均为25 fps, 每段视频时长均为30 min. 具体实验场景信息见表1.
3.2 目标跟踪及轨迹分布结果
本文使用YOLOv4目标检测算法, 检测3种目标车辆类型, 分别为小车(car)、卡车(truck)和客车(bus), 使用LabelImage完成数据集的标注. 如1.3节图3所示, 对不同的场景, 具体选择不同的轨迹预测方法. 本节设置场景1为高速公路场景(白天), 视频光线明亮、相机视角高且车辆目标较少、并无明显遮挡, 因此选择KCF跟踪算法. 场景2为隧道场景, 隧道场景光线较暗、遮挡情况较为严重、相机视角低导致车辆目标移动速度也很快, 因此选择基于稀疏帧检测的跟踪方法. 车辆目标跟踪结果、车辆分布图和交通场景俯视图结果均如图8所示.
需注意, 对于不同场景中道路的实际情况, 轨迹分布算法如第2节所示不变, 仅是在构建车道分布模型时根据实际道路情况设置车道线即可. 图像中的绿色圆点表示感兴趣区域ROI, 仅对ROI道路区块内的车辆目标做轨迹跟踪以及轨迹分布处理.
3.3 跟踪算法对比为进一步评价算法的性能, 本实验使用本文所提出的基于稀疏帧检测的跟踪方法和1.2节中结合轨迹关联策略的KCF跟踪方法在各种条件视频场景中进行测试, 并与常用的Sort和Deep Sort两种算法进行对比实验. 结果如表2、表3、表4所示, 其中表2为各跟踪算法在场景条件优秀情况下的测试结果, 表3及表4为各跟踪算法在场景条件一般情况下的测试结果.
本文使用常见的多目标跟踪准确度(Multi-Object Tracking Accuracy, MOTA)与多目标跟踪精确度(Multi-Object Tracking Precision, MOTP)来对各不同跟踪算法进行评价. 定义如下:
${\textit{MOTA}} = 1 - \frac{{\displaystyle\sum\nolimits_t {({m_t} + {\textit{fp}_{t}} + mm{e_t})} }}{{\displaystyle\sum\nolimits_t {{g_t}} }}$ | (4) |
其中,
${\textit{MOTP}} = \frac{{\displaystyle\sum\nolimits_{i,t} {d_t^i} }}{{\displaystyle\sum\nolimits_t {{c_t}} }}$ | (5) |
其中,
测试结果中的速度指的是检测加跟踪的速度, 在实验中使用视频总帧数除以总时间的方法计算速度. 由于检测器和跟踪方法的影响, 若只对稀疏帧进行检测跟踪, 速度会大大减少. 通过上述评价指标, 可以验证反映多目标跟踪方法的综合性能, 并评估多目标跟踪方法的稳定性与精度.
在表2、表3及表4中, 由于场景条件及场景复杂度的差别, 为提升跟踪正确率, 基于稀疏帧检测的跟踪方法具体跳帧数量根据场景决定. 高速公路(白天)视频条件较好, 因此选择跳20帧; 隧道视频条件较差, 选择跳10帧; 高速公路(夜晚)视频光线十分差且车辆远光灯近光灯影响较为严重, 但车辆目标并不密集, 因此选择跳15帧.
由表2、表3及表4可以得出, 在不同的实验场景条件下, 本文所提出的基于稀疏帧检测的跟踪方法, 与结合目标检测的KCF+IOU改进方法、Sort和Deep Sort算法进行对比, 本文基于稀疏帧检测的跟踪方法以牺牲少量精确度和准确度为代价换来了更优秀的跟踪实时性, 处理速度大幅度提升.
在本文定义的优秀的场景条件下, 基于稀疏帧检测的跟踪方法对比KCF算法和Deep Sort算法, 跟踪准确度和精确度略有下降, 跟踪速度大大提升; 本文方法对比Sort算法, 不管是在跟踪准确度和精确度, 还是在速度方面都有一定程度的提升. 在本文定义的一般的场景条件下, 用基于稀疏帧检测的跟踪方法对比对比KCF算法和Sort算法, 在跟踪速度提升的同时, 准确度和精确度也有一定提升; 本文方法对比Deep Sort算法, 跟踪准确度和精确度略有下降, 速度有明显提升. 因此, 本文在表2、表3和表4中, 将本文算法分别和上述算法进行了比较. 从而可根据现实的场景条件以及实验需求, 平衡跟踪准确度、跟踪精确度和速度选择用何种跟踪方法进行轨迹预测.
由于跟踪准确度和精确度在一定程度上依赖于检测精度. 隧道和高速公路(夜晚)视频由于场景条件限制, 导致车辆目标的特征并不明显, 因此导致检测精度有一定的下降. 尽管如此, 基于稀疏帧检测的跟踪方法在场景条件一般的视频仍然取得了较为不错的跟踪结果, 因此本文所提出的基于稀疏帧检测的跟踪方法可以满足场景条件一般情况下目标车辆的检测跟踪, 同时速度也有很大的提升, 则进一步可以将本文算法推广至多个相机并行处理的情况, 增强了本文算法的实用性.
4 结束语本文提出了一种交通场景下的多目标车辆跟踪及实时轨迹分布方法. 首先, 对真实场景交通视频使用YOLOv4目标检测算法, 获得车辆目标在每一帧的位置、类别以及置信度, 并对目标检测框进行滤除. 然后根据具体的视频场景条件以及项目需求进行判断, 选择不同的轨迹预测方法把不同帧的检测框关联成连续稳定的轨迹. 最后提取交通视频中车辆目标的轨迹, 通过车辆分布图以及交通场景俯视图直观清楚地将显示出来. 本文针对多种视频场景条件进行实验, 实验结果表明, 本文的跟踪算法在各种交通视频场景条件下都具有精确的目标跟踪正确率, 并且速度基本满足实时处理的需要. 综上所述, 本文对实际交通场景下的车辆目标检测跟踪具有重要参考意义.
[1] |
李玺, 查宇飞, 张天柱, 等. 深度学习的目标跟踪算法综述. 中国图象图形学报, 2019, 24(12): 2057-2080. DOI:10.11834/jig.190372 |
[2] |
朱文青, 刘艳, 卞乐, 等. 基于生成式模型的目标跟踪方法综述. 微处理机, 2017, 38(1): 41-47. DOI:10.3969/j.issn.1002-2279.2017.01.011 |
[3] |
Chang C, Ansari R. Kernel particle filter for visual tracking. IEEE Signal Processing Letters, 2005, 12(3): 242-245. DOI:10.1109/LSP.2004.842254 |
[4] |
Comaniciu D, Ramesh V, Meer P. Real-time tracking of non-rigid objects using mean shift. Proceedings IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2000). Hilton Head: IEEE, 2000. 142–149.
|
[5] |
Ali NH, Hassan GM. Kalman filter tracking. International Journal of Computer Applications, 2014, 89(9): 15-18. DOI:10.5120/15530-4315 |
[6] |
Kalal Z, Mikolajczyk K, Matas J. Tracking-learning-detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2012, 34(7): 1409-1422. DOI:10.1109/TPAMI.2011.239 |
[7] |
Danelljan M, Khan FS, Felsberg M, et al. Adaptive color attributes for real-time visual tracking. Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014. 1090–1097.
|
[8] |
Danelljan M, Häger G, Khan FS, et al. Accurate scale estimation for robust visual tracking. Proceedings of the British Machine Vision Conference. Nottingham: BMVA Press, 2014. 1–5.
|
[9] |
Bolme DS, Beveridge JR, Draper BA, et al. Visual object tracking using adaptive correlation filters. Proceedings of 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. San Francisco: IEEE, 2010. 13–18.
|
[10] |
Henriques JF, Caseiro R, Martins P, et al. Exploiting the circulant structure of tracking-by-detection with kernels. Proceedings of the 12th European Conference on Computer Vision. Florence: Springer, 2012. 702–715.
|
[11] |
Henriques JF, Caseiro R, Martins P, et al. High-speed tracking with kernelized correlation filters. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(3): 583-596. DOI:10.1109/TPAMI.2014.2345390 |
[12] |
Dalal N, Triggs B. Histograms of oriented gradients for human detection. Proceedings of 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. San Diego: IEEE, 2005. 886–893.
|
[13] |
Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014. 580–587.
|
[14] |
Girshick R. Fast R-CNN. Proceedings of 2015 IEEE International Conference on Computer Vision. Santiago: IEEE, 2015. 1440–1448.
|
[15] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. Proceedings of the 28th International Conference on Neural Information Processing Systems. Montreal: MIT Press, 2015. 91–99.
|
[16] |
He KM, Gkioxari G, Dollár P, et al. Mask R-CNN. Proceedings of 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017. 2980–2988.
|
[17] |
Redmon J, DivvalA S, Girshick R, et al. You only look once: Unified, real-time object detection. Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2016. 779–788.
|
[18] |
Redmon J, Farhadi A. YOLO9000: Better, faster, stronger. arXiv: 1612.08242, 2016.
|
[19] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv: 1804.02767, 2018.
|
[20] |
Bochkovskiv A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. Computer Vision and Pattern Recognition, 2020, 17(9): 198-215. |
[21] |
Bewley A, Ge ZY, Ott L, et al. Simple online and realtime tracking. Proceedings of 2016 IEEE International Conference on Image Processing. Phoenix: IEEE, 2016. 3464–3468.
|
[22] |
Wojke N, Bewley A, Paulus D. Simple online and realtime tracking with a deep association metric. Proceedings of 2017 IEEE International Conference on Image Processing. Beijing: IEEE, 2017. 3645–3649.
|