读《Open-Vocabulary Video Anomaly Detection》

news2024/11/20 9:28:50

2023 西北工业大学和新大

引言

视频异常检测(VAD)旨在检测不符合预期模式的异常事件,由于其在智能视频监控和视频内容审查等应用前景广阔,已成为学术界和工业界日益关注的问题。通过几年蓬勃发展,VAD 在许多不断涌现的工作中取得了重大进展。

传统的VAD可以根据监督模式大致分为两类,即半监督VAD[17]和弱监督VAD[38]。它们之间的主要区别在于异常训练样本的可用性。虽然它们在监督模式和模型设计方面有所不同,但两者都大致可以被视为分类任务。在半监督 VAD 的情况下,它属于一类分类的类别,而弱监督 VAD 属于二元分类。具体来说,半监督VAD假设在训练阶段只有正常样本可用,不符合这些正常训练样本的测试样本被识别为异常,如图1(a)所示。大多数现有方法本质上试图通过单类分类器[50]或自监督学习技术(如帧重建[9]、帧预测[17]、拼图[44]等)来学习单类模式,即正常模式。
弱监督VAD可以看作是一个二元分类任务,假设在训练阶段都有正常和异常样本,但异常事件的精确时间注释是未知的。以往的方法通常采用多实例学习(MIL)[38]或TopK机制[27]的二进制分类器来区分正常和异常事件。一般来说,现有的半监督和弱监督VAD方法都限制了它们对分类的关注,并使用相应的鉴别器对每个视频帧进行分类。虽然这些实践在几个广泛使用的基准上取得了显著的成功,但它们仅限于检测一组封闭的异常类别,无法处理任意不可见的异常。这种限制限制了它们在开放世界场景中的应用,并带来了增加缺失报告的风险,因为训练数据中不存在实际部署中的许多现实世界异常。(本来想说这个开放世界的点子提出有点强行,类似生物特征识别闭集分类器不行我要搞开集匹配。但是类比弱监督是fewshot的话,开放世界就有点zeroshot了)
在这里插入图片描述

贡献总结部分提到“该模型将 OVVAD 任务分解为两个相互互补的子任务——类不可知检测和类特定分类——并联合优化它们以实现准确的 OVVAD。”不过这本就有种解耦头的感觉啊,起码yolo6就有这种了吧 哦不对,那种目标检测本质上还是闭集分类器,只找出已知类别的东西,这里是要适用于任意的缺陷,只要置信度满足就检测出来,不管他有什么类别

相关工作

之后再说吧,先看看大模型的部分

框架

大致就是两条支路,检测这条路就是很直观的逐帧编码得到异常置信度
分类这条路聚合帧级特征得到视频级特征,然后生成一个异常类别的文本嵌入,再把这俩跨模态的特征对齐来估计类别。这个生成的模块就是用的LLM

TAM

这里提出CLIP虽然很牛逼但是只能得到静态的帧级特征,缺乏时序性,所以引入图卷积。但是这里又不急着涉及跨模态,只是单纯地获取帧级图像特征的时序性,那么类似步态识别3D卷积后接temporal pooling或者Gaitgl里的LTA不就完事了吗?我觉得可能是想利用上CLIP这样一样预训练模型,比如它的图像编码器很牛逼,直接用它的图像图像特征,所以一直逼逼赖赖CLIP,那么话都到这份上了就不得不祭出别的时域聚合方法了,总之就是觉得有点牵强

这里的图卷积公式里,对邻接矩阵的归一化是直接用的softmax!?要说一般图领域是左右乘度矩阵的-1/2次方才对吧

