基于自监督和时空代理任务学习的视频异常检测

Pattern Recognition

https://www.sciencedirect.com/science/article/pii/S0031320324007726

GitHub - yqytomorrow/spatio-temporal-tasks: spatio-temporal tasks

A B S T R A C T

视频异常检测(VAD)旨在识别视频中偏离典型模式的事件。鉴于异常样本的稀缺性,以往研究主要聚焦于从仅包含正常行为的数据集中学习规则模式,并将偏离这些模式的情况视为异常。然而,这些方法大多受限于粗粒度的建模方式,无法学习到高判别性特征 —— 而这些特征对于有效区分正常与异常行为之间的细微差异至关重要。为了更好地捕捉这些特征,我们提出了一种创新方法。首先,通过几何变换(二维旋转)和视频序列打乱生成外观和运动的伪异常样本。随后,提出一种时空解耦的双分支网络,其中空间分支和时间分支分别处理特定的代理任务。这些任务旨在区分正常样本与伪异常样本,包括预测基于图像块的二维旋转角度,以及将视频帧三元组分类为全异常、左异常、右异常和非异常等操作。我们的方法采用端到端训练方式,不依赖预训练模型(目标检测器除外)。在 UCSD Ped2、Avenue 和 ShanghaiTech 数据集上的评估表明,我们的方法分别取得了 99.1%、91.9% 和 81.1% 的 AUC 分数,证明了其有效性。代码可通过以下链接公开获取:https://spatio-temporal-tasks.

1. Introduction

公共区域监控摄像头的广泛使用,使得视频异常检测(VAD)日益受到工业界和学术界的关注。VAD 旨在自主检测异常事件(如滑冰、斗殴、行人区域出现车辆等),从而显著减少人工监控的需求。目前已发展出多种 VAD 技术,包括监督学习方法 [1]、弱监督学习方法 [2] 和无监督学习方法 [3-5]。异常事件的稀缺性给大规模数据集的构建带来了挑战 —— 收集此类数据即便可行,也极为困难 [6]。相比之下,获取大量正常数据则相对容易。因此,仅依赖正常数据的无监督学习已成为更具实用性的方法,并主导了当前的研究方向。

在无监督学习领域,主要采用两种方法:基于重建的方法和基于预测的方法。在基于重建的方法中[7-9],网络通过训练来识别正常事件的特征,从而最小化重建误差。这些模型专注于正常数据模式,对异常事件表现出较高的重建误差,从而有效区分正常和异常事件。基于预测的方法[4,10,11]假设正常视频序列遵循特定模式,并利用这些模式预测缺失帧(如未来帧或中间帧)。异常行为会破坏这些模式,进而使缺失帧的预测变得复杂。这种不可预测性导致缺失帧的重建误差增加,突显了其与正常模式的偏离。 尽管基于重建和基于预测的方法均取得了显著成果,但它们依赖自动编码器进行数据重建,通过计算重建数据与原始数据之间的误差来识别异常。然而,自动编码器通常具有较强的泛化能力,这在视频异常检测中可能导致模型过度适应数据(包括异常数据)[12]。这是由于重建和预测方法受到粗粒度建模方法的限制,导致自动编码器仅能捕捉低级细节,而无法理解高级语义内容。为了限制这种泛化能力,Gong等人[13]尝试在自动编码器架构中引入内存模块。Liu等人[14]提出了一种基于因果启发的表示一致性(CRC)框架的方法,该框架利用内存池记录正常事件的原型模式,并通过挖掘视频中的潜在因果关系来检测异常。尽管该策略最初取得了成功,但仍存在一些问题,例如对噪声敏感(导致在含噪数据中性能下降),以及由于频繁的内存访问和更新而增加存储和计算需求。

