论文题目

《Anomaly Detection in Video via Self-Supervised and Multi-Task Learning》

《通过自监督和多任务学习进行视频异常检测》

目录

  1. 摘要
  2. 介绍
  3. 相关工作
  4. 方法
    4.1 动机和概述
    4.2 网络架构
    4.3 代理任务和联合学习
    4.4 推断
    4.5 对象级与帧级检测
  5. 实验
    5.1 数据集
    5.2 设置和实施细节
    5.3 异常检测结果
    5.4 消融研究
  6. 总结
  7. 补充
    7.1 定性结果
    7.2 运行时间
    7.3 讨论

摘要

视频中的异常检测是一个具有挑战性的计算机视觉问题。由于训练时缺乏异常事件,异常检测需要在不是全监督的情况下设计学习方法。在本文中,我们通过在对象级别的自监督和多任务学习来处理视频中的异常事件检测。我们首先利用预先训练的检测器来检测物体,然后,我们通过联合学习多个代理任务 (三个自监督任务和一个基于知识蒸馏的代理任务) 来训练3D卷积神经网络以产生区分异常的特定信息。自监督的任务是 :(i) 区分向前/向后移动的对象 (时间箭头),(ii) 识别连续/间歇帧中的对象 (运动不规则性) 和 (iii) 重建特定于物体的外观信息。知识蒸馏任务同时考虑了分类和检测信息,在发生异常时会在教师和学生模型之间产生较大的预测差异。据我们所知,我们是第一个将视频中的异常事件检测作为一个多任务学习问题来研究,将多个自监督和知识蒸馏代理任务集成在一个单一的体系结构中 。我们的轻量级架构在三个基准上优于最先进的方法: Avenue,shanghitech和UCSD ped2。此外,我们进行了一项消融研究,证明了在多任务学习环境中整合自监督学习和针对常态的蒸馏的重要性。

视频中的异常检测是一个颇具挑战性的课题。因为在训练时缺乏异常事件,所以异常检测需要在不是全监督的情况下设计学习方法。作者的处理方法是联合三个自监督和一个基于知识蒸馏来训练3D卷积网络以产生区分异常的特定信息。

这三个自监督的任务分别是:

  1. 区分向前/向后移动的对象
  2. 区分连续/间歇帧中的对象
  3. 重建特定物体的外观信息

:bell::

1:监督的类型有哪些,分别是?

  • 全监督是训练时候全带正确的标签
  • 半监督是训练时一半带正确标签,一半不带
  • 弱监督是带标签,但标签可能是错的
  • 无监督是完全不带标签

2:知识蒸馏的定义:

知识蒸馏是将teacher网络的知识转移到student网络。做法是先训练一个teacher网络,然后用这个teache网络的输出和数据的真实标签去训练student网络。该方法可以将网络从大网络转化成一个小网络,并且保留接近于大网络的性能;也可以将多个网络所学到的知识转移到一个网络中。

介绍

近年来,人们越来越关注检测视频中的异常事件的任务 。异常事件通常定义为给定上下文中的不熟悉或意外事件。例如,如果过马路的人没有在人行横道上发生该事件,则可以将其视为异常。此示例表明,上下文在异常事件的定义以及因此在问题的表述中起着关键作用。事实上,对上下文的依赖,加上各种各样的意外事件,使得收集异常事件进行训练变得极其困难。因此,异常检测问题通常被视为离群点检测任务。然后,将正态模型拟合在正常训练数据上,将偏离模型的事件标记为异常。由于无法采用标准监督,研究人员提出了基于距离的 [17、19、37、38、40、44、45、46、47、50、52、59] 和基于重建的策略 [5、13、14、27、29,31、34、36、41、51、53] 对概率 [1、2、4、12、16、21、32、444、58] 和变化检测方法 [7、18、28、35]。代替学习直接区分正常事件和异常事件,相关方法处理了一个不同但又相互关联的任务。

例如,在Liu等人的开创性工作中 [27],神经网络学习预测未来的视频帧。在推理过程中,如果预测的未来帧显示出较高的重建误差,则事件将被标记为异常。尽管最先进的方法取得了令人印象深刻的结果,但由于代理任务与异常检测没有很好地对齐,因此通过单个代理任务来解决异常检测是次优的。例如,停在行人区域的汽车应标记为异常,但该汽车在将来的框架中很难重建 (因为它静止不动)。因此,我们建议通过在多个代理任务上联合训练模型来执行异常检测。遵循一系列最新方法 [9,10,17,61],我们还采用了对象检测器,随后在对象级别执行异常检测。但是,这些最近的方法考虑了单个代理任务。与 [9,10,17,61] 不同,我们提出了一种新颖的异常检测方法,该方法通过单个以对象为中心的体系结构共同学习一组多个代理任务。

