【视频异常检测】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模型的辅助生成更生动的伪异常样本的研究仍有待探索。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

滚动条详解:跨平台iOS、Android、小程序滚动条隐藏及自定义样式综合指南

滚动条是用户界面中的图形化组件,用于指示和控制内容区域的可滚动范围。当元素内容超出其视窗边界时,滚动条提供可视化线索,并允许用户通过鼠标滚轮、触屏滑动或直接拖动滑块来浏览未显示部分,实现内容的上下或左右滚动。它在保持…

(四)Servlet教程——Maven的安装与配置

1.在C盘根目录下新建一个Java文件夹,该文件夹用来放置以下步骤下载的Maven; 2. 下载Maven的来源有清华大学开源软件镜像站和Apache Maven的官网,由于清华大学开源软件镜像站上只能下载3.8.8版本以上的Maven,我们选择在Apache Maven的官网上下…

OpenWrt里面运行docker安装windows xp

stdout: ❯ Starting Windows for Docker v2.20... stdout: ❯ For support visit https://github.com/dockur/windows stdout: ❯ CPU: Intel Xeon CPU E3 1230 V2 stdout: Intel Xeon CPU E3 1230 V2 | RAM: 7/7 GB | DISK: 416 GB (ext4) | HOST: 5.15.34... stdout: stdou…

UE4网络图片加载库(带内存缓存和磁盘缓存)

UE4网络图片加载库,带内存缓存和磁盘缓存,支持自定义缓存大小,支持蓝图和C++代码调用 1、调用示例 2、对外暴露函数 3、源代码-网络模块 KeImageNet.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreM…

zabbix6.4告警配置(短信告警和邮件告警),脚本触发

目录 一、前提二、告警配置1.邮件告警脚本配置2.短信告警脚本配置3.zabbix添加报警媒介4.zabbix创建动作4.给用户添加报警媒介 一、前提 已经搭建好zabbix-server 在需要监控的mysql服务器上安装zabbix-agent2 上述安装步骤参考我的上篇文章:通过docker容器安装za…

printjs打印表格的时候多页的时候第一页出现空白

现象:打印多页的时候第一页空白了,一页的时候没有问题 插件:printjs 网上搜索半天找到的方式解决: 1. 对于我这次的现象毫无作用。其他情况不得而知,未遇见过。(这个应该是大家用的比较多的方式&#xf…

检测水箱水位传感器有哪些?

生活中很多家电中都内含一个水箱,例如电蒸锅、饮水机、蒸汽熨斗、咖啡机等等,这些内部都有水箱,或大或小。当然水箱也有很多种类型,例如生活水箱、生产水箱、消防水箱等等。 把水储存在水箱中也会遇到这些问题,水箱没…

CSS学习(选择器、盒子模型)

1、CSS了解 CSS:层叠样式表,一种标记语言,用于给HTML结构设置样式。 样式:文字大小、背景颜色等 p标签内不能嵌套标题标签。 px是相对于分辨率而言的, em是相对于浏览器的默认字体, rem是相对于HTML根元…

nvm的下载与安装

nvm(Node Version Manager)是一个用于管理 Node.js 版本的工具,它允许您在同一台计算机上安装和切换不同的 Node.js 版本。 一、下载地址 https://github.com/coreybutler/nvm-windows/releases 二、安装nvm 三、设置环境变量 在命令提示…

一、Django 初识

简介 Django 是一个用于构建 Web 应用程序的高级 Python Web 框架。 版本对应 不同版本的django框架是基于特定的不同的python版本开发的,所以不同版本的django框架要正常执行功能只能安装特定的python版本 Django安装 安装 Django # 全局安装 pip install dj…

频率分析和离散傅里叶变换——DSP学习笔记四

背景知识 四种基本的傅里叶变换 基本思想:将信号表示为不同频率 正弦分量的线性组合 正弦信号和复指数时间信号的有用特性 相同频率但不同相位的正弦信号的任何线性组合,都是有着相同频率但不同相位,且幅度可能受改变的正弦信号。 复指数时…

软件物料清单(SBOM)生成指南 .pdf

如今软件安全攻击技术手段不断升级,攻击数量显著增长。尤其是针对软件供应链的安全攻击,具有高隐秘性、追溯难的特点,对企业软件安全威胁极大。 同时,软件本身也在不断地更新迭代,软件内部成分安全性在持续变化浮动。…

【算法】人工蜂群算法,解决多目标车间调度问题,柔性车间调度问题

文章目录 复现论文什么是柔性作业车间调度问题?数据处理ABC算法编码解码种群初始化雇佣蜂操作IPOX交叉多点交叉 观察蜂操作侦察蜂操作算法流程 结果程序截图问询、帮助 复现论文 什么是柔性作业车间调度问题? 也叫多目标车间调度问题。 柔性作业车间调…

为什么有的晶圆厂叫特色工艺晶圆厂?

知识星球(星球名: 芯片制造与封测社区)里的学员问: 经常看看到某某晶圆厂是12英寸特色工艺晶圆厂,特色工艺是指什么? 芯片的种类? 芯片分为四大类:mems,IC,光电器件,分立器件。 …

web(微博发布案例)

示例&#xff1a; 1、检测空白内容 2、发布内容 html: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta …

科蓝尔环保 | 成都2024全国水科技大会暨技术装备成果展览会

2024年5月13日一15日中华环保联合会、福州大学、上海大学在四川省成都市联合举办“2024全国水科技大会暨技术装备成果展览会”。 大会主题&#xff1a;加快形成新质生产力 增强水业发展新动能 大会亮点&#xff1a;邀请6位院士&#xff0c;100余位行业专家&#xff0c;15场专…

Redis缓存问题:穿透,击穿,雪崩等

Redis缓存问题:穿透,击穿,雪崩等 在高并发场景下,数据库往往是最薄弱的环节,我们通常选择使用redis来进行缓存,以起到缓冲作用,来降低数据库的压力,但是一旦缓存出现问题,也会导致数据库瞬间压力过大甚至崩溃,从而导致整个系统崩溃.今天就聊聊常见的redis缓存问题. 缓存击穿 …

了解HTTP代理服务器:优势、分类及应用实践

在我们日常的网络使用中&#xff0c;我们经常听到HTTP代理服务器这个术语。那么&#xff0c;HTTP代理服务器到底是什么&#xff1f;它有什么优势和分类&#xff1f;又如何应用于实践中呢&#xff1f;让我们一起来了解一下。 HTTP代理服务器是一种位于客户端和服务器之间的中间…

qml和c++结合使用

目录 文章简介1. 创建qml工程2. 创建一个类和qml文件&#xff0c;修改main函数3. 函数说明&#xff1a;4. qml 文件间的调用5. 界面布局6. 代码举例 文章简介 初学qml用来记录qml的学习过程&#xff0c;方便后面归纳总结整理。 1. 创建qml工程 如下图&#xff0c;我使用的是…

数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点

大家知道咱们社区近期TSMC 12nm ARM Cortexa-A72(1P9M 6Track Metal Stack)已经开班。这里小编要强调一点:不要认为跑了先进工艺的项目就会很有竞争力&#xff01;如果你仅仅是跑个先进工艺的flow&#xff0c;不懂先进工艺在数字IC后端实现上的不同点&#xff0c;为何有这样的不…