近年来,在视频异常检测(VAD)领域,自监督学习的应用引入了一种新范式。与基于重建和基于预测的方法不同,自监督学习的特点是利用未标记数据中的监督信号来获取时空表示。Wang等人[15]提出了实例判别任务,将正常子类别视为聚类,并将远离聚类中心的实例识别为异常。Georgescu等人[16]设计了一个集成多任务联合训练的模型,涵盖时间箭头、运动模式判别、中间帧重建和知识蒸馏。然而,这些研究大多将代理任务归类为二分类任务。这种过度简化可能导致网络无法考虑区分正常行为与异常行为所需的关键时空特征。此外,大多数研究[3,16]倾向于依赖预训练网络模型。

为了更好地挖掘与正常行为相关的细粒度特征,我们开发了一种双分支网络模型,其特点是在时空维度上进行解耦,每个分支(时间分支和空间分支)针对不同的代理任务进行优化。时空解耦使模型能够更专注于从视频数据中提取空间和时间特征。这种分离处理有助于更准确地捕捉异常行为与正常行为之间的细微差异,因为某些异常可能主要通过空间变化表现(例如汽车停在人行道上),而另一些则主要通过时间变化显现(例如打架或奔跑)。 空间分支的任务是预测图像块的二维旋转,以提取高判别性的外观特征。具体来说,输入图像首先被分割成均匀的图像块,每个图像块独立处理以实现对图像细节的更深入理解。这种细粒度的图像分析对于视频异常检测至关重要,因为异常行为通常表现为局部外观的细微变化。随后,对每个图像块应用不同的旋转角度,并训练模型预测这些变化。经过旋转处理的图像块可视为与原始图像块对应的基于外观的伪异常样本。尽管这些样本与测试集中的实际异常数据不同,但它们仍有助于模型训练,使正常样本能够被紧凑地表示。

同样,时间维度上的异常行为通常具有突发性和短暂性。基于这一观察,我们提出在视频帧三元组层面建立代理任务,以帮助模型学习细粒度的运动特征。具体流程如下:首先,将有序的视频序列打乱为无序状态;随后,从序列中选取每组连续的三帧作为处理单元;接着训练模型将这些单元分类为四个类别:全异常、左异常、右异常和非异常。这种方法有助于模型捕捉并学习更紧凑、细粒度的运动特征表示。 在推理阶段,不对视频片段进行任何处理:所有图像块视为未旋转状态,视频帧三元组视为非异常状态。当检测到异常时,模型对未旋转图像块或非异常三元组的识别置信度会降低。为评估异常,各分支选择置信度最低的图像块或视频帧三元组作为异常分数的依据。这一方法基于以下假设:即使单个三元组或图像块的预测不准确,也足以表明可能存在异常行为。

我们的主要贡献可总结如下:

• 我们提出了一种时空解耦的双分支网络,其中每个分支执行特定的代理任务。空间任务在图像块级别进行,而时间任务在三元组级别运行,旨在捕捉细粒度特征。

• 我们引入了一种新的代理任务:视频帧三元组四类分类。该任务通过将正常样本和伪异常样本分为四个类别,促使模型学习与正常行为相关的细粒度运动特征的紧凑表示。

• 我们的框架不依赖预训练网络或内存模块,在三个公共基准数据集上分别取得了99.1%、91.9%和81.1%的显著AUC分数。这一性能表明,其在异常检测方面优于现有方法。

本文的其余部分结构如下:第2节回顾了视频异常检测(VAD)和自监督学习的相关工作。第3节详细阐述了所提出的模型架构,重点介绍时空代理任务。第4节展示了全面的实验和分析。第5节对研究进行总结,并提出未来的研究方向。

2. Related work

2.1. Video anomaly detection with reconstruction or prediction

鉴于现实世界数据中固有的复杂性以及充足标注数据的局限性,异常事件检测通常采用无监督的方式进行,在训练过程中仅专注于正常事件。