如上所述,我们设计了一种以对象为中心的方法,包括3D卷积神经网络 (CNN),该网络共同学习以下代理任务 :( i) 预测时间箭头 (区分向前和向后移动的对象),(ii) 预测运动的不规则性 (区分在连续帧中捕获的对象与在间歇帧中捕获的对象),(iii) 重建对象的外观 (给定它们在前帧和后帧中的外观),(iv) 通过提炼预先训练的分类 (ImageNet [43]) 和检测 (MS COCO [26]) 教师来估计特定于正态性的班级概率。为了共同解决这些自我监督和知识蒸馏任务,我们为每个相应的任务集成了一个预测头,如图1所示。据我们所知,我们是第一个提出多任务学习方法的人,该方法将一组新颖的自我监督和知识蒸馏代理任务集成在一个以对象为中心的架构中,用于视频中的异常检测。

我们在三个基准上进行综合实验,即Avenue [29] 、ShanghaiTech [31] 和UCSD Ped2 [32]。我们的方法优于最先进的方法 [7、8、9、10、13、14、16、17、18、19、20、21、23、24、27、28、29、30、31、32、444、34、36,37、38、40、41、47、48、49、51、53、55、57、59、60、61、62、64] 在所有三个数据集上,在Avenue上实现帧级AUC得分92.8%,在shanghitech上90.2%,在UCSD ped2上99.8%。此外,我们提供的经验证据证实,对所提出的代理任务进行联合优化的模型优于对单个任务进行优化的单个模型,因此表明通过单个代理任务进行建模异常检测是次优的。

总而言之,我们的贡献是多方面的:

  • 我们引入学习时间箭头作为异常检测的代理任务。
  • 我们引入运动不规则预测作为异常检测的代理任务。
  • 我们引入模型蒸馏作为视频异常检测的代理任务。
  • 我们将视频中的异常检测作为多任务学习问题,将多个自我监督和知识蒸馏任务集成到一个模型中。
  • 我们进行的实验表明,与三个基准上的最新方法相比,我们的方法获得了更好的结果。

:bell::本段主要讲诉

相关工作

虽然早期关于视频异常检测的工作[1,2,6,25,29,32,33,46,58]严重依赖于手工制作的外观和运动特征,但最近的文献在深度学习方法方面非常丰富[9,10,14,16,17,27,31,38,40,41,44,47,54,59,60]。 例如,Xu等人。 [59]提出了使用堆叠去噪自动编码器自动学习外观和运动特征,并将其作为多个单类支持向量机模型的输入。 哈桑等人, [14]不同于将自动编码器简单地用作后续模型的特征提取器,而是利用重建误差作为异常的估计器。 最近,Wang等人, [54]提出了进一步的改进,将CNNS(卷积神经网络)与LSTMS(长短期记忆)相结合,形成一个时空自动编码器,能够更好地解释空间特征的时间演化。 王等人, [54]依赖于这样一个假设,即异常事件将导致未来和过去框架之间的重大差异。 将生成网络用于视频异常检测[8,36,41]是依赖于相同原理的另一个重要研究领域,即,当异常事件发生时,合成未来帧将被证明比在正常情况下更具挑战性。 为此,刘等人。 [27]采用生成模型来预测未来的帧,将重建误差视为异常的指示。 在另一个类似的框架中,Lee等人。 [24]提出预测中间帧,考虑从过去和未来帧中学习的双向方法。 类似于未来帧[8,27]或中间帧[24]预测框架,我们提出了一个包含中间帧预测的框架。 与[8,24,27,54]等方法不同,我们在对象层次上研究中框预测,使异常能够准确定位。 而且,中间帧预测只是我们四个代理任务中的一个。 据我们所知,我们率先提出了学习时间箭头、运动不规则性预测和模型提取作为视频异常检测的代理任务。 我们注意到,模型蒸馏已经被研究为一个单一的任务,在静止图像中的异常检测[3]。 然而,我们的烧蚀结果表明,仅用模型蒸馏来检测视频中的异常是不够的。

