1.Introduction
视频异常检测主要应用于公共安全尤其是视频监控领域
下图展示了四个是该领域常用的数据集,均为视频监控场景,但实际上每个场景关注的异常事件是不一样的,比如说第一个CUHK Avenue数据集上,在站台上跑这种事件被定义为是一个异常事件,再像UCSD Ped1,面包车侵入人行道被视为是一个异常事件。
但总的来说,视频异常检测面临两个挑战,一个是视频的异常事件相比与正常事件来说是数量很少的,所以很难去提前收集大量的视频异常数据来进行有监督的训练,第二个是因为视频异常事件的发生是不可预测的,所以他在类别上是unbounded,也就是说我们不可能预知他可能会发生哪些种类的异常,所以鉴于这两个原因呢一般来说这个问题会被定义为一个one class learning的方法就是当一类别学习,就是说在训练阶段只会提供正常数据用于训练,但是在测试的时候我们既有正常事件又有异常事件用于测试来测试模型对异常的检出率
这里展示了VAD领域常用的四类方法,一个是基于重构和预测的方法,这种常用一个autoencoder或者Unet模型去逐像素的去重建输入帧或者输入的一个clip,然后呢它在测试阶段的时候,异常会有一个比较大的重建误差,这种被判定为异常事件,对于正常事件,因为在训练的时候见过这样的一个事件那么在测试的时候这种重建或者预测误差往往会小于异常。
除此之外呢因为本身网络他会有一定的泛化能力,在测试的时候对异常事件可能也会有很好的预测或者重建的能力,所以后续的方法针对限制网络的过泛化性提出一些改进比如memory机制或者针对视频异常检测提出一些特定化的网络,或者加入一些多模态比如说光流或者RGB 差分来辅助提高重构和预测方法的效果。
第二类方法是这个hybrid方法,就是说他会同时把重构和预测的方法结合到一起,这种方法的效果往往会好于前两种方法。
第三类方法也是近两年比较流行的自监督的方法,这种方法就是他会基于原始的数据去构建一个相应的pretext task 或者是来实施对比学习来得到正常样本的特征
其他方法主要是比较经典的一类分类方法比如DeepOC这种
本文的方法呢属于第三类,主要思路就是去设计一个更好的适用于视频异常检测的pretext task
本文的motivation主要在于两点,一点是现有的基于重构和预测的方法实际上在测试的时候往往也能很好的重建和预测异常的样本,所以在测试的时候很难区分真正的正常和异常
现有的方法,有些方法已经开始尝试使用自监督的方法来避免这种逐像素的生成,实际上他们存在两个问题
第一个问题是实际上他们不管是对比学习的方法还是现有的提出的pretext task的方法他们本质上都是属于二分类问题,比如已有的区分一个clip是正向还是反向或者区分一个clip是否为规则的时序,但是在视频异常检测里面可能更需要的是让这个模型去感受到比较 空间和时序上细微的差异 所以仅仅是二元分类问题不能去学习到非常好的高效的判别特征。
第二个问题是现有的方法往往依赖于一个预训练的网络,像对比学习需要预训练的模型提取特征,所以他们常依赖于一个预训练的模型,所以当异常数据集和预训练的数据集有比较大的gap的话,那么可能会限制于后续异常检测的效果
所以作者思考问题是是否可以针对视频异常检测来提出一个更合适的task,针对视频异常检测找到了两个方向点,一个是task 可能会中等难度的task,所以作者采用的是一个时空jigsaw puzzles任务,这里的jigsaw puzzles 和普通的jigsaw puzzles方法不一样的地方是作者使用了所有的排列组合方式,采用所有的排列组合方式提供覆盖不同难度级别的丰富拼图,使网络能够区分正常和异常事件之间的细微时空差异。
第二个是考虑到视频异常检测可能有两种因素导致的一个是动作时序上导致的异常,一个是外观的异常所以针对两者分别建模,所以这里作者提出一个把时空解耦构建jigsaw puzzles,即分别处理构建时序和空间jagsaw puzzle进行处理。
首先说一下jigsaw puzzle的构建,a表示一个时序的问题构建,原始正常顺序为t1,t2,t3,t4,通过在全排列中选择一个排列进行排序,选择了t2,t4,t3,t1即可构造一个jigsaw puzzle。
现有的常用的通过拼图问题学习一般视觉表征的自监督方法如b所示,这些方法将拼图问题的解决视为一个多类分类问题,其中每个排列对应一个类,如中间的第二个图所示,那么它实际上每一个排列就是一个类别,2,4,3,1实际上对应的就是第21类。这个问题的复杂度是和输入的长度成阶乘关系,因为类别数等于输入长度的阶乘,比如9的阶乘就到了大概36w分类种数,所以如果要使用所有的排列这种多分类方式不太适合做计算
所以作者提出multi-label的形式就是每一个输入clip对应多个标签,每个标签对应打乱之前的绝对位置,这样就将n!的复杂度变为了n^2的复杂度
2.Method
方法主要分为三个部分,第一个部分是以目标对象为中心的立方块的提取,也就是使用一个现成的目标检测器,然后针对当前帧的所有目标进行一个检测,然后通过检测产生的位置框进行裁剪并且堆叠连续的相邻几帧再进行一个resize得到一个以目标对象为中心的时空立方体,
基于这个时空立方体进入第二阶段就是要分别构建时序和空间的jigsaw puzzle,对于空间上的拼图构建,首先将其分解成n × n个大小相等的块,然后随机排列。图中n设定为2,则分成4个大小相等的patch,正常的顺序是从左到右从上到下0 1 2 3,然后随机排列为 0 2 3 1 ,在空间上进行shuffle的时候不会改变时序上的一个相对位置,同理也会在时序上进行一个shuffle但是也不会改变它每一个帧上的位置,需要注意的是不会在时间上打乱只包含静态内容的帧序列,因为仅仅通过观察视觉线索是不可能推断其时间顺序的。这样就分别构建了一个空间拼图一个时序拼图
然后他们会共享一个encoder,然后分别通过两个分类器, 试图从其空间或时间上的排列版本中确定其在原始序列的绝对位置。输出为一个矩阵,相当于一个多标记的监督问题,每一个label相当于对应原始没有shuffle的绝对位置,每一列矩阵的值代表属于某个label的概率置信度,以这一列为例,相对位置为0的概率为0.5,1为0.2,2为0.3,3为0。
网络的训练目标是针对输入的正常事件可以正确确定他的空间或时序位置,对于时序排列中的每一帧,预测其原始序列中的正确位置,而对于空间排列帧中的每一个patch,预测原始排列网格中的正确位置。通过这个任务网络会学习到空间上位置关系和帧时序之间的关系,
比较直观的可以想到解决这个难题需要网络通过学习强大的时空表示来理解视频帧非常详细的空间和时间相干性,而这对VAD至关重要
作者采用混合训练策略,在一个训练批次中同时包含两个互不相交的集合,包括空间拼图集Qs 和时序拼图集Qt,算法1提供了batch构建的更多细节。算法的输入是第一阶段获取的时空块集合C,比率r,帧长度l即输入的clip的帧数,以及帧分为的空间patch数n^2,和阈值ζ,
首先Qs和Qt均为空集,然后分别根据clip帧长度l和空间patch数n^2分别产生所有的可能的时序排列pt和空间排列ps,接下来对产生的每一个时空块c处理,在0-1之间均匀采样产生p,如果p小于等于比率r那么对该时空块进行空间乱序,否则进行时序乱序,那么针对空间乱序,当小于ζ,排列方式i选择第一个也就是不进行乱序,否则在所有可能性中随机选择一个,然后将时空块进行乱序后加入空间拼图集Qs,在时空乱序中就是在所有可能性中随机选择一个,然后将时空块乱序后加入时序拼图集。
训练的损失使用的是比较常见的交叉熵损失。
其中,ti和tˆi分别为原始序列中某一帧的ground-truth和预测位置,sj和ˆsi分别为原始分割网格中一个patch的ground-truth和预测位置。
然后在测试时,因为在训练阶段仅仅使用了正常的事件,所以对于异常的事件,分类器对异常事件位置预测有较低的置信度,在测试的时候作者使用没有shuffle的一个clip作为输入。因为没有进行乱序,理论上网络的输出的矩阵对角线的值应该是比较大的,call back 也就是这个矩阵的对角线的值应该都是该列最大的,而且,正常事件矩阵的对角线值比异常事件矩阵的对角线值要大,因为网络只在正常事件上进行了训练。
因此,作者简单地将预测矩阵对角线的最小预测分数作为其规律性,Ms和Mt是由空间和时间拼图求解器预测的矩阵,diag(·)提取矩阵对角线,通过取最小值得到rs和rt,分别表示对象级规律性得分,即选择沿矩阵对角线的最小分数作为对象级规律性分数,因为只要一个帧或patch被错误预测,一个示例就可能是异常的。
类似地,通过简单地选择帧中最小的对象级规则分数来获得帧级规则分数Rs (Rt)。然后通过该式将每个视频中所有帧的不规则度评分归一化。
最终帧级规律性得分是外观和运动两个分支的加权平均值。
3.Experiments
接下来是实验部分,数据集使用ped2、avenue和STC这三个流行的数据集,评价指标使用了VAD领域广泛采用的帧级的AUC
表1显示了不同类型的以往SOTA方法的比较结果,可以观察到作者的方法在所有三个基准数据集中都提供了好的性能。
尤其是具有挑战性的STC中,作者的方法明显优于基于重建的方法、基于预测的方法和混合方法。作者的方法达到了84.3%,而之前生成方法的最佳精度是77.7%的CT-D2GAN。
这可以看出自监督学习的优越性,它通过解决代理任务来捕获正常事件的鉴别表示,绕过了逐像素生成的要求。此外,与利用自监督学习的VAD方法[13,55]相比,作者的方法仍然取得了最好的性能,将第二好的方法[13]提高了1.9%。
作者认为这是由于具有挑战性的代理任务的设计具有优越性,通过解决精细的完全排列的时空拼图有助于学习鉴别表征。在Avenue和UCSD Ped2,作者的方法也取得了SOTA和接近SOTA的性能,表明作者的方法对不同规模的数据集是稳健的。
问题的设计难度影响着模型学习特征的水平,所以作者通过消融实验探索了模型中影响问题难度的四个关键因素。包括用于训练的排列数量,时序上输入的帧数/空间上划分的patch数,时序和空间puzzle类型的影响以及其他的一些自监督的代理任务。
第一个是用于训练的排列数量的影响。从表中可以看出,作者测试了两类方法,一类是传统的多类别的方式即将每一种排列当作一类,另一个就是作者采用的多标记的方法,然后针对训练使用的不同数量的排列进行了实验,T这一列是时序排列的数量,S这一列是空间排列的数量。可以看出A3比A1在空间排列上更多,效果要更好,进一步A4比A3的时序排列要更多,效果也更好,同理多标记方法也是如此。可以看出两类方法的效果都随着训练排列数据量增大提升,这是因为网络需要大量数据捕捉更具辨别性的表征来感知拼图问题之间的细微差别。
此外,对于相同数量的排列,作者的方法始终优于多分类的方法的。比如A5和A2拥有相同数列的排列作者的方法效果要更好。一个可能的原因是,多分类试图通过不同的排列来区分拼图游戏,而作者的目标是以更详细的方式预测每个帧/补丁在排列中的正确位置。
此外,对于具有更多拼图块的高级拼图,多分类模型由于内存限制而失效。相比之下,由于多标签分类范式,作者的方法可以以一种内存友好的方式处理具有完整排列的拼图问题,达到最佳效果(A9),而多类别的方法由于内存限制无法使用如此多类别的排列。
可以得出结论这两种方法都得益于空间和时间拼图问题的大量排列; 作者的多标签方式总是以内存友好的方式实现更好的性能
接下来研究了时间维度上的帧数(l)和补丁数(n2)的影响。
作者没有尝试较大的l (l > 9),因为此时帧中的对象往往会超出时空立方体的边界,也就是说过长的话在后面的帧中这个对象会因走出镜头而消失。
由表可以看出,当l和n2在一定范围内增加时,性能有提升的趋势。在avenue数据集上可以看出,当l增加到7,n增加到9的时候性能逐渐上升,因为解决更复杂的agsaw puzzle 需要更高层次的细微时空特征差距来解决而这有利于异常检测。然而,当进一步增加l和n2时,性能下降。究其原因,网络优化难度较大,尤其是空间优化难度较大,因为每个补丁都非常小(在n2 = 16的设定中为16 × 16像素),因此会产生歧义。
所以得出的结论是这种方法从难度较大的谜题中获益更多。但是拼图问题既不能太难,也不能太容易。
最后,作者研究了空间拼图和时间拼图对VAD的解决效果,基于在训练或者测试时,哪一个拼图问题被激活作者设计了四种可供选择的配置,T表示时序拼图,S表示空间拼图
例如,C3表示在训练中同时解决时序和空间拼图,而C1表示只解决时序拼图。在测试C1和C3时只激活时序求解器。C1和C3之间的唯一区别是训练目标,即多任务vs.单任务。作者的方法明显受益于多任务学习,并取得了更好的性能82.7%比78.6%的STC。
当在训练或测试中只激活一种类型的谜题时,结果总是比完整版本(即C5)更糟糕。观察结果直观地表明,异常事件是由异常现象和/或运动引起的。
因此结论是,针对VAD的最好综合考虑空间和时间难题。将这两种类型的拼图包含进来,对检测这两种类型的异常是有益的。
作者还测试了常用的代理任务像空间维度的有(旋转预测和翻译预测)和时间维度有(如时间预测箭头和时间顺序验证) 。作者的方法取得了最好的性能。
实验结果表明,合理设计能够实现细粒度识别的代理任务是VAD的关键。相比于其他的任务,作者设定了一个更具挑战性的任务,需要模型感知帧内的每一个patch和片段内的每一帧。
Conclusion
最后做一下总结,作者这个方法通过只解决一个代理任务,极大地简化了自监督学习框架,这是跟之前用于异常检测的自监督方法进行的对比,
第二个作者考虑到视频异常检测可能是外观或运动的异常所以采用了一个decouple 的jigsaw puzzles,
第三个也就是比较关键的一点,作者不是使用一些启发式的方法去从所以的排列中筛选部分的排列去训练而是使用了所有可能的排列来进行训练,利用所有可能的排列产生高大规模学习样本,使网络能够从代理任务中捕获微妙的时空异常。
第四个是作者没有使用任何的预训练网络,也没有使用一些多模态比如光流,第五是作者在三个经典数据集上得到SOTA或接近SOTA的结果。
综上作者通过更精细探索时空差异的任务设定以及通过使用全排列的大数据量最终实现了非常好的效果。