当前位置: 首页 > news >正文

一种基于外观-运动语义表示一致性的视频异常检测框架 论文阅读

A VIDEO ANOMALY DETECTION FRAMEWORK BASED ON APPEARANCE-MOTION SEMANTICS REPRESENTATION CONSISTENCY 论文阅读

  • ABSTRACT
  • 1. INTRODUCTION
  • 2. PROPOSED METHOD
  • 3. EXPERIMENTAL RESULTS
  • 4. CONCLUSION
  • 阅读总结:

论文标题:A VIDEO ANOMALY DETECTION FRAMEWORK BASED ON APPEARANCE-MOTION SEMANTICS REPRESENTATION CONSISTENCY
文章信息:
在这里插入图片描述

发表于:ICASSP 2023(CCF B)
原文链接:https://arxiv.org/abs/2204.04151
源码:无

ABSTRACT

视频异常检测是一项重要但具有挑战性的任务。目前流行的方法主要研究正常模式和异常模式之间的重构差异,而忽略了行为模式的外观和运动信息之间的语义一致性,使得结果高度依赖于帧序列的局部上下文,缺乏对行为语义的理解。
为了解决这个问题,我们提出了一个外观-运动语义表示一致性框架,该框架利用正常数据和异常数据之间的外观和运动语义表示的一致性差距。
设计了双流结构来对正常样本的外观和运动信息表示进行编码,并提出了一种新的一致性损失来增强特征语义的一致性,从而可以识别出一致性较低的异常。
此外,异常的低一致性特征可以用来降低预测帧的质量,这使得异常更容易被发现。实验结果证明了该方法的有效性。

1. INTRODUCTION

视频异常检测(VAD)是指识别不符合预期行为的事件[1],在公共安全场景中具有重要的实际价值。尽管在[2, 3]中投入了大量努力,由于异常的罕见性和模糊性,VAD仍然是一项极具挑战性的任务[1]。收集平衡的正常和异常样本,并使用监督二分类模型解决这个任务是不可行的。因此,VAD的典型解决方案通常被制定为一个无监督学习问题,目标是仅使用正常数据训练模型以挖掘正常模式。不符合该模型的事件被视为异常。现有的主流VAD方法几乎都遵循重建或未来帧预测模式。基于重建的方法[4, 5, 6, 7]通常在正常数据上训练自动编码器(AEs),并期望异常数据在测试时产生较大的重建误差,使得异常数据可从正常数据中检测出来。基于预测的方法[3]使用视频帧的时间特征来预测基于给定先前帧序列的下一帧,然后使用预测误差进行异常测量。然而,这样的方法高度依赖于帧序列的局部上下文,并且一些研究[6, 8]表明,仅在正常数据上训练的AE有时能够很好地重建异常,导致性能较差。因此,一些研究人员[9, 10, 11]尝试利用活动的运动信息,其中包含许多表示行为属性的语义,以实现VAD的良好性能。然而,这些方法仅在测试阶段结合外观和运动的信息来检测异常,而在训练阶段并未在相同的空间中联合建模这两种类型的信息[9, 10, 11, 12, 13],这使得难以捕捉VAD的两种模态之间的关联。最近,提出了这些最先进的(SOTA)方法[8, 14]来模拟两种模态的关系,并且可以在大多数情况下检测异常,但由于关系建模方法的不稳定性,结果仍然远远低于期望。例如,Cai等人[14]使用内存网络存储两种模态的关系,以便不合适大小的内存模块容易限制网络的性能。此外,Liu等人[8]在流重建和帧预测的组合中使用混合框架,但结果高度依赖于先前阶段流重建的质量,这使得难以训练一个稳定的模型。而且,这些方法建模的关系主要用于恢复像素信息,但仍然缺乏对行为语义的理解。在本文中,我们在通过外观-运动语义表示一种简单而新颖的网络中充分利用正常事件的多模态知识来检测异常,称为AMSRC-Net。具体来说,受到使用多模态的SOTA方法[8, 10, 12, 14]的启发,我们首先通过通用的双流编码器提取正常事件中外观和运动的代表性特征。与以前的工作不同,我们观察两种模态特征之间的一致性,并提出一种新颖的一致性损失,以在特征空间中明确地建模语义一致性。然后,所提出的网络为异常样本生成更低的一致性特征,这通常反映出不规则的行为语义,并可用于检测异常。此外,我们设计了一个简单的流引导融合模块,它利用上述特征语义一致性差异来增强预测质量差异。对三个公共VAD数据集进行的大量实验证明,我们提出的AMSRC-Net的性能优于SOTA方法。