目前,基于重建和预测的方法在视频异常检测(VAD)领域得到广泛应用。重建方法主要利用自动编码器(AE),如卷积自动编码器(Conv-AE)[3]和卷积长短期记忆自动编码器(ConvLSTMAE)[17],以及生成对抗网络(GAN)[11]和扩散模型(diffusion models)[18]等生成模型,旨在重建训练数据。这些仅在正常数据上训练的自动编码器,在准确重建异常数据时往往面临困难。例如,Hasan等人[3]提出了一种将二维卷积与自动编码器相结合的方法,利用卷积自动编码器(CAE)保留空间像素关系和时空信息。类似地,Ribeiro等人[19]证明了将卷积自动编码器(CAE)与长短期记忆网络(LSTM)集成在捕捉高级时空特征和通过重建误差检测异常方面的有效性。Zaheer等人[11]提出了一种新的无监督VAD方法,称为生成协作学习(GCL),该方法通过生成器和判别器之间的交叉监督显著提升了检测能力。Tur等人[18]首次将扩散模型应用于VAD,展示了其在监控环境中的有效性。

相比之下,由Liu等人[10]开创的预测领域聚焦于正常事件的可预测性与异常事件的不可预测性,采用U-Net等预测模型并基于预测误差评估异常。然而,鉴于时间建模的局限性,Song等人[20]探索了利用LSTM网络更好地捕捉视频序列中的时间动态。这些方法尽管依赖光流进行运动表示,但在光照条件变化时面临挑战。为解决这些限制,Tang等人[21]提出了一种结合重建与预测的混合模型,旨在减少异常检测中的过度泛化。 为约束自动编码器的泛化能力,Gong等人[13]提出了用于异常检测的记忆增强自动编码器(MemAE)。MemAE利用编码器的信息作为查询来检索相似的记忆槽,然后将这些检索到的记忆槽组合以生成解码器的新编码特征。沿着这一趋势,Park等人[4]在测试阶段引入了可更新的紧凑记忆模型。Liu等人[22]提出了外观-运动原型网络(AMPNet),该网络使用外部记忆记录原型特征,并通过时空融合有效检测监控视频中的异常。然而,记忆模块的使用并非最优,因为频繁读取和更新记忆模块会增加存储和计算资源的负载

2.2. Video anomaly detection with self-supervised learning

自监督学习。自监督学习(SSL)利用数据的固有特征作为监督信号来训练神经网络,以从图像和视频等多种模态中提取语义特征。SSL 方法大致可分为基于启发式的方法和对比学习方法。前者设计具有语义意义的前置任务来引导网络学习语义特征;相比之下,对比学习从增强数据中生成正负样本对,训练网络对齐正样本对的特征,同时将其与负样本对区分开,从而捕捉不变特征。在代理任务方面,Doersch 等人 [23] 提出了一种预测从图像中随机提取的两个图像块相对位置的方法,旨在学习图像的结构和内容。此外,Pathak 等人 [24] 提出了一种上下文编码方法,通过重建图像的遮挡部分来学习图像的完整性和连贯性。最后,Gidaris 等人 [25] 提出了旋转预测方法,对图像进行随机旋转并让网络预测旋转角度,以理解图像中的方向和物体信息。在对比学习领域,Chen 等人 [26] 利用数据增强生成正样本对,通过残差网络编码器和对比损失函数进行优化。He 等人 [27] 通过动量编码器增强负样本的多样性,并采用梯度编码器进行一致性学习。