除了依赖重建误差的方向[14,27,29,31,34,36,41,51,53],最近的其他著作,如[9,38],从完全不同的角度来解决这个问题。 例如,Ramachandra等人。 [38]使用暹罗网络来学习时空视频补丁之间的度量。 在这种情况下,补丁之间的差异提供了估计异常级别的方法。

另外,异常事件检测方法可以根据分析级别进行划分。 虽然一些框架,如[27,33,40,41,47]从全局(帧级)的角度来处理这个问题,但方法,如[7,11,21,19,28,29,31,32,44,46,64]在局部层次上提取特征,例如通过考虑时空立方体。 在某些情况下,异常事件的检测是用多层次框架进行探索的,最近的一个例子是Lee等人的工作。 [24]。 除了这些主流观点,约内斯库等人。 [17]提出了一种新的以对象为中心的框架,在每帧上使用一个单镜头对象检测器,然后应用卷积自动编码器来学习深度无监督表示,作为基于将训练样本聚类成正规聚类的一对一分类方法的一部分。 最近的一些著作[9,10,61]进一步探索了同样的研究路线,提出了可供选择的以对象为中心的框架。 与以对象为中心的框架(如[9,10,17,61])类似,我们使用了一个对象检测器,将我们的分析集中在检测到的对象上。 与[9,10,17,61]不同,我们通过一系列代理自监督和模型精馏任务进行分析,提出了一种新的基于多任务学习的异常检测框架。 因此,与其他以对象为中心的方法[9,10,17,61]的唯一共同方面是使用对象检测器。

目前已有的异常事件检测方法遵循异常事件检测的主流公式,即异常事件是已知上下文中的陌生事件。 在主流的表述中,异常事件在训练时间是不可用的,因为收集足够广泛的异常事件被认为太难了。 虽然我们的研究采用了主流的提法,但我们承认Sultani等人最近的努力。 [48],它考虑了不依赖于上下文的异常事件。 通过消除对上下文的依赖,他们能够在训练中收集和使用异常事件。 在它们的表述中,异常事件检测就相当于视频中的动作识别。 因此,我们考虑Sultani等人发起的研究路线。 [48]并由与我们的研究不太相关的其他人[65]继续。

方法

动机和概述

动机。 通过单个代理任务,例如未来帧预测[27],对异常事件检测进行建模是次优的,因为在代理任务和实际(异常检测)任务之间缺乏完美的对齐。 为了减少模型与异常检测任务的不一致性,我们提出通过在多个代理任务上联合优化来训练模型。

训练。 我们的基于自监督和多任务学习的框架如图1所示。 首先,我们使用一个预先训练的Yolov3[42]检测器检测每帧中的目标,得到一个包围盒列表。 对于帧i中的每个检测对象,我们通过简单地从帧{i-t,...,i-1,i,i+1,...,i+t}中裁剪相应的边界框来创建以对象为中心的时间序列 (不执行任何对象跟踪),将每个裁剪图像的大小调整为64×64像素。 为了说明目的,我们在图1中设置t=2。 由此产生的以对象为中心的序列是我们的3D CNN的输入。 我们的体系结构由共享的3D CNN组成,然后是四个分支(预测头),每个代理任务一个分支。

推论。 在推理过程中,通过平均每个任务的预测得分来计算异常得分。 对于时间箭头和运动不规则的任务,我们取时间序列后移的概率和时间序列间歇的概率。 对于中间帧预测任务,我们考虑了真实与重建对象之间的平均绝对差值。 异常得分的最后一个分量是YOLOV3预测的类概率与我们的知识蒸馏分支预测的相应类概率之间的差值。 我们在推理时不包括Resnet-50预测,以保持我们框架的实时处理。

神经结构

我们的架构由一个共享的CNN和四个独立的预测头组成。 共享CNN使用3D卷积(CONV)来建模时间依赖性,而单个分支仅使用2D卷积。 当一次考虑一个代理任务时,我们使用由三个conv层组成的相对浅而窄的神经结构观察到了准确的结果。 当我们在多个代理任务上联合优化我们的模型时,我们观察到需要增加我们神经网络的宽度和深度,以适应多任务学习问题的增加复杂性。 因此,我们采用了一组四种神经结构,考虑了浅层、深层、窄层和宽层结构的所有可能组合。 这些分别是:浅+窄、浅+宽、深+窄和深+宽。 每个3D CNN体系结构的详细配置见表1。

