一种时空无监督的事故检测方法

1 文章信息

一种时空无监督的事故检测方法

本次介绍的是文章名为 《Deep Spatio-Temporal Representation for Detection of Road Accidents Using Stacked Autoencoder》。

2018年发在IEEE Transactions on Intelligent Transportation Systems上的一篇文章,被引31次。

2 摘要

基于监控的道路事故检测是一项非常有必要且颇具挑战的视觉任务。本文提出了一种基于监控视频的事故检测框架,该框架直接从输入的监控视频中学习到事故的时空特征,而不是人工提取的特征(比如速度变化,轨迹异常等)。同时考虑到事故的视频较少,而非事故的视频数量却要远超于事故视频的数量。该框架使用了一种时空自编码器(Auto-encoders)来进行事故特征的提取。并结合自编码器的重建损失以及视频段在浅层空间的向量异常得分(使用单分类SVM实现)进行事故/异常检测。作者从大量正常的监控视频中训练,并在大量事故视频的测试中验证了模型的有效性。

3 事故检测的必要性

智能交通作为智慧城市的重要组成部分,其旨在建立一个

  • (1) 基于实时信息的智能公共交通系统

  • (2) 致力于解决交通拥堵、交通安全、交通绿色应用的交通管理系统

然而随着城市规模的快速扩大与交通车数量的迅速增加,交通拥堵交通事故成了让交通管理部门最头疼的问题。对交通事故进行快速检测,可以降低由于救援不及时带来的财产损失和人员伤亡损失。

一种时空无监督的事故检测方法

而且最近二十年内,交通监控遍布城市街道的各个角落,为基于视觉的事故检测提供了大量的视频数据来源。如何有效地使用目前已有的监控数据来进行事故检测非常关键,鉴于使用人力来监控每个监控画面并做出判断不太可能的,因为这会消耗大量人力资源。最近十年内,随着深度学习技术的发展,基于卷积神经网络的计算机视觉技术得到了迅速的发展。深度学习计算机视觉技术不需要人工提取图像/视频的特征,所有的特征都是机器通过大量的数据和反向传播算法学习到的,所以基于深度学习的计算机视觉技术相较于传统的人工提取特征的图像处理方法精度更高。

一种时空无监督的事故检测方法

所以综合上述几点,引入基于监控视频的事故快速检测是非常有必要的。本文考虑到事故视频难以获得,所以使用大量正常的监控视频训练一个时空自编码器,训练完毕的自编码器对正常视频重建误差较小,对未见过的视频(多半指的是事故视频)重建误差较大,可以根据此性质进行事故视频的判别。

4 主体内容

4.1  无监督事故检测思路

作者将事故判别的依据分为(1)事故前(2)碰撞发生时(3)事故后。也就是不同时期对事故判断的依据不同。

  • (1) 事故发生前。可以通过一些对交通规则的违背(不遵守交通信号灯、不遵守限速行为等)等情况来进行事故的预判断;

  • (2) 碰撞发生时。包括一些时空维度的轨迹交叉,但是对拥堵和碰撞等情况难以识别。

  • (3) 事故发生后。这是最简单的,主要通过判断以下几种情况的发生,比如车辆或者行人的侧翻或者摔倒等行为的发生。

然后作者提出了他的模型,大致结构图如下所示。

一种时空无监督的事故检测方法
论文中的主体模型

该模型接受两种不同类型的输入。一是堆叠的视频帧采样的STVVs,二是堆叠的光流采样的STVVs。然后通过构建重建损失来训练模型。最终测试阶段时,需要考虑

  • (1)被检测视频所有STVVs的重建损失

  • (2)被检测视频所有STVVs的浅层特征属于正常视频的置信度

结合上述的(1)(2),作者对被检测视频进行判别,确定被检测视频是否为事故视频。

上述提到的STVVs,需要进行一下说明。我们稍做一下解释。如下图所示为视频帧的STVVs采样,对于该堆叠视频帧中的任意一点p(x,y,z),以该点为中心的大小为(w,h,t)的3D领域,如图中所示的小方格就是一个个的STVV。

一种时空无监督的事故检测方法

作者在实验部分说道,STVVs的设置如下:

For experiment we generate STVVs of spatial scale of 11×11, 13×13, and 15×15 pixels. For each spatial scale, we generate three temporal scales of 3, 5, and 7 frames.

