1 数据集
异常事件检测根据场景不同,学术界开源了多种数据集,如下表所示。
表3-1异常事件检测数据集
该领域应用最广泛,常作为benchmark的数据集为UCSD Pedestrian,Avenue,ShanghaiTec数据集,下文进行详述。
1.1 UCSD Pedestrian 数据集
UCSD行人数据集是视频异常事件检测研究中使用最广泛的主流数据集之一,它分为UCSD Ped1和UCSD Ped22个数据集,是从加州大学圣地亚哥分校2个不同地点的人行道视频监控中收集而来。数据集中,走路的行人被视为正常事件,而在人行道中出现的其他移动物体则被视为异常事件,例如在人行道上骑自行车、滑滑板、推手推车、驾驶汽车等。行人在非人行道区域(例如草坪)行走也被视作异常事件。此外,这2个数据集包含大量视频前景物体相互遮挡的拥挤场景,尤其是行人的遮挡,增加了检测异常事件的难度。测试集均提供了像素级别的标注,即在每个视频帧上标注出了异常像素。数据集示例见下图。
image.png图3-2 UCSD Ped1和UCSD Ped2正常/异常示例
1.2 Avenue数据集
Avenue数据集采集自香港中文大学校内一个走廊的监控摄像机。在此视频数据集中,行人在走廊上按正常方向行走是正常事件,而在走廊上扔书包、洒纸片、奔跑、推自行车等各种类型的行为被当成异常事件。为了接近现实世界中的实际情况,Avenue数据集的测试视频中会发生一些轻微的相机抖动。数据集示例见下图。
image.png图3-3 Avenue数据集正常/异常示例
1.3 ShanghaiTec数据集
ShanghaiTec数据集的数据量大于UCSD Ped和Avenue数据集,与其他数据集只包含一个固定的摄像头采集视频不同,ShanghaiTec数据集一共包含了13个有不同光照条件和摄像头角度的场景,这使其成为现有benchmark中最具挑战性的数据集之一。数据集示例见下图。
image.png图3-4 ShangTec数据集正常/异常示例
2 主流异常事件检测算法
基于深度学习的主流异常事件检测算法采用半监督学习思想,即仅对正常样本进行学习,测试时实现对于正常样本与异常样本的区分。具体可分为基于重建与基于预测两大流派。
常见异常事件检测方法训练/测试流程见下图。在训练阶段,需要制作数据集完成模型的训练。数据集的制作需对摄像头传输的视频流进行解码,形成视频格式的文件。进而将视频逐帧抽帧保存为图像文件。对图像进行标注,一般仅需要区分视频帧属于正常或异常即可,无需进行更细粒度的异常类别区分,亦无需进行目标检测或语义分割形式的标注。模型的训练只使用数据集中正常的视频帧图像对模型进行训练,使模型具备对正常图像的重建能力,或者具备对正常视频帧的预测能力。训练过程中可通过数据集验证模型性能,方法为使用模型对数据集中未参与训练的正常图像及异常图像进行推理,得到分类性能。在测试阶段,对实际场景下摄像头传输的视频流进行解码,根据一定的规则进行抽帧,将抽帧后的图像送入异常检测模型以判断该帧图像是否包含异常事件。
图4-1 常见异常事件检测方法训练/测试流程
基于重建方法主要通过自动编码器(Autoencoder,AE)将正常图像映射到隐空间,映射为低维向量,再将其重建为图像。该类方法均假设模型仅能获得对于正常样本的重建能力,而不具备对于异常样本的重建能力,根据正常样本与异常样本的重建效果差异实现二者区分。由于该过程本质上是对图像的压缩与重建,为了获得良好的重建效果,模型将致力于提取图像更本质的表征,有助于更好的学习图像特点。基于预测方法认为AE的泛化能力过强,并且存在恒等映射现象,导致其对异常图像也具有较好的重建能力。改为通过学习正常视频的部分帧率,预测其后续帧率图像的方法解决上述缺点。该类方法假设模型只能实现对正常视频片段的预测,而不具备预测异常事件视频帧率的能力,通过预测帧与实际帧的差异判别正常与异常样本。 下文中4.1-4.3为基于重建的异常检测方法,4.4-4.5为基于重建的异常检测方法。
2.1 Learning Temporal Regularity in Video Sequences
本方法发表在CVPR2016,是使用AE重建视频以实现异常事件检测的先驱。该方法实现了2种深度自编码器,基于手动特征的自编码器利用传统特征算子将提取的视频特征作为AE的输入,深度卷积自编码器直接以整个原始视频帧作为输入。论文发现直接将原始视频帧作为输入的深度卷积自编码器能够获得优良的异常检测性能。启发了后续的重建类方法。模型结构见下图所示。
基于手动特征的自编码器以视频帧的梯度方向直方图(HOG)和光流方向直方图(HOF)作为AE的输入,输出为重建后的HOG和HOF,比较重建前后的特征差异作为判别异常的标准。编码器网络结构为四层全连接网络,神经元数量分别为204、2000、100、500,输出为30维的向量,解码器以此向量作为输入,模型结构与编码器对称。基于手动特征的自编码器模型结构见下图所示。
image.png
卷积深度自编码器以原始视频帧作为输入,经过编码与解码后,直接输出重建后的图像。根据重建前后图像的像素级差异作为判别异常的标准。编码器由三层卷积和两层池化组成,以10帧2272271的图像作为模型输入,第一层卷积核设置为1111,输出featuremap为5125555,第一层池化层步长为22,输出featuremap为5122727,第二层卷积核设置为55,输出featuremap为2562727,第二层池化步长为22,输出featuremap为2561313,第三层卷积核设置为33,输出12813*13。解码器结构与编码器对称,采用反卷积代替卷积操作。经过本文的实验验证,以及后续深度学习在自编码器领域的发展,均表明以图像作为输入输出进行自动特征学习的自编码器性能优于传统基于手动特征提取的自编码器。卷积自编码器成为后续异常事件检测方法中的主流模型。基于卷积深度自编码器模型结构见下图所示。
image.png
2.2 MemAE
MemAE为2019年发表在ICCV的论文,是重建类方法中第一篇引入记忆模块(Memory module)的方法。传统重建类方法的一个明显问题是AE的泛化能力过强,对于部分异常样本依然具备较强的重建能力,导致模型对于正常与异常样本的区分能力下降。MemAE方法基于记忆定位机制,将样本在隐空间的表征向量由正常样本表征向量进行表示。人为的将正常/异常样本在隐空间的表征替换为正常样本的表征,故重建效果更接近于正常样本,导致异常样本重建误差较大,以此实现区分。方法示意图如下。
image.png
图 MemAE方法示意图
MemAE的模型结构由AE与Memory module组成。对于Mnist数据集,编码器由三层卷积组成,卷积核设置为Conv2(3, 2, 32)- Conv2(3, 2, 16)-Conv2(3, 3, 8),解码器由三层反卷积组成,卷积核设置为Dconv2(3, 3, 16)-Dconv2(3, 2, 32)-Dconv2(3, 2, 1)。对于Cifar10数据集,编码器由四层卷积组成,卷积核分别为Conv2(3, 2, 64)-Conv2(3, 2, 128)-Conv2(3, 2, 128)-Conv2(3, 2, 256) ,解码器由四层反卷积组成,卷积核分别为 Dconv2(3, 2, 128)-Dconv2(3, 2, 128)-Dconv2(3, 2, 64)-Dconv2(3, 2, 3模型结构如下图所示。
image.png
图 MemAE模型结构
其中,经过编码器(Encoder),输入图像x转换为空间向量z,在Memory module中,首先通过Memory Addressing将z转换为权重w,转换公式见式1.
image.png
其中d函数为cosin相似度,m为记忆(Memory,M)中的正常样本向量。
考虑到直接计算得到的w较为冗余,借用ReLU形式得到更稀疏的权重 。计算公式见式2.
image.png
最终,使用权重 与M相乘获得新的隐空间向量 。可以理解为输入图像的最终隐空间表征向量是由原有的数个正常样本的隐空间向量加权而来,故其经过解码器(Decoder)重建后更像正常样本,导致异常样本的重建误差较大。
2.3 MNAD
MNAD发表在CVPR2020,可看作是MemAE的改进版本。作者认为MemAE存在未考虑相似样本间的差异以及重建效果模糊的缺点。MNAD在保持MemAE主体结构(Encoder,Decoder,Memory Module)的前提下,进行了如下改进,1. Memory Module中设计了更新机制,样本对应记忆模块中的特征可进行更新。2.实现了场景的多样性区分,使得图像重建适用于多样性场景。3.通过将原始特征与记忆模块特征融合,解决了重建图像模糊的问题。MNAD模型架构如下。
自动编码器采用U-NET结构,编码器部分为5组卷积,每一组包括三次卷积操作,卷积核均为33,步长为1,前四组卷积后跟步长为2的最大池化层。解码器部分由四组卷积组成,每一组包括三次卷积操作,卷积核均为33,步长为1。每组卷积前施加2倍上采样的反卷积层。
image.png
记忆模块中Read模块对输入的某个表征向量与Memory中的所有表征向量进行权重更新,使得单个输入向量与Memory中的向量经权重表示后尽可能相近。通过feature compactness loss进行约束。
image.png
其中,pp表示记忆项中的表征,qt表示输入图像的表征。
记忆模块中Update模块对所有输入的表征向量与Memory中的某个向量进行权重更新,对于输入向量,找到Memory中与其最接近的向量与第二接近的向量。保证与最接近的向量接近,拉大与第二相似向量的距离,促使记忆项中向量之间的差异应该拉大,增强不同场景的区分和判别能力。
image.png
其中q表示输入向量, pp最接近的Memory向量,pn表示第二接近的Memory向量。
Read与Update模型结构如下图所示。
image.png
2.4 STAE
STAE发表于ACM MM2017,在阿里巴巴城市大脑中为交通监控视频提供异常检测算法。该论文首次使用时空自编码器对视频帧进行重建与预测,以改善异常检测的性能。传统的异常检测算法多基于2D卷积构建AE,未考虑监控视频中时序信息的重要性。该方法首次使用3D卷积构建时空自编码器,对视频片段进行编码与解码,以提取空间维度与时间维度的特征。值得注意的是,时空自编码器中的Decoder由重建分支与预测分支两部分组成,分别用于对输入视频帧的重建及未来视频帧的预测。
模型由一个编码器和两个解码器组成。编码器由四层3D卷积组成,后接BN, LReLU,3Dpooling层。各层输出featuremap为(8646432),(4323248),(2161664),(2161664).解码器为并行的重建解码器与预测编码器,结构相同,由三组3D反卷积+BN+ LreLU及一组3D卷积+sigmoid组成。各层输出featuremap为(4323248),(8646432),(1612812832),(161281281). 模型结构如下图。
image.png重构分支用于对输入的t帧视频进行重构,由于异常事件的重建效果劣于正常样本,借助像素级的重建差异分数可得到输入图像的异常得分热力图,设定特定的阈值可用于定位图像中的异常事件,具体效果见下图。其中左侧图为输入图像,中间图为重建图像,右侧图为重建误差图。根据设定的误差阈值可定位异常事件。
image.png
受到预测网络有助于学习视频表征的启发,STAE的预测分支用于预测预测输入视频片段之后的未来 T 帧。预测任务虽然无法预测未来帧中新出现的目标,但是可以引导模型获取已知目标的轨迹以及让编码器更好地提取时间特征。对T帧视频的重建效果及预测效果的两个示例见下图。两示例中的上图均为原始视频图,左侧为对已知帧的重建效果,右侧为对未来帧的预测。可见预测分支虽然无法对新出现的车辆实现检测,但可以估计已知异常的行动轨迹。
image.png图 STAE重建分支与预测分支效果
2.5 Future Frame Prediction for Anomaly Detection-A New Baseline
该论文发表于CVPR2018,与STAE发表时间接近,均为基于预测未来帧思想进行异常事件检测的开创性工作。基于重建思想的异常事件检测方法的一大缺陷是AE具有恒等映射的问题,对于部分异常事件仍能实现较好的重建效果。为了抑制AE的恒等映射问题,该方法创造性的使用对抗生成网络(generative adversarial network, GAN)进行视频未来帧的预测。为了使得预测的图像效果更清晰,模型除了约束预测帧的图像质量,还引入了光流法约束预测帧的光流差异。GAN中使用U-Net作为生成器,判别器用于判别生成的预测帧与实际下一帧。通过迭代训练,使得生成的预测帧率足够真实。模型架构如下图所示。
image.png
生成器(Generator)采用U-net结构
为了保证生成质量,论文使用三种损失函数进行约束。
像素级差异,即对对应像素点计算L2损失,如下式所示。
image.png
梯度差异,即保证生成图像的梯度和原图像梯度尽可能接近,如下式所示。
image.png
光流差异,即保证由生成的预测帧计算而来的光流与真实帧计算结构尽可能接近,如下式所示。
image.png
由于模型基于正常事件视频片段训练而来,所以对于正常事件,如正常行走的预测效果较好,而对为学习过的异常事件,如骑车,其预测效果较为模糊,以此实现正常与异常样本的检测。 image.png
图 正常事件与异常事件的重建效果
网友评论