对于每个网络配置,RGB输入的空间大小为64×64像素。 3D Conv层使用3×3×3的滤波器。 每个conv层之后是批处理规范化层和RELU激活。 我们的浅+窄三维CNN由三个三维conv层和三个三维max-pooling层组成。 它的第一个三维conv层由16个滤镜组成,接下来的两个conv层各由32个滤镜组成。 填充设置为“same”,步幅设置为1。 我们只对前两个3D最大池层执行空间池。 池大小和步幅都设置为2。 最后一个3D最大池层执行全局时间池,在空间级别上保持与前两个池层相同的配置。 只使用一次时态池(在最后一个池层)使我们能够为每个代理任务使用不同的时态大小。 在浅+宽的配置中,我们通过在每个conv层中加倍滤波器的数量来改变3D CNN。 对于Deep+Share架构,我们将3D Conv层的数量从3个增加到6个。 最后,在深+宽的结构中,我们将层数和每个conv层中的滤波器数相对于浅+窄的模型增加了一倍。

在中间目标预测头中,我们结合了一个由上采样和基于3×3滤波器的二维conv层组成。采样操作的数量总是等于3D CNN中最大池层的数量。 类似地,解码器中的2d conv层的数量与3d cnn中的3d conv层的数量相匹配。 每次上采样操作都基于最近邻插值,将空间支持度提高了2×倍。 解码器中的最后一个conv层只有三个滤波器,以便重建RGB输入。 其他三个预测头共享相同的配置,具有一个具有32个滤波器的2D conv层和一个具有2×2空间支持的maxpooling层。 最后一层是一个完全连接的层,有两个单元来预测时间和运动不规则的箭头,或者有1080个单元来预测1000个ImageNet[43]班和80毫秒COCO[26]类的教师输出分数。

代理任务与联合学习

任务1:时间箭头。 为了在对象级别预测时间箭头[56],我们从每个以对象为中心的序列中生成两个标记的训练样本。 第一个样本以它们的时间顺序取帧,即(i-t,…,i-1,i,i+1,…,i+t),因此被标记为前向运动(类别1)。 第二个样本以相反的顺序取帧,即(i+t,...,i+1,i,i-1,...,i-t),被标记为后向运动(类别2)。 在推断过程中,我们预计时间箭头对于具有以下特征的对象将更难预测:地球深度反常运动的对象将更难预测地球深度反常运动的对象将更难预测地球深度反常运动的对象。 让F是共享的3D CNN,HT1是时间头的箭头。 设x(t1)是一个大小为(2·t+1)×64×64×3的向前或向后以对象为中心的序列。 我们用交叉熵损失来训练时间头箭头:


任务2:运动不规则性。 假设一些异常可以通过不规则的运动模式来识别,我们训练我们的模型来预测一个以对象为中心的序列是否有连续的或间歇的帧(一些帧被跳过)。 为了学习运动不规则性,我们从每个以对象为中心的序列中生成两个标记训练样本。 第一个示例捕获从I-T到I+T的连续帧中的对象,相应的类别是规则运动(类别1)。 以对象为中心的间歇序列是通过保留帧I,然后逐步添加T个随机选择的前一帧和T个随机选择的后一帧来创建的。 通过使用{1,2,3,4}范围内的随机间隙跳过帧来选择间歇帧。 间歇性的以物体为中心的序列被标记为不规则运动(2类)。 设HT2为不规则运动头,X(T2)为大小为(2·T+1)×64×64×3的规则或不规则物体中心序列。 我们采用交叉熵损失来训练运动不规则头:


任务3:中间边界框预测。 我们的3D CNN模型还学习重建在正常训练视频中检测到的对象。 从每个以对象为中心的序列中,我们选择从帧{i-t,...,i-1,i+1,...,i+t}中裁剪的图像样本,形成大小为(2·t)×64×64×3的输入以对象为中心的序列x(T3)。 中间的图像对应于帧I中的边界框,表示大小为64×64×3的目标输出Y(T3)。 当我们遇到一个异常运动的异常,比如一个人跑步,输入的那个人的以对象为中心的序列就不会包含足够的信息让模型准确重构中间包围盒,从而被标记为异常。 让HT3为中间包围盒预测头。 我们使用L1损失来学习中间包围盒预测任务:


任务4:模型蒸馏。 一方面,我们的3D CNN模型学习预测Resnet-50[15]的最后一层(就在Softmax之前)的特征,这是在ImageNet上预先训练的。 另一方面,我们的3D CNN模型学习预测由Yolov3[42]预测的类概率,它是在MS COCO上预先训练的。 在精馏过程中,我们的模型学习教师对正常数据的预测行为。 在推理过程中,当我们遇到一个不寻常的物体或属于训练中未见的物体类别时,我们期望我们的学生和Yolov3老师之间有很高的预测差异。 为了节省宝贵的计算时间,我们在推理过程中避免使用Resnet-50。 我们注意到,YOLOV3只在每个帧I上应用一次,每个检测到的对象的相应类概率在模型蒸馏期间已经可用。 在训练过程中,我们仍然需要将每个对象传递给Resnet-50,以提取Pre-Softmax特征。 为了提取Yolov3和Resnet-50教师的知识,我们的学生三维CNN模型接收与Resnet-50相同的输入,并学习预测Resnet-50的pre-softmax特征Y(T4)Resnet和Yolov3预测的类概率Y(T4)Yolo。 设X(T4)为包含检测对象的输入图像,HT4为知识蒸馏头。 模型蒸馏任务是通过最小化L1损失函数学习的:


联合损失。 我们的3D CNN模型是通过对上述四个代理任务进行联合优化来训练的。 因此,该模型使用联合损失函数进行训练:


我们在经验上观察到LT4具有典型的比其他损失函数更高的幅度,在没有正则化项的情况下主导联合损失。 在我们的实验中,在将我们的框架应用于异常检测任务之前,我们对联合损失的验证值进行微调。

推断

在推理过程中,我们利用YOLOV3来检测每一帧I中的对象。 对于每个对象,我们通过从帧{i-t,...,i-1,i,i+1,...,i+t}中裁剪包围盒来提取相应的以对象为中心的序列x。 我们将每个以对象为中心的序列通过我们的神经模型,分别获得输出Y(T1)、Y(T2)、Y(T3)和Y(T4)。 对于时间代理任务,我们以时间序列向后移动的概率作为异常得分。 对于运动不规则任务,我们考虑无间隙测试序列X间歇的概率作为一个很好的异常指标。 我们将重建结果与地面真值中间物体之间的平均绝对误差解释为中间包围盒预测头提供的异常得分。 对于知识蒸馏任务,我们考虑了YOLOV3预测的类概率与我们的模型预测的类概率之间的绝对差异。 我们计算一个对象的最终异常得分,作为每个预测头给出的异常得分的平均值:


接下来,我们在每帧的像素级异常图中重新组装检测到的对象。 因此,我们可以很容易地定位任意给定帧中的异常区域。 为了创建一个平滑的像素级异常图,我们应用了一个三维均值滤波器。 对于某一帧的异常得分由对应的异常图中的最大得分给出。 最后的帧级异常分数是通过应用时间高斯滤波器获得的。

对象级与帧级检测

尽管在对象级别执行异常检测可以准确定位异常,但缺点是Yolov3的检测失败(由于对象类别有限或性能差)会转化为假阴性。 为了解决这个限制,我们可以在框架级别应用我们的框架,将Yolov3从流水线中删除,并将其他组件保留在适当的位置。 通过在后期融合框架级别和对象级别的异常得分,我们可以恢复我们的以对象为中心的框架的一些假阴性。 在我们的实验中,我们报告了我们的基于后期融合的框架的结果,以及分别在对象层和帧层的结果。

实验

数据集

我们在三个基准数据集上进行实验:Avenue[29]、Shanghaitech[31]和UCSD PED2[32]。 每个数据集都有预定义的训练和测试集,异常事件只在测试时被包括在内。

Avenue。 Avenue[29]数据集包含16个正常活动的训练视频和21个测试视频。 大道异常事件的例子与人们跑步、抛物或走错方向有关。 每个视频的分辨率为360×640像素。

上海科技。 Shanghaitech[31]是视频中用于异常检测的最大数据集之一。 它由330个训练视频和107个测试视频组成。 训练视频只包含正常事件,而测试视频包含正常和异常序列。 反常事件的例子有:抢劫、跳跃、打架和在行人区骑自行车。 每个视频的分辨率为480×856像素。 UCSD PED2。 UCSD PED2[32]包含16个正常活动的训练视频和12个测试视频。 反常事件的例子是骑自行车的人,滑冰的人和在行人区的汽车。 每个视频的分辨率为240×360像素。