基于自监督学习的视频异常检测(VAD)。尽管自监督学习(SSL)在图像识别、视频分析和目标检测等多个领域取得了显著成就,但其在视频异常检测领域的应用仍处于起步阶段。与依赖像素重建或预测的方法不同,基于SSL的VAD方法通过对比学习或解决前置任务来捕捉时空表示。 Wang等人[15]采用带有聚类注意力机制的对比学习框架来学习时空表示。Sun等人[28]提出了层次语义对比(HSC)方法,该方法利用自动编码器编码的特征,通过外部记忆库在场景级和对象级进行对比学习。然而,这两种方法都需要大量的训练样本和定制化的数据增强策略。 Georgescu等人[16]在三个自监督代理任务和VAD知识蒸馏上联合训练了一个3D卷积神经网络。这些代理任务易于解决,因此网络无法为VAD学习到高判别性的表示。在Georgescu等人工作的基础上,Barbalau等人[29]引入了包括对抗重建和补丁修复在内的新代理任务。然而,过多的代理任务可能导致过拟合和资源浪费等问题,此外,他们的方法依赖额外的数据集来获取伪异常样本。 Wang等人[30]提出了一种双分支网络模型,通过解决预测帧绝对位置的代理任务来捕捉运动特征。然而,这种方法并不理想,因为模型可能仅依赖预测物体的空间位置来确定帧的位置,这会导致运动特征提取不足。

本文介绍了一种由时间任务和空间任务组成的自监督模型,每个任务分别旨在识别外观和运动伪异常。具体而言,我们通过旋转图像块来构建外观伪异常样本,并通过打乱视频帧顺序生成运动伪异常样本。空间任务的主要目标是确定每个输入图像块属于正常类别还是旋转伪异常类别。时间任务则负责识别和分类视频序列中每个三元组的异常类型,包括全异常、左异常、右异常或非异常。

3. Method

3.1. Motivation and overview

研究动机。本研究针对异常行为样本稀缺的问题,将自监督学习应用于视频异常检测(VAD)。该方法的核心在于有效利用外观和运动信息来区分正常与异常行为。通过解耦时空维度,引入空间代理任务(基于图像块的二维旋转角度预测)和时间代理任务(视频帧三元组四类分类),以捕捉细粒度的外观和运动特征。

概述. 如图1所示,在训练阶段,所述方法采用包含五帧序列的三步处理流程。首先,使用预训练的目标检测模型YOLOv3[31]从每一帧中提取所有感兴趣的目标,随后丢弃其标签。感兴趣的目标定义为超过设定阈值的所有实体,例如可能包括行人、自行车、汽车等。这些目标随后沿时间维度堆叠,以创建以目标为中心的时空流。对于每个时空流,应用两种不同的预处理方法来为时空任务创建训练样本。最后,将预处理后的数据输入3D卷积神经网络,该网络作为空间和时间任务的求解器。

图1. 方法概述。我们通过破坏时空流的空间和时间特征来生成伪异常样本,并为每个分支引入代理任务:基于图像块的二维旋转角度预测和视频帧三元组分类。网络架构包含共享的3D卷积主干和两个独立的任务头,分别用于完成空间和时间任务,确保在每个领域内进行专注且有效的学习。在测试阶段,使用与训练阶段相同的网络架构,但不对时空流进行任何预处理。表1解释了“编码器”中使用的不同颜色含义。

3.2. Spatio-temporal tasks

在自监督学习中,准备明确且具有挑战性的自标记数据至关重要。我们引入了空间任务(基于图像块的二维旋转角度预测)和时间任务(视频帧三元组分类)。这些任务旨在捕捉细微的时空差异。该方法利用了以下发现:当网络被赋予解决这些代理任务的职责时,能够学习到丰富的时空表示。

首先,我们的方法利用在MS-COCO数据集[32]上预训练的YOLOv3检测器[31]逐帧提取目标,仅保留其位置信息。对于第i帧中的每个目标,使用相同的边界框从相邻帧中裁剪图像块,然后堆叠形成以目标为中心的时空流。这些片段被归一化到固定尺寸(例如64×64)。基于这些时空流,分别进行空间和时间预处理,以制备用于空间任务和时间任务的训练样本。