这里softmax函数被用于归一化邻接矩阵的每一行,以确保每一行的和为一。这种设计是为了捕获基于位置距离的上下文依赖性。具体来说,softmax归一化强调了与当前节点相近的节点的权重,从而可能捕捉到与时间距离相关的局部性质。再要结合文中对邻接矩阵的定义
邻接矩阵 H(i,j) 元素被定义为第i 帧和第 j 帧之间的相对时间位置关系的倒数,其中 σ 是一个超参数,用于控制距离相关性的影响范围。根据这个公式,两个帧之间的时间距离越近,它们之间的邻近关系得分越高,反之则越低。
所以这种归一化方法的一个可能优势是它在时间维度上直接建模了帧之间的邻近性,这对于捕捉视频序列中的时序依赖性可能是有益的。然而,它与传统的图归一化方法不同,可能无法完全捕捉节点的度分布,这可能会影响模型学习的全局结构特性。
总的来说,虽然这种归一化方法与传统的GCN中使用的方法不同,但它可能特别适用于处理视频数据的时序问题。而且作者可能发现在这个特定上下文中,使用softmax进行归一化能够更好地捕捉时间上的局部性质。

SKI

  1. 自动生成语义提示:系统可能会自动生成与视频内容相关的语义提示。这些提示不一定来自人工输入,而是可能通过分析视频内容或使用其他指标自动产生的。
  2. 语言模型生成文本:大型语言模型(如ChatGPT)接收这些语义提示,生成描述视频内容的文本信息,这些信息反映了视频中可能出现的正常或异常情况。
  3. 文本信息的处理:生成的文本信息被送入CLIP的文本编码器,将文本转换成向量形式,这样就可以与视频帧的视觉特征进行结合。
  4. 跨模态特征聚合:文本向量与视觉特征结合,形成一个跨模态特征表示,这可以通过图卷积网络或其他结构来进一步处理,以实现异常检测。

NAS

所以说到底,CLIP和LLM的预训练模型还是更适用于一直类别,对于未见新异常还是逊色。所以要用LLM生成伪训练样本

  1. 生成潜在异常的文本描述:首先,使用大型语言模型(例如ChatGPT, ERNIE Bot)与预定义的模板提示来生成描述潜在新颖异常类别的文本。这些描述模拟了在真实世界中可能出现的异常事件。
  2. 使用AI生成模型制造图像和视频:随后,利用AI生成内容模型(如DALL·E)生成与文本描述相对应的图像或短视频。这些生成的内容(Igen和Sgen)旨在视觉上表示文本描述的场景。
  3. 模拟场景连续性的视频剪辑:对于生成的图像Igen,模块借鉴先前研究中的有效激活策略,将单张图片转换为模拟场景变化的视频片段。这可能涉及到选择图像的不同区域并将它们重新缩放以创造新视频剪辑Scat。
  4. 合成长视频样本:为了模仿真实世界中未经编辑的长视频中的异常情况,NAS模块将Scat或Sgen插入到标准视频中,生成最终的异常视频样本Vnas。插入的位置是随机选择的,以增加样本的多样性。
  5. 微调模型:拥有这些合成的异常样本Vnas后,模型进行微调,目的是提高其对真实世界中新颖异常的检测能力。(感觉有点怪。这种情况让我想起来之前有过些老师质疑过我的事,这为了缺陷检测就直接生成若干假虚拟视频,凭啥直接拿来就用,人家正规数据集造出来也得写论文评估质量啥的呀)

损失函数

训练阶段不含伪异常样本
  1. 类别不可知的检测:使用Top-K机制在异常和正常视频中选择置信度最高的K个异常来作为视频级预测。在这里,K设置为异常视频的n/16和正常视频的n。
  2. 交叉熵损失:计算视频级预测和二进制标签之间的二进制交叉熵损失Lbce。
分类任务
  1. 分类损失:计算聚合视频级特征与文本类别嵌入的相似性,以推导视频级分类预测,并计算交叉熵损失Lce。
  2. 注意力机制:由于是弱监督任务,无法直接从帧级注释中获得视频级分类预测,因此采用基于软注意力的聚合方法。
  3. 语义知识注入(SKI)模块的参数:通过优化正常和异常知识嵌入间的相似度差异来显式优化。
微调阶段含伪异常样本
  1. 微调:使用NAS模块产生的伪异常样本Vnas进行微调,它为分类和检测提供了帧级注释。
  2. 分类损失:对于分类,损失函数Lce2保持不变,但考虑到潜在的新颖类别。
  3. 检测损失:Lbce2是帧级的二进制交叉熵损失。
