【视频异常检测】Open-Vocabulary Video Anomaly Detection 论文阅读

Open-Vocabulary Video Anomaly Detection 论文阅读

  • Abstract
  • Method
    • 3.1. Overall Framework
    • 3.2. Temporal Adapter Module
    • 3.3. Semantic Knowledge Injection Module
    • 3.4. Novel Anomaly Synthesis Module
    • 3.5. Objective Functions
      • 3.5.1 Training stage without pseudo anomaly samples
      • 3.5.2 Fine-tuning stage with pseudo anomaly samples
  • 4. Experiments
  • 5. Conclusion

文章信息:
在这里插入图片描述

原文链接:https://arxiv.org/abs/2311.07042
无源码
发表于:CVPR 2024

Abstract

当前的视频异常检测(VAD)方法在弱监督下通常局限于封闭集设置,并且可能在测试数据中存在未见过的异常类别的开放世界应用中遇到困难。最近的一些研究尝试解决一个更现实的问题,即开放集异常检测(open-set VAD),其旨在检测给定已见异常和正常视频的未见异常。然而,这样的设置侧重于预测帧异常分数,无法识别异常的具体类别,尽管这种能力对于构建更加明智的视频监控系统至关重要。本文进一步探讨了开放词汇视频异常检测(OVVAD),我们旨在利用预训练的大型模型来检测和分类已见和未见的异常。为此,我们提出了一种将OVVAD分解为两个相互补充的任务的模型 - 无类别检测和特定类别分类,并联合优化这两个任务。特别地,我们设计了一个语义知识注入模块,从大型语言模型中引入语义知识用于检测任务,并设计了一个新颖的异常合成模块,借助大型视觉生成模型生成伪造的未见异常视频,用于分类任务。这些语义知识和合成异常显著扩展了我们模型在检测和分类各种已见和未见异常方面的能力。在三个广泛使用的基准测试上的大量实验表明,我们的模型在OVVAD任务上达到了最先进的性能水平。

在这里插入图片描述
图1.红色框为作者解决的问题(识别未见过的视频异常,并且还能对未见过的异常进行分类)

作者的贡献总结如下:

  • 我们探索了在一个具有挑战性但在实践中非常重要的开放词汇设置下的视频异常检测。据我们所知,这是针对开放词汇视频异常检测(OVVAD)的第一项工作。
  • 然后,我们提出了一个建立在预训练的大型模型之上的模型,将OVVAD任务分解为两个相互补充的子任务——无类别检测和特定类别分类——并共同优化它们以实现准确的OVVAD。
  • 在无类别检测任务中,我们设计了一个几乎无权重的时间适配器模块和一个语义知识注入模块,大大增强了正常/异常帧的检测能力。
  • 在细粒度异常分类任务中,我们引入了一种新颖的异常合成模块,用于生成伪造的未见异常视频,以便准确分类新型异常类型。

Method

Problem Statement.所研究的问题,OVVAD,可以正式地陈述如下。假设我们有一组训练样本 X = { x i } i = 1 N + A \mathcal{X} = \{ x_i\} _{i= 1}^{N+ A} X={xi}i=1N+A,其中 X n = { x i } i N \mathcal{X} _n= \{ x_i\} _i^N Xn={xi}iN 是正常样本集合, X a = { x i } i = N + 1 N + A \mathcal{X}_a=\{x_i\}_{i=N+1}^{N+A} Xa={xi}i=N+1N+A 是异常样本集合。对于 X a \mathcal{X}_a Xa 中的每个样本 x i x_i xi,它都有一个相应的视频级别的类别标签 y i , y i ∈ C b a s e y_i,y_i\in C_{base} yi,yiCbase,这里, C b a s e C_{base} Cbase 表示基本(已见)异常类别的集合, C C C C b a s e C_{base} Cbase C n o v e l C_{novel} Cnovel 的并集,其中 C n o v e l C_{novel} Cnovel 表示新颖(未见)异常类别的集合。根据训练样本 X \mathcal{X} X,目标是训练一个能够检测和分类基本和新颖异常的模型。具体来说,模型的目标是为每个帧预测异常置信度,并在视频中存在异常时识别异常类别。

3.1. Overall Framework

在这里插入图片描述