2. PROPOSED METHOD

正如图1所示,我们提出的AMSRC-Net由三部分组成:一个双流编码器、一个解码器和一个流引导融合模块(FGFM)。我们首先将先前的视频帧图像及其光流剪辑输入到双流编码器中,以获得外观和运动的特征表示。然后,我们提出的一致性损失用于进一步增强正常样本中外观和运动信息之间特征语义的一致性。接下来,两个一致的模态特征被输入到流引导融合模块中。最后,将融合后的特征馈入解码器,以预测未来的帧图像。AMSRC-Net的详细网络架构如图2所示,所有组件将在以下小节中详细介绍。
在这里插入图片描述

双流编码器和解码器
双流编码器从输入视频帧图像和相应的光流中提取特征表示。由于一致性约束,提取的特征语义高度相似,代表了监控视频中的前景行为特性。然后,训练解码器以通过采用通过融合来自前一步骤的提取特征而形成的聚合特征来生成下一帧。聚合特征可能缺乏低级信息,如背景、纹理等。为了解决这个问题,我们在帧流编码器和解码器之间添加了一个类似UNetlike的跳过连接结构[15],以保留这些与预测高质量未来帧的行为无关的低级特征。

FGFM
由于在双流编码器的末端采用了ReLU激活函数,输出特征中许多特征表示具有零值。在训练双流特征的语义一致性时,我们观察到非零特征表示上的两个流特征的分布是高度一致的。相反,异常数据生成的外观-运动特征的较低一致性反映了在非零特征表示上的两个流特征分布的较大差异。为了利用上述特征表示差距来提高VAD性能,我们设计了一个简单的流引导融合模块,以扩大正常和异常样本之间的预测误差差距。给定外观特征 f e a f r a m e fea_{frame} feaframe 和运动特征 f e a f l o w fea_{flow} feaflow,我们在没有线性投影和残差操作的情况下,使用 f e a f r a m e fea_{frame} feaframe f e a f l o w fea_{flow} feaflow 的激活之间的Hadamard乘积来生成融合特征 f e a f u s e d fea_{fused} feafused,该特征用于预测:
在这里插入图片描述
其中,σ代表Sigmoid函数,⊕和⊗分别表示矩阵加法和Hadamard乘积。在正常和异常数据的融合特征表示中存在差距,只有正常数据的融合特征被训练用于生成高质量的未来帧。随着训练过程中融合特征表示中差距的增加,预测帧质量的差距也被放大。
Loss Function
我们遵循先前基于预测的VAD工作[3],使用强度和梯度差异来使预测接近其真实值。强度损失确保了预测和其真实值之间像素的相似性,而梯度损失可以使预测的图像更加清晰。我们通过最小化预测帧 x ~ \widetilde{x} x 与其真实值 x x x之间的 l 2 l_2 l2距离来实现:
在这里插入图片描述
梯度损失定义为:
在这里插入图片描述
在这里插入图片描述
其中i、j表示视频帧的空间索引。
为了建模正常样本的外观和运动语义表示的一致性,我们最小化由双流编码器编码的正常样本的外观和运动特征之间的余弦距离。提出的一致性损失定义如下:
在这里插入图片描述
总损失L的形式如下:
在这里插入图片描述

其中, λ i n t λ_{int} λint λ g d λ_{gd} λgd λ s i m λ_{sim} λsim是平衡超参数,W是模型的参数, λ m o d e l λ_{model} λmodel是控制模型复杂性的正则化超参数。
Anomaly Detection
在测试阶段,异常评分由两部分组成:
(1) 外观与运动特征的不一致
在这里插入图片描述
(2) 未来帧预测误差
在这里插入图片描述

然后,通过使用加权策略将这两部分融合,得到最终的异常分数,具体如下:
在这里插入图片描述
其中, u f u_f uf δ f δ_f δf u p u_p up δ p δ_p δp分别表示所有正常训练样本的外观和运动特征之间的不一致性以及预测误差的平均值和标准差, w f w_f wf w p w_p wp表示两个分数的权重。

