python水平加速度振动信号 python求汽车加速度_python

通过视频监视进行基于计算机视觉的事故检测已经成为一项有益而艰巨的任务。

介绍

如今,车辆交通已成为人们生活的刚需部分,它每天都会影响许多人类活动和服务。因此,有效的道路交通组织和管理对于平稳的交通至关重要,特别是在人们习惯通勤的城市地区。

每年,人员伤亡和财产损失与车辆碰撞和车辆生产的数量成比例飙升,尽管采取了多项措施,以高涨道路监控技术,如摄像机在道路交叉口和雷达通常放置在公路上,捕捉超速汽车,但依然有许多人的失去生命,由于缺乏及时的意外报告 这导致提供给受害者延迟医疗援助。当前的交通管理技术严重依赖于人类对所拍摄镜头的感知。从操作人员的角度来看,这需要花费大量的精力,并且不支持对自发事件的任何实时反馈。

据统计,每年有近125万人在道路交通事故中丧生,另有205,000万人受伤或伤残。道路交通撞车事故是造成人员伤亡的第9大原因,占全世界所有人员伤亡的2.2%,预计到2030年,它们将是造成人员伤亡的第五大原因。

近年来,车辆事故检测已成为利用计算机视觉的普遍领域。

为了克服这种繁重的任务,及时提供急救服务,而无需人工来监视此类事件。因此,本文提出了一种实用的解决方案,通过提出一种可以自发检测车辆碰撞的解决方案来解决上述问题,这对于当地医护人员和交通部门及时缓解这种状况至关重要。

本文提出了一种新型的道路交通事故检测框架。所提出的框架利用Mask R-CNN进行精确的目标检测,然后是基于有效质心的监控镜头目标跟踪算法。该概率根据与其他车辆重叠后车辆中的速度和轨迹异常确定事故发生的时间。所提出的框架提供了一种鲁棒的方法,可以在一般道路交通监控录像上实现高检测率和低虚警率。使用提议的数据集,在各种条件下(例如,日光充足,能见度低,下雨,冰雹和下雪)对该框架进行了评估。该框架被认为是有效的,并为实时开发通用车辆事故检测算法铺平了道路。

相关工作