空间任务。如图2所示,与Gidaris等人[25]将整幅图像按固定角度(0◦、90◦、180◦、270◦)旋转的方法不同,我们的方法是将每一帧划分为\(n×n\)个等大的图像块,并对每个图像块单独进行随机角度旋转,使每个图像块的旋转角度各不相同。旋转后,将图像块按原始位置重新拼接形成新图像。这种旋转方式在同一时空流的不同图像上保持一致,从而为空间任务创建多样化的训练样本。 我们模型中的空间任务是基于图像块旋转角度预测的多分类问题。我们将四种不同的旋转角度θ划分为四个类别:“0”表示未旋转,“1”表示逆时针旋转90◦一次,“2”表示旋转两次90◦,“3”表示旋转三次90◦。在空间任务中,目标不是直接估计旋转角度,而是确定时空流每一帧中\(n×n\)个图像块各自属于这四个指定类别的哪一个。需要强调的是,同一时空流内的不同帧采用一致的旋转策略。我们使用交叉熵损失来学习该空间任务:

\[L_{s}=\frac{1}{n^{2}} \sum_{i=1}^{n^{2}} C E\left(s_{i}, \hat{s}_{i}\right), (1)\]

其中,\(s_{i}\)和\(\hat{s}_{i}\)分别表示图像中特定图像块的实际和预测旋转角度类别,\(n^{2}\)表示单幅图像中的图像块总数。

图2. 整图旋转与基于图像块的二维旋转对比。(a) 直接旋转整幅图像并预测旋转角度;(b) 先将图像划分为等大的\(n \times n\)个图像块,再对每个图像块独立旋转(我们的方法)。“0”表示未旋转,“1”表示逆时针旋转90◦一次,“2”表示旋转两次90◦,“3”表示旋转三次90◦。

时间任务。为了给时间任务生成均衡且丰富的训练样本,我们在不改变空间信息的前提下对包含 \( l \) 帧的序列进行打乱处理,采用两种方法: (1)对整个 \( l \) 帧序列进行随机打乱; (2)从 \( I \)-帧序列中选择交替帧进行随机打乱,同时保留其他帧的原始位置。 这两种方法旨在生成不同类型的伪异常样本。例如,方法二更倾向于生成“左异常”和“右异常”样本。关键在于,仅包含静态物体的序列不进行打乱,因为这可能导致相同内容被关联到多个类别,从而在学习过程中引发混淆。我们通过调整超参数 \( \beta \) 来微调这两种方法的应用比例,以确保视频分析过程中生成的四类样本数量尽可能均衡。 图3展示了我们的时间预处理方法。视频帧三元组四类分类任务被视为时间任务,这也是一个分类问题。连续的 \( l \) 帧被打乱形成无序序列,可概念化为 \( I-2 \) 个三元组。这些三元组被分为四个类别:“a”表示全异常,“b”表示左异常,“c”表示右异常,“d”表示非异常。模型的目标是预测打乱序列中三元组的类别。我们使用交叉熵损失来辅助学习该时间任务:

\[L_{t}=\frac{1}{l} \sum_{i=1}^{l} C E\left(t_{i}, \hat{t}_{i}\right), (2)\]

其中,\( t_{i} \) 和 \( \hat{t}_{i} \) 分别表示第 \( i \) 个三元组的实际类别和预测类别,\( l \) 表示序列中的帧数。

图3. 时间任务。我们以\( l \)(\( l=7 \))个视频帧为例展示时间预处理方法,呈现两种不同的处理方式。“a”表示全异常,“b”表示左异常,“c”表示右异常,“d”表示非异常。

我们采用了一种混合训练策略,其中一个训练小批量由两组不同的样本组成:\(C_s\) 和 \(C_t\),分别代表时间样本集和空间样本集。因此,一个小批量共包含 \(|C_s + C_t|\) 个样本。值得注意的是,每个求解器仅负责其指定的代理任务,从而有效消除了歧义。这意味着时间求解器不参与空间任务,反之亦然。算法1详细说明了使用小批量构建时空任务所需训练样本的相关细节。

联合损失。我们的3D卷积神经网络模型通过对空间和时间任务的联合优化进行训练,因此采用组合训练损失进行优化。这种集成方法使模型能够同时学习和改进空间与时间特征提取,从而实现更有效和全面的训练效果。