3. EXPERIMENTAL RESULTS

在这里插入图片描述

4. CONCLUSION

提出了一个外观-运动语义表示一致性框架,该框架利用正常数据和异常数据之间的外观和运动语义表示的一致性来检测异常。

设计了一个双流编码器来提取正常样本的外观和运动特征,并添加约束来增强其一致性语义,从而可以识别出一致性较低的异常样本。

此外,流引导融合模块可以融合异常的外观和运动特征的一致性较低,从而影响预测帧的质量,使异常产生较大的预测差异。

在三个公共基准上的实验结果表明,我们的方法比最先进的方法性能更好。

阅读总结:

和上一篇一个作者,方法也很类似。上一篇是运动信息替换外观信息用于后续的解码器,这篇是通过一个模块将两个结合起来。

相关文章:

一种基于外观-运动语义表示一致性的视频异常检测框架 论文阅读

A VIDEO ANOMALY DETECTION FRAMEWORK BASED ON APPEARANCE-MOTION SEMANTICS REPRESENTATION CONSISTENCY 论文阅读 ABSTRACT1. INTRODUCTION2. PROPOSED METHOD3. EXPERIMENTAL RESULTS4. CONCLUSION阅读总结: 论文标题:A VIDEO ANOMALY DETECTION FRA…...

Netty—NIO万字详解

文章目录 NIO基本介绍同步、异步、阻塞、非阻塞IO的分类NIO 和 BIO 的比较NIO 三大核心原理示意图NIO的多路复用说明 核心一:缓存区 (Buffer)Buffer类及其子类Buffer缓冲区的分类MappedByteBuffer类说明: 核心二:通道 (Channel)Channel类及其…...

面试经典150题(32-37)