在过去的几十年中,图像处理和计算机视觉领域的研究人员一直对汽车交通事故的检测非常感兴趣[。而且已经提出并开发了许多方法来解决该问题。

解决方案之一,由Singh 等人提出:

要检测车辆事故,请使用监控摄像机的信号源,方法是生成时空视频量(STVV),然后在去噪自动编码器上提取深层表示,以便生成异常分数,同时检测移动物体,跟踪物体,然后查找最终确定发生事故的几率。这种方法可以有效地确定在交通流量正常且照明条件良好的交叉路口发生的车祸。但是,在低能见度条件下确定事故,车祸发生严重闭塞以及交通方式变化较大时,它在准确预测中存在主要缺陷,此外,它的表现不理想,因为它仅依赖于交通流模式中的轨迹交叉点和异常,这表明它在不稳定的交通模式和非线性轨迹中表现不佳。

同样,Hui提出了一种使用高斯混合模型(GMM)来检测车辆的方法,然后使用均值偏移算法对检测到的车辆进行跟踪。尽管此算法对于处理事故期间的遮挡效果非常合适,但由于交通模式变化不定和恶劣的天气情况,该方法依赖于有限的参数,因此该方法仍存在主要缺陷

Ki等人已经展示了一种方法,该方法分为两个部分。第一部分接受输入并使用灰度图像减法的形式来检测和跟踪车辆。第二部分应用特征提取来确定被跟踪车辆的加速度,位置,面积和方向。该方法确定每个参数中的异常,并基于组合结果,基于预定义的阈值确定是否发生了事故,尽管其第二部分是确保正确进行事故检测的可靠方法,但方法的第一部分在准确的车辆检测方面仍面临严峻挑战,例如在环境物体阻塞相机屏幕的一部分或类似物体重叠的情况下他们的影子等。

尽管这些给定方法可以准确跟踪车辆的运动,但在参数化事故检测标准方面却表现不佳。它们在建立事故检测标准方面表现不佳,因为它们需要特定形式的输入,因此无法在一般情况下实施。现有方法通过参数定制针对单个摄像机进行了优化。但是,建议框架的新颖之处在于它可以与任何摄像机镜头配合使用。

方法

本节描述了我们给出的建议框架。我们说明了如何实现识别车辆碰撞的框架。我们的主要目标是提供一种简单而迅速的技术来解决交通事故检测的问题,该技术可以高效运行并向有关当局提供重要信息,而不会造成时间延迟。

提出的事故检测算法包括以下关键任务:

  • 车辆检测
  • 车辆跟踪和特征提取
  • 事故检测

拟议的框架通过以下阶段实现其预期目的:

  • 车辆检测

框架的此阶段检测视频中的车辆。

python水平加速度振动信号 python求汽车加速度_车辆碰撞_02

如图所示,这里使用的对象检测框架是Mask R-CNN(基于区域的卷积神经网络)。

使用Mask R-CNN,我们可以自动分割和构造视频中每个对象的逐像素掩码。Mask R-CNN是实例分割算法,掩模R-CNN通过使用名为RoI Align的新方法代替了现有的RoI池化,从而为掩模提供了10%至50%的更准确结果,从而改进了Faster R-CNN。在RoI Align的帮助下,可以克服RoI Pooling尝试拟合输入要素图的块所遇到的位置未对准问题,从而实现这一目标。Mask R-CNN不仅提供了实例分割的优势,而且还通过使用RoI Align算法提高了核心精度。该阶段的结果是输出字典,其中包含给定视频帧的所有类别ID,检测分数,边界框和生成的掩码。

  • 车辆跟踪和特征提取

在物体检测阶段之后,我们会过滤掉所有检测到的物体,并仅根据其类别ID和得分保留正确检测到的车辆。在给定的帧中检测到车辆后,框架的下一个必要任务是在素材的后续时间帧中跟踪每个检测到的对象。这是通过利用称为质心跟踪的简单而高效的对象跟踪算法来完成的。该算法依赖于在连续帧上获取检测到的车辆的质心之间的欧几里得距离。从这一点开始,我们将互换使用车辆和物体。

在此框架中使用的质心跟踪机制是一个多步骤的过程,可以满足上述要求。步骤如下:

  • 通过获取穿过检测到的车辆的边界框的中点的线的交点来确定对象的质心。
  • 计算新检测到的物体和现有物体的质心之间的欧几里得距离。
  • 根据距当前质心集和先前存储的质心的最短欧式距离更新现有对象的坐标。
  • 通过分配新的唯一ID并将其质心坐标存储在字典中,在视场中注册新对象。
  • 取消注册连续预定数量的帧中在当前视场中不可见的对象。

python水平加速度振动信号 python求汽车加速度_车辆碰撞_03

使用的质心跟踪算法的主要假设是,尽管对象将在镜头的后续帧之间移动,但两个连续帧之间同一对象的质心之间的距离将小于到其他任何对象的质心的距离。这解释了步骤3工作背后的概念。

一旦为车辆分配了一个单独的质心,就将使用以下标准来预测碰撞的发生,如图2所示。

  • 车辆边界框的重叠
  • 确定轨迹及其相交角
  • 确定速度及其加速度变化

两辆车的边界框的重叠在此框架中起关键作用。在两个车辆物体碰撞之前,从III-A部分获得的两个物体的边界框很可能会重叠。但是,在某些情况下边界框确实会重叠,但情况不一定会导致事故。例如,在交通信号灯处停放了两辆汽车时,或者在高速公路上汽车相互行驶的基本情况下。这可能会引发错误警报,这就是框架除了将名义权重分配给各个标准之外,还利用其他标准的原因。

确定两辆车的边界框在哪里重叠的过程如下:将

a,b视为两辆车A和B的边界框。令x,y为给定车辆的质心坐标,并令α,β分别是车辆边界框的宽度和高度。在任何给定的情况下,如果等式中所示的条件,则A和B的边界框会重叠。

python水平加速度振动信号 python求汽车加速度_python水平加速度振动信号_04

上述条件检查A和B的两个边界框的中心是否足够接近以至于它们将相交。这两个轴都完成了。如果框在水平轴和垂直轴上都相交,则边界框被表示为相交。这是框架中的基本步骤,并且还充当了前面提到的其他标准的基础。

框架中的下一个任务T2是确定车辆的轨迹。这是通过在每五个连续的帧中获取被跟踪车辆的质心之间的差异来确定的,这可以通过在每帧中存储每个车辆的质心直到按照前述的质心跟踪算法记录车辆的质心来实现。这将产生一个2D 向量,代表车辆运动的方向。然后我们确定向量的大小μ,如方程式所示2:

python水平加速度振动信号 python求汽车加速度_python_05

然后,我们通过使用获得的矢量的标量除以其大小来对该矢量进行归一化。如果每个跟踪对象的原始大小超过给定阈值,则将其存储在归一化方向矢量的字典中。否则,我们将其丢弃。这样做是为了确保静态对象的质心的微小变化不会导致错误的轨迹。然后,我们通过外推将该向量显示为给定车辆的轨迹。

然后,我们使用传统公式来确定两个方向向量之间的角度,从而确定轨迹之间的角度。这里,我们考虑μ 1和μ 2分别是对于每个重叠的车辆的方向矢量。然后,使用等式中的公式找到两个轨迹θ之间的相交角。

python水平加速度振动信号 python求汽车加速度_python_06

我们将讨论θ的用法,并引入一个新的参数来描述车辆在III-C部分中发生碰撞后的各个咬合。

框架中的下一个标准C3是确定车辆的速度。我们通过一系列步骤来确定车辆的速度。我们估计τ,视频帧之间的间隔,使用等式中给出的每秒帧数(FPS)。

python水平加速度振动信号 python求汽车加速度_python水平加速度振动信号_07

然后,我们确定由车辆在从车辆的重心五个帧所覆盖的距离Ç 1在第一帧和Ç 2在第五帧。如果车辆五秒钟没有进入车架,我们将以过去的最新质心为准。然后,我们确定总值速度)。