设置和实现细节

评价措施。 作为我们的主要评价指标,我们考虑相对于地面真值帧级注释计算的曲线下面积(AUC)。 帧级AUC度量是相关著作中最常用的度量[7,13,14,16,17,27,39,41,53,55,62]。 许多相关工作也报道了UCSD PED2数据集的像素级AUC。 正如Ramachandra等人所解释的。 [37]中,像素级AUC是一个有缺陷的评估度量。 因此,我们报告了UCSD PED2在基于区域的检测准则(RBDC)和基于跟踪的检测准则(TBDC)方面的性能。 这些度量是Ramachandra等人最近提出的。 [37]以取代常用的像素级和帧级AUC度量。

参数调优。 我们框架的第一步是基于Yolov3[42]的对象检测。 对于Avenue和Shanghaitech,我们保持检测的置信度高于0.8。 由于UCSD PED2具有较低的分辨率,我们将检测置信度设置为0.5。 我们在训练和推理过程中使用相同的置信度阈值。

我们使用每个训练视频中的前85%的帧来训练我们的模型在代理任务上,保留最后15%的帧来验证每个代理任务上的模型。 在过渡到异常检测之前,我们对验证集上的参数t和λ进行微调。 对于T,我们考虑了集合{1,2,3,4}中的值。 由于我们得到了t=3的最优结果,所以我们在所有的异常检测实验中都使用这个值。 因此,一个以对象为中心的时间序列是一个由7×64×64×3分量组成的张量。 我们考虑集合{0.1,0.2,0.5,1.0}中的值,对方程(5)中控制LT4重要性的参数λ进行微调。 在UCSD PED2和Avenue和Shanghaitech上分别获得了λ=0.5和λ=0.2的最优结果。 因此,我们用这些最佳设置报告异常检测结果。

使用ADAM优化器[22]对每个神经网络进行30个周期的训练,学习速率为10-3,保持ADAM其他参数的默认值。 由于计算资源的限制,我们使用256个样本对浅层+窄层结构进行训练,128个样本对深层+窄层和浅层+宽层结构进行训练,64个样本对深层+宽层结构进行训练。 对于每个模型,我们选择代理任务上验证错误最低的检查点来执行异常检测。

异常检测结果

在表2中,我们给出了我们的对象级、帧级和后期融合框架与最新方法的比较结果,报告了以下三个基准数据集上的帧级AUC得分(只要有):Avenue、Shanghaitech和UCSD PED2。

在Avenue上的结果。 在Avenue上只有两种方法[17,24]超过了90%的阈值。 我们的框架应用于对象级,获得了91.9%的帧级AUC,比现有的方法[17]高出1.5%。 当我们在框架级别上应用我们的框架时,我们的性能会大大下降,但该方法仍然能够优于最近的一些工作[8,9,20,30,37,51]。 当我们将对象级异常得分与FrameLevel异常得分融合时,我们的性能得到了改善,达到了92.8%的新的最先进的帧级AUC。 在图2中,我们展示了一组异常定位示例以及测试视频04的帧级异常得分。 我们观察到我们的方法与地面真值框架级注释有很好的相关性。

在上海科技的结果。 在上海科技上,我们的后期融合方法超越了以往所有的工作,达到了90.2%的新的最先进的性能,超过了以前最先进的方法[17]5.3%的幅度。 值得注意的是,我们是第一个在上海科技上达到帧级AUC得分超过90%的公司。 除了[17]之外,我们的方法至少以10.9%的优势超过了所有其他最先进的方法。 在图3中,我们给出了一些异常定位示例以及测试视频03 003 5的帧级异常得分。 我们的方法与地面真值注释有很好的相关性。

在UCSD PED2上的结果。 UCSD PED2是目前最流行的视频异常检测基准之一,有23部作品报告帧级AUC得分超过90%。 目前最先进的方法[53]报告FrameLevel AUC为99.2%。 尽管如此,我们的方法仍然设法超越了所有以前的工作,达到了一个新的国家最先进的帧级AUC 99.8%在UCSD PED2。