传统方法基于封闭集分类不太可能处理开放词汇情景下的VAD。为此,我们利用语言-图像预训练模型,例如CLIP,作为基础,因为它具有强大的零样本泛化能力。如图2所示,给定一个训练视频,我们首先将其馈送到CLIP的图像编码器 Φ C L I P − v \Phi_{CLIP-v} ΦCLIPv 中,以获得具有形状为 n × c n\times c n×c 的帧级特征 x f x_f xf,其中 n n n 是视频帧数, c c c 是特征维度。然后这些特征通过TA模块、SKI模块和detector,产生帧级异常置信度 p p p,这个流程主要用于类别不可知的检测任务。另一方面,对于类别特定的分类,我们从不同视觉任务的其他开放词汇作品中汲取灵感,并使用跨模态对齐机制。具体来说,我们首先生成跨帧特征的视频级聚合特征,然后生成异常类别的文本特征/嵌入,最后根据视频级特征和文本特征之间的对齐估计异常类别。此外,我们引入NAS模块,借助大型语言模型(LLM)和人工智能生成内容模型(AIGC),生成潜在的新颖异常,以实现新类别的识别。

3.2. Temporal Adapter Module

时间依赖性在VAD中起着至关重要的作用。在这项工作中,我们利用了CLIP的冻结图像编码器来获得视觉特征,但由于CLIP是在图像-文本对上预训练的,因此缺乏对时间依赖性的考虑。为了弥补图像和视频之间的差距,最近的研究中出现了使用时间变换器的做法。然而,这样的范式在新颖类别上明显表现出性能下降,可能的原因是时间变换器中的额外参数可能会特化于训练集,从而损害对新颖类别的泛化能力。因此,我们设计了一个几乎无权重的时间适配器来处理时间依赖性,它是建立在经典的图卷积网络之上的。从数学上讲,它可以表示如下:
在这里插入图片描述
其中LN是层归一化操作,H是邻接矩阵,softmax归一化用于确保H的每一行的总和等于一。这样的设计用于基于每两帧之间的位置距离捕获上下文依赖关系。邻接矩阵的计算如下:
在这里插入图片描述
i i i 帧和第 j j j 帧之间的接近关系仅由它们的相对时间位置决定。 σ \sigma σ 是一个超参数,用于控制距离关系的影响范围。根据这个公式,两帧之间的时间距离越接近,接近关系得分越高,反之越低。值得注意的是,在 TA 模块中,只有层归一化涉及少量参数。

3.3. Semantic Knowledge Injection Module

人类在感知环境时通常会利用先验知识,例如,我们可以根据气味和烟雾推断火灾的存在,而不直接看到火焰。基于这个想法,我们提出了 SKI 模块,明确引入额外的语义知识来辅助视觉检测。如图 2 \color{red}{2} 2 所示,对于视频中的正常事件,我们使用大规模语言模型,例如,ChatGPT [2] 和 SparkDesk 1 ^{1} 1,以固定的模板提示,获取关于常见场景和动作的信息,例如街道、公园、购物大厅、步行、奔跑、工作等等。同样,我们生成与异常场景相关的额外词语,包括爆炸、爆裂、火光等术语。最后,我们获得了几个短语列表,表示为 M p r i o r M_{prior} Mprior,其中包含名词词语(场景)和动词词语(动作)。拥有 M p r i o r M_{prior} Mprior 后,我们利用 CLIP 的文本编码器提取文本嵌入作为语义知识,具体如下所示,
在这里插入图片描述
其中 F t e x t ∈ R l × c F_{text}\in\mathcal{R}^{l\times c} FtextRl×c Φ C L I P − t \Phi_{CLIP-t} ΦCLIPt 表示 CLIP 的文本编码器, Φ t o k e n \Phi_{token} Φtoken 是将单词转换为向量的语言分词器。

然后,为了有效地将这些语义知识合并到视觉信息中,以增强异常检测的效果,我们设计了一种跨模态注入策略。该策略鼓励视觉信号寻找相关的语义知识并将其整合到过程中。这样的操作如下所示:
在这里插入图片描述
其中, F k n o w ∈ R n × c F_{know}\in\mathcal{R}^{n\times c} FknowRn×c,我们使用sigmoid而不是softmax,以确保视觉信号可以涵盖更多相关的语义概念。

最后,我们将 F k n o w F_{know} Fknow x t x_t xt连接起来,创建一个包含视觉信息和整合语义知识的输入。我们将这个输入馈送到一个二元检测器中,为类别无关检测生成异常置信度。