python水平加速度振动信号 python求汽车加速度_python水平加速度振动信号_08

接下来,我们使用等式将车辆的速度归一化,而不管其与相机的距离如何。6通过在视频帧(的高度ħ)和轿厢(的边界框的高度ħ),以获得可缩放速度(小号车辆),跟踪到的车辆的比例速度存储在每帧字典中。

python水平加速度振动信号 python求汽车加速度_Tensorflow_09

然后,加速(甲车辆对于给定的),一个升从其变化计算在按比例缩放的速度从小号1级小号到小号2 小号使用等式。

python水平加速度振动信号 python求汽车加速度_python水平加速度振动信号_10

事故检测

本节描述了如图所示满足车辆重叠标准(在III-B部分中讨论的C1)时的事故检测过程。我们将引入三个新参数(α ,β ,γ)来监视异常以进行事故检测。参数为:

  • 加速度异常,α
  • 轨迹异常,β
  • 角度异常变化,γ

当两辆车重叠时,我们从字典中捕获的车速中找到它们的加速度。我们发现重叠条件(C1)之前15帧的车辆平均加速度和C1之后15帧的车辆的最大加速度。通过求出重叠条件(C1)下最大加速度和平均加速度之差,可以发现各个车辆的加速度变化。定义了加速度异常(α)以基于与一组预定条件的差异来检测碰撞。该参数捕获了碰撞过程中速度的实质变化,从而能够根据其变化检测事故。