由于RBDC和TBDC是最近的评估协议的一部分,我们只能在表3中比较两种方法[37,38]。 我们在所有指标方面都比第一种方法[37]有显著的优势。 在TBDC方面,我们也比第二种方法高1.9%,在帧级AUC方面,我们比第二种方法高5.8%,我们的RBDC得分略低。 这些结果表明,我们的方法能够准确地定位异常。

消融研究

我们在Avenue和UCSD PED2上进行了一项消融研究,以评估在我们的联合多任务框架中包括每个代理任务的好处。 相应的结果载于表4。 除了异常检测性能之外,我们还报告验证集中每个代理任务的性能级别。 考虑到单个任务,我们观察到时间箭头在Avenue上产生了最高的帧级AUC(83.6%),这可能是因为异常是由不寻常的动作引起的,例如人们跑步。 UCSD PED2最适合的任务似乎是中间边界盒预测和知识提炼,这可能是因为异常是由外观异常的物体引起的,例如自行车或汽车。 随着我们在联合优化框架中逐渐添加更多的代理任务,我们观察到越来越好的异常检测结果。

在增加代理任务数量的同时,我们还旨在评估增加我们神经结构的宽度和深度的效果。 当我们在3D CNN中添加更多的层和过滤器时,我们观察到性能的改善,尤其是当我们在三到四个任务上联合优化时。 因此,我们得出结论,随着代理任务的增加,提高三维CNN的学习能力是有益的。

结论

本文提出了一种新的基于自监督和多任务学习的异常检测方法,并在Avenue,Shanghaitech和UCSD PED2三个基准上给出了综合结果。 据我们所知,我们的方法是第一个也是唯一一个在所有三个基准上超过90%阈值的方法。 此外,我们进行了一项消融研究,展示了联合学习多个代理任务对视频异常检测的好处。 在未来的工作中,我们将考虑探索额外的代理任务,以进一步提高我们的多任务框架的性能。

答谢

根据项目合同,导致这些结果的研究得到了欧洲经济区2014-2021年赠款的资助。 EEA-RO-NO-2018-0496。 这篇文章还得到了罗马尼亚青年学院的支持,该学院由墨卡托基金会和亚历山大·冯·洪堡基金会在2020-2022年期间资助。

附录

在补充中,我们包括了由我们的以对象为中心的框架预测的帧级分数的额外示例。 除了帧级分数,我们还展示了特定帧中的异常定位示例。 除了显示正确的检测,我们还包括一组假阳性和假阴性的例子。 此外,补充提供了关于运行时间的细节,并讨论了对对象检测器的依赖和所选择的代理任务。

定性结果

补充结果的结构如下。 图4展示了从我们在基准数据集上的运行中提取的一组真阳性、假阳性和假阴性示例。 图5和图6展示了我们的帧级异常预测和Avenue的两个视频的GroundTruth标签之间的重叠。 类似地,图7和图8说明了我们的帧级异常预测和两个Shanghaitech视频的地面真相标签之间的重叠。 最后,图9、10和11展示了三个UCSD PED2视频的帧级性能。

Avenue。 我们的框架在Avenue数据集上达到了92.8%的最先进的FrameLevel AUC性能,能够检测异常,例如:(i)两个大多重叠的穿着白色衣服的人在场景的一侧准备跳舞,(ii)穿着红色衣服的孩子在离摄像机很近的地方移动,以及(iii)在主巷子上奔跑的男人,所有这些都如图4(顶行)所示。 除了这些真实的阳性检测(检测正确的状况),我们给出了一个假阳性(误标的状况)的例子,两个人的行为奇怪。 在这个特定的例子中,在主巷子前面采取立场的安全代理被错误地标记为异常,可能是因为在训练期间没有观察到这种行为。 最后,由于Object Detector的检测失败,我们的框架无法将抛在空中的背包标记为异常(本该标记但未标记),从而产生如图4(顶行)所示的假阴性(本该标记但未标记)。 这一缺陷通过认识到人类将背包抛向空中的手势确实是异常的来弥补。 图5说明了我们的框架如何能够捕捉投掷的手势,并将个体标记为异常。 在Avenue数据集的第五个测试视频上,我们的框架达到了几乎完美的帧级AUC性能99.88%。 此外,图6展示了我们的框架如何能够检测其他与对象相关的异常。 在这个例子中,当自行车出现在场景中时,我们的异常得分开始增加。 我们的方法报告它作为一个明显的异常事件,因为它变得完全可见,并向相机移动。