\[L=L_{s}+L_{t}, (3)\]

其中,\(L_{s}\) 表示空间任务的损失,\(L_{t}\) 表示时间任务的损失。

3.3. Inference

如图1所示,在推理阶段,我们的模型与训练阶段类似,使用YOLOv3对每一帧t进行目标检测。检测到的目标边界框沿时间维度扩展,以创建以目标为中心的时空流。与训练不同的是,推理阶段不进行任何预处理,因此在每个未处理的帧t中,\(n×n\)的图像块呈现“0”特征,表示未旋转。每个帧三元组被标记为“d”,表示非异常。

将这些未处理的时空流输入3D卷积神经网络后,会生成两个矩阵:\(M_s\) 和 \(M_t\),分别对应空间任务和时间任务的分数。直观来看,在 \(M_s\) 中,第一行的元素表示每个图像块属于“0”(未旋转)类别的概率;而在 \(M_t\) 中,最后一行的元素表示每个帧三元组属于“d”(非异常)类别的概率。由于模型仅基于正常时空特征训练,预期正常事件在 \(M_s\) 第一行和 \(M_t\) 最后一行的数值会高于异常事件。因此,我们将 \(M_s\) 第一行和 \(M_t\) 最后一行中的最小值作为异常分数,假设图像块或三元组中单个错误预测即可表明异常。

\[ \left\{ \begin{array}{l} s_s = \min (M_s(0,:)), \\ s_t = \min (M_t(-1,:)), \end{array} \right. \]

其中,\(M_s(0,:)\) 表示选取 \(M_s\) 的第一行,\(M_t(-1,:)\) 表示选取 \(M_t\) 的最后一行。函数 \(\min()\) 用于寻找最小值,\(s_s\) 和 \(s_t\) 分别表示目标级的空间和时间任务分数。

在我们的模型中,针对帧级时空任务评分,对于\(S_s\)和\(S_t\),需考虑一帧中所有检测到的目标的最小分数。随后应用3D滤波器生成平滑的异常分数。最后,对空间和时间分支的分数进行归一化处理,确保其落入[0,1]范围,从而保证评分过程的一致性和可比性。 \[ \left\{ \begin{array}{l} S_s = \frac{S_s - \min(S_s)}{\max(S_s) - \min(S_s)} \\ S_t = \frac{S_t - \min(S_t)}{\max(S_t) - \min(S_t)} \end{array} \right. (5) \]

最终的帧级异常分数\(s\)通过对\(S_s\)和\(S_t\)取加权平均计算得出。该方法结合空间和时间异常分数,对每一帧的正常或异常状态进行综合评估。

\[S = w_s × S_s + (1 - w_s) × S_t. \ (6)\]

4. Experiments

5. Conclusion

异常行为通常表现为局部外观的异常和短暂的运动异常。基于这一观察,我们认为细粒度的时空特征对有效的视频异常检测(VAD)至关重要。因此,我们开发了一种自监督学习框架,该框架在局部空间(图像块级别)和短暂时序(三元组级别)尺度上执行代理任务。这些代理任务的核心在于区分正常样本与伪异常样本。在此过程中,我们使用小尺寸卷积核来捕捉正常样本与伪异常样本之间细微的时空差异,从而实现对正常外观和运动更精确的建模。此外,我们不依赖预训练模型,而是通过解决这些代理任务,使模型学习到细粒度的时空表示,显著提升检测性能。

尽管我们通过空间和时间代理任务提取前景目标的细粒度外观和运动特征,在实验中取得了显著结果,但这种以目标为中心的时空流训练方法未能捕捉背景场景特征。然而,某些异常行为可能与场景上下文相关,例如,在草坪上行走与在人行道上行走即为两种不同的行为,这表明同一外观或动作在不同场景中可能是异常的或正常的。为应对这一挑战,后续工作将探索引入新的代理任务以捕捉与目标相关的背景信息,从而实现对场景特定异常行为的检测。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