在满足重叠条件C1时,从车辆的轨迹的交角(θ)确定轨迹异常(β)。

1)如果θ∈(θL,θH),则根据关于θ值的一组预定条件确定β。

2)否则,根据预定义的一组条件从θ和轨迹交点的距离确定β。

第三,我们引入了一个新参数,该参数考虑了碰撞过程中车辆方向的异常。我们通过确定车辆在五个帧的间隔内相对于其自身轨迹的角度(θ)来确定此参数。因为在事故中,车辆相对于轴线经历了一定程度的旋转,所以轨迹就充当了相对于轴线的切向矢量。通过获取车辆轨迹角度的变化,我们可以确定这种旋转程度,从而了解车辆发生方向变化的程度。基于每个相关车辆的角度,我们基于一组预先定义的条件确定角度异常的变化(γ)。

最后,我们借助功能将所有单独确定的异常结合起来,以确定是否发生了事故。函数f (α ,β ,γ )基于各个阈值的权重,并在0到1之间产生一个分数。得分大于0.5被视为车辆事故,否则将被丢弃。这是检测事故的关键原则。

实验评估

所有实验均在配备了NVIDIA Tesla K80 GPU,12GB VRAM和12GB主内存(RAM)的Intel®Xeon®CPU @ 2.30GHz上进行。所有程序均以Python-3.5编写,并使用Keras-2.2.4和Tensorflow-1.12.0。视频处理是使用OpenCV 4.0完成的。

  • 数据集使用

这项工作是根据YouTube整理的来自不同地理区域的车辆碰撞镜头进行评估的。考虑以每秒30帧(FPS)的监视视频。视频剪辑被裁剪为大约20秒,以包含意外帧。此模型测试的所有数据样本都是在世界不同地方的道路交叉口录制的CCTV视频。该数据集包括各种环境条件下的事故,例如恶劣的阳光,白天,下雪和夜间。数据集的样本如下图所示:

python水平加速度振动信号 python求汽车加速度_车辆碰撞_11

  • 结果统计与现有模型的比较

python水平加速度振动信号 python求汽车加速度_python水平加速度振动信号_12

我们估计了两辆车之间的碰撞,并在图框中用圆圈直观地表示了感兴趣的碰撞区域,如下图所示:

python水平加速度振动信号 python求汽车加速度_图像算法_13

我们可以看到,每辆车都被其边框和蒙版所包围。 从车辆突出的洋红色线描绘了沿该方向的轨迹。 在发生碰撞的情况下,将显示一个圆圈,其中包含碰撞的车辆。 与这项工作中的数据集相比,现有的基于视频的事故检测方法使用的监控摄像机数量有限。 因此,与表一中给出的现有文献相比,在这项工作中考虑和评估了更现实的数据。

python水平加速度振动信号 python求汽车加速度_车辆碰撞_14

框架使用公式计算得出的检出率为71%。8和使用等式计算的误报率0.53%

结论

本文提出了一种检测车辆碰撞的新框架。该框架基于局部特征,例如轨迹相交,速度计算及其异常,与该框架相关的所有实验均验证了该命题的效力和效率,从而证明了该框架可以向有关当局提供及时,有价值的信息这一事实。

结合多个参数来评估事故的可能性,可以放大我们系统的可靠性。由于我们将注意力集中在检测到的,被遮盖的车辆周围的特定感兴趣区域上,因此可以对事故事件进行定位。所提出的框架能够以71%的检测率为0正确地检测事故。在各种环境条件下(例如白天,黑夜和大雪)获得的事故视频的误报率达到53%。实验结果令人放心,并显示了所提出框架的实力。但是,这项工作的局限性之一是由于车辆检测和跟踪的不准确性而导致的高密度交通效率低下,这将在以后的工作中加以解决。另外,阻碍摄像机视野的大障碍物可能会影响车辆的跟踪,进而影响碰撞检测。