上海科技。 在上海科技上,我们的框架能够正确识别大多数与车辆相关的异常。 如图4(第二行)所示,像汽车和自行车这样的对象经常被标记为异常。 然而,在图4(第二行)中显示为假阴性的特定场景中,两个人同时使用的自行车设法作为正常事件通过。 除了交通工具之外,我们的框架还在遇到奇怪的(意思是以前没有见过的)对象时将其标记为异常。 因此,在假阳性示例中,伞被检测并标记为异常。 图7和图8分别展示了我们的异常得分预测以及Shanghaitech的测试视频06 014 4和12 014 9的帧级地面真相标签。 在第一个实例中,我们的方法正确地将汽车识别为异常,达到98.97%的帧级AUC,而在第二个实例中,我们的框架准确地将群体后面运行的个体识别为异常,达到98.51%的帧级AUC。

UCSD PED2。 在UCSD PED2上,我们的方法达到了99.8%的帧级AUC,准确且几乎完美地捕捉到了所有异常事件,如人群中有人骑自行车或车辆出现在行人区。 对象只在很少的特定帧中被遗漏,例如当自行车没有完全进入场景时(被截断),如图4(底部行)中UCSD PED2的假阴性示例所示。 此外,作为假阳性的个体通过面向摄像头的出口离开小巷也被错误地标记为异常。 图9和图10展示了我们的方法在UCSD PED2数据集上的总体性能,达到了完美的帧级AUC得分。

运行时

我们的轻量级模型在6毫秒(ms)内推断单个物体的异常得分。 Yolov3模型每帧需要26毫秒来检测对象。 从对象级异常得分重新组合异常图只需不到1毫秒。 在所有组件都到位的情况下,我们的框架以23 fps的速度运行,平均每帧有5个对象。 报告的时间只包括对象级别的推断,这是最重的部分(由于对象检测器)。 当我们添加帧级推断时,速度略有下降,从23 fps下降到21 fps。 FPS速率是在一个带有11GB VRAM的GeForce GTX 1080TI GPU上测量的。

讨论

对对象检测器的依赖。 我们注意到以对象为中心的方法受到对象检测器质量的影响。 例如,在Avenue上,我们观察到我们的以对象为中心的方法不检测纸张(纸张不在类的COCO集合中)或扔在空中的背包(背包在类的COCO集合中,但由于运动模糊,检测器失败)。 尽管没有明确地检测到文件或背包,但探测器检测到投掷这些物体的人,我们的框架将相应的人标记为异常。 同样的情况也可能发生在火灾或爆炸的情况下,如果附近有一个人逃离火灾或被爆炸扔在地上。 纯以对象为中心的框架预计会由于检测失败而增加假阴性的数量,但与此同时,它会显著减少假阳性的数量(因为框架关注对象)。 我们的结果表明,与框架级流水线相比,以对象为中心的流水线获得了明显更好的结果。 因此,对象检测器的好处大于其局限性。 此外,我们的最终框架结合了以对象为中心的流和框架级流,减轻了纯以对象为中心的方法的局限性,并提高了整体性能。 的确,帧级管道可以检测所有异常类型。 与其他基于重建的方法一样,帧级框架可以通过考虑中间帧预测头输出中重建误差的大小来定位异常。

生成以对象为中心的时序序列。 我们在帧I中取对象X的包围盒,并在前一帧或后一帧中应用相同的包围盒,形成以对象为中心的时间序列。 如果在另一个帧中检测到对象X,比如i+1,我们将使用相应的包围盒生成另一个以对象为中心的时间序列。 尽管我们最终可能会对同一个对象产生多个略有不同的序列,但这比应用对象跟踪器(增加时间并引入错误)要好。

关于所选代理任务的说明。 我们强调,异常既可以由异常运动引起,也可以由异常外观引起。 由于前两个代理任务(时间箭头、运动不规则)侧重于运动异常,而后两个任务(中间框预测、知识提取)侧重于外观异常,因此我们的多任务框架可以检测两种异常类型。 虽然我们的框架很简单,但它是基于仔细的设计思想和大量的工作,在一个单一的体系结构中制定代理任务,以利于异常检测。 我们相信,它的简单性加上它在异常检测中的有效性是有趣和引人注目的。 然而,在未来的工作中,可以考虑额外的或替代的代理任务,同时寻求进一步改善结果。