总体损失函数
  1. 训练阶段:总损失函数Ltrain是Lbce,Lce和Lsim的和,其中Lsim是相似度损失。
  2. 微调阶段:总损失函数Ltune是Lbce2和Lce2的和,加上一个调节项λ 乘以Lbce和Lce。

总结来说,这个过程包括了针对异常检测的类别不可知的方法和对已知类别和新颖类别的分类方法的训练和微调。目标函数设计来优化模型对于异常行为的检测能力,并在微调阶段通过伪异常样本进一步增强模型对新颖异常的识别能力。

实验

之后再说吧

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring-mvc(1):Hello World

虽然目前大多数都是使用springboot来开发java程序,或者使用其来为其他端提供接口,而为其他端提供接口,这些功能都是依靠springmvc实现的,所以有必要学习一下spring-mvc,这样才能更好的学习springboot。 一&#xff0c…

好物周刊#36:程序员简历

村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. SmartDNS 一个运行在本地的 DNS 服务器,它接受来自本地客户端的 DNS 查询请求,然后从多个上游 DNS 服务器获取 DNS 查询…

陶瓷碗口缺口检测-图像分割

图像分割 由于对碗口进行缺口检测,因此只需要碗口的边界信息。得到陶瓷碗区域填充后的图像,对图像进行边缘检测。这是属于图像分割中的内容,在图像的边缘中,可以利用导数算子对数字图像求差分,将边缘提取出来。 本案…

案例:新闻数据加载

文章目录 介绍相关概念相关权限约束与限制完整示例 代码结构解读构建主界面数据请求下拉刷新总结 介绍 本篇Codelab是基于ArkTS的声明式开发范式实现的样例,主要介绍了数据请求和touch事件的使用。包含以下功能: 数据请求。列表下拉刷新。列表上拉加载…

基于面向对象,C++实现双链表

双链表同单链表类似,由一个值和两个指针组成 Node.h节点头文件 #pragma once class Node { public:int value;Node* prev;Node* next;Node(int value);~Node(); };Node.cpp节点源文件 #include "Node.h"Node::Node(int value) {this->value value…

Python-高阶函数

在Python中,高阶函数是指能够接收函数作为参数,或者能够返回函数的函数。这种特性使得函数在Python中可以被灵活地传递和使用。以下是一些关于Python高阶函数的详细解释: 函数作为参数: 高阶函数可以接收其他函数作为参数。这样的…

C语言 - 最简单,最易懂的指针、引用讲解

一、变量、地址、变量值 二、直接上代码&#xff0c;一边看上图&#xff0c;一边讲解 #include <stdio.h>struct Hello {int a;int b; };int main() {struct Hello h;h.a 10;h.b 20;struct Hello *hp;hp &h;printf("1: h的地址是%d&#xff0c;hp地址是%d \…

89.乐理基础-记号篇-省略记号-震音、音型与小节反复

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;88.乐理基础-记号篇-反复记号&#xff08;二&#xff09;D.C.、D.S.、Fine、Coda-CSDN博客 省略记号总结图&#xff1a;有些素材会把它们归纳到反复记号里&#xff0c;因为它们也涉及到 重复、反复的概念&#xff…

Open3D 两片点云的最小/最大距离(23)

Open3D 两片点云的最小/最大距离(23) 一、效果展示二、使用步骤1.代码三、cloudcompare量距小工具一、效果展示 算法与实际量测的结果保持一致,输出最近距离和对应点 二、使用步骤 1.代码 import open3d as o3d import numpy as np# 读取点云数据 cloud_2 = o3d.io.re…

查询和结果处理的Java代码

match_all查询&#xff1a; //查询所有文档 match_all查询Testvoid testMatchAll() throws IOException {// 1.准备RequestSearchRequest request new SearchRequest("hotel");// 2.准备DSLrequest.source().query(QueryBuilders.matchAllQuery());// 3.发送请求Sea…