3.4. Novel Anomaly Synthesis Module

尽管当前的预训练视觉-语言模型,如CLIP,在零样本能力方面表现出色,但它们在各种下游任务,特别是与视频相关的任务上的零样本性能仍然不尽人意。出于同样的原因,我们的模型是基于这些预训练的视觉-语言模型构建的,并且在基础异常和正常样本上进行训练,这使得它在面对新异常时容易出现泛化缺陷。随着大型生成模型的出现,生成样本作为伪训练数据的做法已经成为一种可行的解决方案。因此,我们提出了NAS模块,根据潜在的异常类别生成一系列伪新异常样本。然后,我们利用这些样本对提出的模型进行微调,以改善对新异常的分类和检测。总的来说,NAS模块包括三个关键过程:

1)首先,我们使用预定义的模板 p r o m p t g e n prompt_{gen} promptgen(例如, g e n e r a t e generate generate)来提示大型语言模型(LLMs,例如ChatGPT、ERNIE Bot [41]),生成关于“Fighting”场景的十个简短描述,以获取潜在新类别的文本描述。然后,我们利用人工智能生成内容(AIGC)模型,例如DALL·E mini [30]、Gen-2 [7],来生成相应的图像,以创建短视频。这可以表示为:
在这里插入图片描述
2) 随后,对于 I g e n I_{gen} Igen,我们借鉴 [18] 的思路,引入了一种简单而有效的动画策略,将单张图像转换为模拟场景变化的视频片段。具体地,给定一张图像,我们使用不同的裁剪比例来选择相应的图像区域,然后将这些区域调整回原始尺寸,并级联它们以创建新的视频片段 S c a t S_{cat} Scat

3)最后,为了模拟现实世界中的情况,其中异常视频通常是长而未经修剪的,我们引入了第三步,伪异常合成,通过将 S c a t S_{cat} Scat 插入到随机选择的正常视频中。此外,插入位置也是随机选择的。这个过程产生了最终的伪异常样本 V n a s \mathcal{V}_{nas} Vnas。详细描述和结果请参考补充材料。

有了 V n a s \mathcal{V}_{nas} Vnas,我们对最初在 X \mathcal{X} X 上训练的模型进行微调,以增强其对新异类的泛化能力。

3.5. Objective Functions

3.5.1 Training stage without pseudo anomaly samples

对于类别不可知的检测,我们遵循之前的视频异常检测工作[27,49],使用 Top-K 机制在异常和正常视频中选择前 K K K 个高异常置信度值。我们计算这些选择的平均值,并将平均值输入到 sigmoid 函数中作为视频级别的预测。在这里,我们设置 K = n / 16 K=n/16 K=n/16 用于异常视频, K = n K=n K=n 用于正常视频。最后,我们计算视频级别预测和二进制标签之间的二元交叉熵 L b c e L_{bce} Lbce

关于类别特定的分类,我们计算聚合的视频级特征与文本类别嵌入之间的相似性,以得出视频级别的分类预测。我们还使用交叉熵损失函数来计算视频级别的分类损失 L c e L_{ce} Lce。鉴于 OVVAD 是一个弱监督任务,我们无法直接从帧级别注释中获得视频级别的聚合特征。我们遵循 [49],使用基于软注意力的聚合方法,如下所示:
在这里插入图片描述

对于文本类别嵌入,我们受到 CoOp[63] 的启发,将可学习的提示附加到原始类别嵌入中。
对于 SKI 模块的参数,即 F t e x t F_{text} Ftext,我们旨在在训练阶段明确进行优化。我们打算区分正常知识嵌入和异常知识嵌入。对于正常视频,我们期望它们的视觉特征与正常知识嵌入的相似性较高,与异常知识嵌入的相似性较低。为此,我们首先提取每个视频与文本知识嵌入之间的相似性矩阵,然后为每个帧选择前 10 % 10\% 10% 最高分,并计算平均值,最后应用基于交叉熵的损失 L s i m − n L_{sim-n} Lsimn。对于异常视频,我们预计异常知识嵌入与异常视频帧特征之间的相似性较高。由于弱监督情况下缺少精确的帧级注释,我们采用了一种硬注意力的选择机制,称为 Top-K,来定位异常区域。然后执行相同的操作来计算损失 L s i m − a L_{sim-a} Lsima