也就是宽高从11x11到15x15不等,t从3到7不等。

提取STVVs后,作者将这些三维的STVVs压缩成向量作为自编码器的输入。

至于作者为什么要设置STVV,而不是整个堆叠视频帧/光流。我觉得很可能是为了减少计算量加速训练和测试

4.2 堆叠去噪自编码器(Stacked Denoising Autoencoder)

上面提到了作者提出的总模型架构,接下来将对其中的自编码器进行详解。我们知道自编码器其实包含了三个过程,分别为(1)编码(2)解码(3)构建重建损失进行训练。

(1) 编码器

编码器类似机器学习中的降维操作,也就是将高维的视频数据压缩为低维的向量表示。假设输入的STVVs(转化为向量)为 ,被映射到的浅层向量为 。令编码器的权重为(W,b),则有以下公式成立。

一种时空无监督的事故检测方法
(2) 解码器

解码器的过程是编码器过程的逆变换,也就是通常解码器将编码器获得的浅层向量表示重新映射回输入空间。解码器的训练目标就是如何将从编码器获得的浅层向量映射回去,使得映射回去的输出尽可能地与输入类似。所以不妨设(W',b')为解码器的权重,那么有以下公式成立。

一种时空无监督的事故检测方法

这个 就是解码器的输出。

(3)重建损失函数

最后根据网络的输入 和网络的输出 进行重建损失的求解即可,公式如下。

一种时空无监督的事故检测方法

这里作者还加了一个正则项,防止过拟合。其中N是一个视频中被划分成的STVVs数量

4.3  异常得分计算

刚刚我们提到重建损失只是事故判别依据之一,还有一个事故判别依据就是计算视频的异常分值进行判断。

大致的意思就是我们将大量的正常视频的STVVs通过上述的自编码器学习到了大量正常视频的浅层表征。然后将这些特征通过SVM做一个简单的一分类问题。如果后续有一个视频的浅层向量为h,通过以下公式即可进行异常判别。

一种时空无监督的事故检测方法

该公式中{ , …, ,… }为m个支持向量是每个支持向量各自的拉格朗日乘子,ρ是人为设定的阈值。如果上述公式大于0,则被认定为非事故,否则就是事故视频。

最终,作者利用上述总模型中获得三个重建损失三个异常分值,联合进行事故的检测,公式如下

一种时空无监督的事故检测方法

这里的A是外观特征,M是运动特征,J是联合特征。γ是异常分值,ξ是重建损失。至此,有关模型这块就讲解完毕。我们来看看他的结果如何。

5 结果分析

一种时空无监督的事故检测方法

作者最终给出了如上所示的结果图,因为上述我们提到在进行异常得分计算的时候,会引入阈值ρ,那么选择不同的阈值会有不同的结果,作者就根据阈值的不同绘制出了如上图所示的ROC曲线。然后也给出了如下所示的AUC表。

一种时空无监督的事故检测方法

从图表中可以看出,就外观特征而言,根据重建损失的效果要比根据异常分值的判别效果要好;而运动特征而言,根据异常分值的判别效果更好。最终运动特征和外观特征的综合以及重建损失和异常分值的综合,会带来效果的提升(最终的AUC为0.8106)。

6  创新点和不足

本文的创新点可以总结如下:

  • (1) 端到端的学习模型。所有特征都是机器自动学习的,而不是人手动设置的特征;

  • (2) 考虑到了视频信息的时空性。并结合无监督学习和时空自编码器来获取事故的浅层特征,不需要收集大量的事故视频;

  • (3) 综合考虑事故的外观特征和运动特征,并结合异常分值和重建损失进行事故判别;

  • (4) 为了降低计算量,作者引入了STVVs作为整个堆叠视频或者光流的替代。

缺点

  • (1) 异常检测并不等同于事故检测,异常范围远比事故范围更广。该方法虽然比较新颖,但是要落地还是挺困难的。

  • (2) 模型计算量比较大。虽然作者考虑了使用STVVs代替整个视频段,降低了计算的复杂度,但是实际上包含光流提取等任务,检测的实时性无法满足。

Attention

如果你和我一样是轨道交通、道路交通、城市规划相关领域的,可以加微信:Dr_JinleiZhang,备注“进群”,加入交通大数据交流群!希望我们共同进步!

一种时空无监督的事故检测方法