Linux Centos7静默安装(非图形安装)Oracle RAC 11gR2(Oracle RAC 11.2.0.4)

Oracle RAC (全称Oracle Real Application Clusters &#xff09;静默安装&#xff08;非图形安装&#xff09;教程。 由于这篇文章花费了我太多时间&#xff0c;设置了仅粉丝可见&#xff0c;见谅。 环境说明&#xff1a; 虚拟机软件&#xff1a;VMware Workstation 16 Pro…

Spring Boot - Application Events 的发布顺序_ApplicationPreparedEvent

文章目录 Pre概述Code源码分析 Pre Spring Boot - Application Events 的发布顺序_ApplicationEnvironmentPreparedEvent 概述 Spring Boot 的广播机制是基于观察者模式实现的&#xff0c;它允许在 Spring 应用程序中发布和监听事件。这种机制的主要目的是为了实现解耦&#…

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(3)

Android基于Matrix绘制PaintDrawable设置BitmapShader&#xff0c;以手指触点为中心显示原图像圆图&#xff0c;Kotlin&#xff08;3&#xff09; 在 Android基于Matrix绘制PaintDrawable设置BitmapShader&#xff0c;以手指触点为中心显示原图像圆图&#xff0c;Kotlin&#…

网络地图服务(WMS)详解

文章目录 1.概述2.GetCapabilities3.GetMap4.GetFeatureInfo 阅读本文之前可参考前文&#xff1a;《地图服务器GeoServer的安装与配置》与《GeoServer发布地图服务&#xff08;WMS、WFS&#xff09;》。 1.概述 经过前文的介绍&#xff0c;相信我们对WMS/WFS服务已经有了一个非…

基于Token认证的登录功能实现

Session 认证和 Token 认证过滤器和拦截器 上篇文章我们讲到了过滤器和拦截器理论知识以及 SpringBoot 集成过滤器和拦截器&#xff0c;本篇文章我们使用过滤器和拦截器去实现基于 Token 认证的登录功能。 一、登录校验 Filter 实现 1.1、Filter 校验流程图 获得请求 url。判…

Express 应用生成器(脚手架)的安装与使用

1、简介 自动生成一个express搭建的项目结构 官网&#xff1a;Express 应用生成器 2&#xff0c;使用 2.1全局安装&#xff0c;使用管理员打开命令窗口 2.2、安装express # 全局安装express npm install -g express # 全局安装express脚手架 npm install -g express-gene…

BRC20通证的诞生与未来展望!如何导入bitget教程

BRC-20通证是什么&#xff1f; 嘿&#xff01;你知道BRC-20通证吗&#xff1f;这可是比特币区块链上的超级明星&#xff01;它们不依赖智能合约&#xff0c;而是把JSON代码刻在聪上&#xff0c;聪可是比特币的最小单位哦&#xff01;就像在比特币的乐高积木上盖房子&#xff0…

【量化交易故事】小明开启了量化创业之旅-01

故事开始于2023年的春天&#xff0c;小明是一位对金融市场充满热情的IT工程师。在经历了数次基于主观判断和个人情绪进行投资却收获平平后&#xff0c;他意识到传统交易方式中的人为因素难以避免&#xff0c;而这往往成为影响投资决策稳定性和准确性的关键障碍。在一次偶然的机…

bash shell基础命令

1.shell启动 shell提供了对Linux系统的交互式访问&#xff0c;通常在用户登录终端时启动。系统启动的shell程序取决于用户账户的配置。 /etc/passwd/文件包含了所有用户的基本信息配置&#xff0c; $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash ...例如上述root账户信…

WorkPlus领先企业即时通信软件,提升团队沟通效率的利器

在企业工作中&#xff0c;高效沟通是推动团队协作和工作效率的关键。而企业即时通信软件成为了实现高效沟通的利器。作为一款领先的企业即时通信软件&#xff0c;WorkPlus以其卓越的性能和独特的功能&#xff0c;提升团队沟通效率&#xff0c;助力企业实现高效协作。 为什么选择…