总的来说,在训练阶段,我们使用了三个损失函数,总损失函数为:
在这里插入图片描述
L s i m L_{sim} Lsim L s i m − n L_{sim-n} Lsimn L s i m − a L_{sim-a} Lsima 的总和。

3.5.2 Fine-tuning stage with pseudo anomaly samples

在获得 NAS 模块生成的 V n a s \mathcal{V}_{nas} Vnas 后,我们继续对模型进行微调。 V n a s \mathcal{V}_{nas} Vnas 是合成的,为我们提供了帧级别的标注,使我们能够使用完整的监督来优化我们的检测模型。对于分类, L c e 2 L_{ce2} Lce2 L c e L_{ce} Lce 保持相同,关键区别在于标签不仅适用于基础类别,还适用于潜在的新类别。对于检测, L b c e 2 L_{bce2} Lbce2 是帧级别的二元交叉熵损失。
在这里插入图片描述

4. Experiments

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5. Conclusion

在本论文中,我们提出了一种新模型,基于预训练的大型模型,用于弱监督下的开放词汇视频异常检测任务。由于开放词汇视频异常检测的挑战性质,当前的视频异常检测方法在效率上面临困难。为了解决这些独特的挑战,我们明确将开放词汇视频异常检测分解为类别不可知的检测和类别特定的分类子任务。然后,我们引入了几个临时模块:时间适配器和语义知识注入模块主要旨在促进对基本和新颖异常的检测,新颖异常合成模块生成了几个潜在的伪新颖样本,以帮助所提出的模型更准确地感知新颖异常。在三个公共数据集上进行的大量实验表明,所提出的模型在开放词汇视频异常检测任务上表现出了优势。未来,利用AIGC模型的辅助生成更生动的伪异常样本的研究仍有待探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/568588.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子信息制造工厂5G智能制造数字孪生可视化平台,推进数字化转型

电子信息制造工厂5G智能制造数字孪生可视化平台,推进数字化转型。5G智能制造数字孪生可视化平台利用5G网络的高速、低延迟特性,结合数字孪生技术和可视化界面,为电子信息制造工厂提供了一种全新的生产管理模式。不仅提升生产效率,…

设计模式(三):抽象工厂模式

设计模式(三):抽象工厂模式 1. 抽象工厂模式的介绍2. 抽象工厂模式的类图3. 抽象工厂模式的实现3.1 创建摩托车的接口3.2 创建摩托车的具体实现3.3 创建汽车的接口3.4 创建汽车的具体产品3.5 创建抽象工厂3.6 创建具体工厂3.7 创建工厂生成器…

Fisher判别示例:鸢尾花(iris)数据(R)

先读取iris数据,再用程序包MASS(记得要在使用MASS前下载好该程序包)中的线性函数lda()作判别分析: data(iris) #读入数据 iris #展示数据 attach(iris) #用变量名绑定对应数据 library(MASS) #加载MASS程序包 ldlda(Species~…

《ElementPlus 与 ElementUI 差异集合》el-select 显示下拉列表在 Cesium 场景中无法监听关闭

前言 仅在 Element UI 时有此问题,Element Plus 由于内部结构差异较大,不存在此问题。详见《el-select 差异点,如:高、宽、body插入等》; 问题 点击空白处,下拉列表可监听并关闭;但在 Cesium…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单人脸检测/识别实战案例 之五 简单进行车牌检测和识别 一、简单介绍 二、简单进行车牌检测和识别实现原理 …

鸿蒙(HarmonyOS)性能优化实战-Swiper高性能开发

背景 在应用开发中,Swiper 组件常用于翻页场景,比如:桌面、图库等应用。Swiper 组件滑动切换页面时,基于按需加载原则通常会在下一个页面将要显示时才对该页面进行加载和布局绘制,这个过程包括: 如果该页面…

解决VSCode中“#include错误,请更新includePath“问题

目录 1、问题原因 2、解决办法 1、问题原因 在编写C程序时,想引用头文件但是出现如下提示: (1)首先检查要引用的头文件是否存在,位于哪里。 (2)如果头文件存在,在编译时提醒VSCo…

【iOS】类与对象底层探索

文章目录 前言一、编译源码二、探索对象本质三、objc_setProperty 源码探索四、类 & 类结构分析isa指针是什么类的分析元类元类的说明 五、著名的isa走位 & 继承关系图六、objc_class & objc_objectobjc_class结构superClassbitsclass_rw_tclass_ro_tro与rw的区别c…