leetcode 150道题 计划花两个月时候刷完,今天(第十五天)完成了6道(32-37)150: 今天刚好有点没精神的感觉,然后碰到的题也不难。。天意!!! 32.(289. 生命游戏&#xff0…...

手撕分布式缓存---HTTP Client搭建

经过上个章节的学习,我们已经实现了一致性哈希算法,这个算法保证我们可以在节点发生变动时,最少的key请求受到影响,并返回这个节点的名称;这很大程度上避免了哈希雪崩和哈希穿透的问题。这个章节我们要基于此实现完整的…...

word如何快速制作简易代码块

先上解决方案。 方式一(全自动): typora编辑,导出选择word文档即可。内网环境,故放弃。 方式二(全手动): 在修改文档时,左侧会有“段落布局”按钮,点击该按…...

Linux常用网络指令

网络参数设定使用的指令 手动/自动设定与启动/关闭 IP 参数&#xff1a;ifconfig, ifup, ifdown ifconfig ifconfig常用于修改网络配置以及查看网络参数的指令 [rootwww ~]# ifconfig {interface} {up|down} < 观察与启动接口 [rootwww ~]# ifconfig interface {options…...

Spark on Yarn 安装配置实验(3.1.1)

子任务二: Spark on Yarn 安装配置 本任务需要使用 root 用户完成相关配置, 已安装 Hadoop 及需要配置前置环境,具体要求如下: 1 、从宿主机 /opt 目录下将文件 spark-3.1.1-bin-hadoop3.2.tgz 复制到容器 Master 中的 /opt/software (若 路径不存在,则需新…...

详解YOLOv5网络结构/数据集获取/环境搭建/训练/推理/验证/导出/部署

一、本文介绍 本文给大家带来的教程是利用YOLOv5训练自己的数据集&#xff0c;以及有关YOLOv5的网络结构讲解/数据集获取/环境搭建/训练/推理/验证/导出/部署相关的教程&#xff0c;同时通过示例的方式让大家来了解具体的操作流程&#xff0c;过程中还分享给大家一些好用的资源…...

ansible(不能交互)

1、定义 基于python开发的一个配置管理和应用部署工具&#xff0c;在自动化运维中异军突起&#xff0c;类似于xshell一键输入的工具&#xff0c;不需要每次都切换主机进行操作&#xff0c;只要有一台ansible的固定主机&#xff0c;就可以实现所有节点的操作。不需要agent客户端…...

黑马点评06分布式锁 2Redisson

实战篇-17.分布式锁-Redisson功能介绍_哔哩哔哩_bilibili 1.还存在的问题 直接实现很麻烦&#xff0c;借鉴已有的框架。 2.Redisson用法 3.Redisson可重入原理 在获取锁的时候&#xff0c;看看申请的线程和拿锁的线程是否一致&#xff0c;然后计算该线程获取锁的次数。一个方法…...

深度剖析知识图谱:方法、工具与实战案例

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 知识图谱作为一种强大的知识表示和关联技术&am…...

Oracle中的dblink简介

Oracle中的dblink简介 是一种用于在不同数据库之间进行通信和数据传输的工具。它允许用户在一个数据库中访问另一个数据库中的对象&#xff0c;而无需在本地数据库中创建这些对象。 使用dblink&#xff0c;用户可以在一个数据库中执行SQL语句&#xff0c;然后访问另一个数据库中…...

ubuntu安装显卡驱动过程中遇到的错误,及解决办法!

ubuntu安装显卡驱动的过程中&#xff0c;可能会遇到以下问题&#xff0c;可以参考解决办法&#xff01; 问题1&#xff1a; ​ ERROR: An error occurred while performing the step: "Building kernel modules". See /var/log/nvidia-installer.log for details. …...

【程序】STM32 读取光栅_编码器_光栅传感器_7针OLED

文章目录 源代码工程编码器基础程序参考资料 源代码工程 源代码工程打开获取&#xff1a; http://dt2.8tupian.net/2/28880a55b6666.pg3这里做了四倍细分&#xff0c;在屏幕上显示 速度、路程、方向。 接线方法&#xff1a; 单片机--------------串口模块 单片机的5V-------…...

TestSSLServer4.exe工具使用方法简单介绍(查SSL的加密版本SSL3或是TLS1.2)

一、工具使用方法介绍 工具使用方法参照&#xff1a;http://www.bolet.org/TestSSLServer/ 全篇英文看不懂&#xff0c;翻译了下&#xff0c;能用到的简单介绍如下&#xff1a; 将下载的TestSSLServer4.exe工具放到桌面上&#xff0c;CMD命令行进入到桌面目录&#xff0c;执…...

新年跨年烟花超酷炫合集【内含十八个烟花酷炫效果源码】

❤️以下展示为全部烟花特效效果 ❤️下方仅展示部分代码 ❤️源码获取见文末 🎀HTML5烟花喷泉 <style> * {padding:0;margin:0; } html,body {positi...

计算机网络考研辨析(后续整理入笔记)

文章目录 体系结构物理层速率辨析交换方式辨析编码调制辨析 链路层链路层功能介质访问控制&#xff08;MAC&#xff09;信道划分控制之——CDMA随机访问控制轮询访问控制 扩展以太网交换机 网络层网络层功能IPv4协议IP地址IP数据报分析ICMP 网络拓扑与转发分析&#xff08;重点…...

JMESPath语言

JMESPath&#xff08;JSON Matching Expression Path&#xff09; 一种查询语言。 主要用于从JSON文档中检索和过滤数据。 通过写表达式提取和处理JSON数据&#xff0c;而无需编写复杂的代码。 功能&#xff1a;数据提取、过滤、转换、排序。 场景&#xff1a;处理API响应…...

【C++高阶(七)】C++异常处理的方式

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 异常处理的方式 1. 前言2. C语言处理异常的方式…...

在Idea中创建基于工件的本地服务

目录 1、创建基于工件的Tomcat服务器&#xff1a; 2、修改名称&#xff1a; 3、修改服务器项&#xff1a; 4、部署项 5、最后记得点右下角的【应用】和【确定】保存。 1、创建基于工件的Tomcat服务器&#xff1a; 运行->编辑配置->【Tomcat服务器】->本地 2、修…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...

【技巧】dify前端源代码修改第一弹-增加tab页

回到目录 【技巧】dify前端源代码修改第一弹-增加tab页 尝试修改dify的前端源代码&#xff0c;在知识库增加一个tab页"HELLO WORLD"&#xff0c;完成后的效果如下 [gif01] 1. 前端代码进入调试模式 参考 【部署】win10的wsl环境下启动dify的web前端服务 启动调试…...