关于Modbus TCP 编码及解码方式分析

一.Modbus TCP 基本概念 1.基本概念 ①Coil和Register   Modbus中定义的两种数据类型。Coil是位(bit)变量;Register是整型(Word,即16-bit)变量。 ②Slave和Master与Server和Client   同一种设备在不同…

BUUCTF——[RoarCTF 2019]Easy Java

BUUCTF——[RoarCTF 2019]Easy Java 1.既然是登录框嘛,不得随便输入个弱口令,进行尝试 2.使用弱口令爆破了一下,直接就是429,无果 3.查看版本信息 4.帮助文档这里测试啦任意文件读取,无果 5.知道服务器的名称是openresty 6.…

jvm知识点总结(一)

JVM的跨平台 java程序一次编写到处运行。java文件编译生成字节码,jvm将字节码翻译成不同平台的机器码。 JVM的语言无关性 JVM只是识别字节码,和语言是解耦的,很多语言只要编译成字节码,符合规范,就能在JVM里运行&am…

信息系统项目管理师0066:过程管理(5信息系统工程—5.1软件工程—5.1.6过程管理)

点击查看专栏目录 文章目录 5.1.6过程管理1.成熟度模型2.成熟度等级5.1.6过程管理 软件过程能力是组织基于软件过程、技术、资源和人员能力达成业务目标的综合能力。包括治理能力、开发与交付能力、管理与支持能力、组织管理能力等方面。软件过程能力成熟度是指组织在提升软件产…

[Qt的学习日常]--初识Qt

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、Qt的基本…

docker容器技术篇:容器集群管理实战mesos+zookeeper+marathon(一)

容器集群管理实战mesoszookeepermarathon(一) mesos概述 1.1 Mesos是什么 Apache Mesos 是一个基于多资源调度的集群管理软件,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行 Hadoop、Spark以及docker等。 1.2 为…

C++中的list类模拟实现

目录 list类模拟实现 list类节点结构设计 list类非const迭代器结构设计 迭代器基本结构设计 迭代器构造函数 operator()函数 operator*()函数 operator!()函数 operator(int)函数 operator--()函数 operator--(int)函数 operator()函数 operator->()函数 list…

鸿蒙OpenHarmony【LED外设控制】 (基于Hi3861开发板)

概述 OpenHarmony WLAN模组基于Hi3861平台提供了丰富的外设操作能力,包含I2C、I2S、ADC、UART、SPI、SDIO、GPIO、PWM、FLASH等。本文介绍如何通过调用OpenHarmony的NDK接口,实现对GPIO控制,达到LED闪烁的效果。其他的IOT外设控制&#xff0…

C++ | Leetcode C++题解之第45题跳跃游戏II

题目&#xff1a; 题解&#xff1a; class Solution { public:int jump(vector<int>& nums) {int maxPos 0, n nums.size(), end 0, step 0;for (int i 0; i < n - 1; i) {if (maxPos > i) {maxPos max(maxPos, i nums[i]);if (i end) {end maxPos;s…

Opencv_10_自带颜色表操作

void color_style(Mat& image); Opencv_10_自带颜色表操作&#xff1a; void ColorInvert::color_style(Mat& image) { int colormap[] { COLORMAP_AUTUMN, COLORMAP_BONE , COLORMAP_JET , COLORMAP_WINTER, COLORMAP_RAINBOW , COLOR…

parallels desktop19.3最新版本软件新功能详细介绍

Parallels Desktop是一款运行在Mac电脑上的虚拟机软件&#xff0c;它允许用户在Mac系统上同时运行多个操作系统&#xff0c;比如Windows、Linux等。通过这款软件&#xff0c;Mac用户可以轻松地在同一台电脑上体验不同操作系统的功能和应用程序&#xff0c;而无需额外的硬件设备…

40. UE5 RPG给火球术增加特效和音效

前面&#xff0c;我们将火球的转向和人物的转向问题解决了&#xff0c;火球术可以按照我们的想法朝向目标发射。现在&#xff0c;我们解决接下来的问题&#xff0c;在角色释放火球术时&#xff0c;会产生释放音效&#xff0c;火球也会产生对应的音效&#xff0c;在火球击中目标…