一种基于外观-运动语义表示一致性的视频异常检测框架 论文阅读
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. 生命游戏࿰…...

手撕分布式缓存---HTTP Client搭建
经过上个章节的学习,我们已经实现了一致性哈希算法,这个算法保证我们可以在节点发生变动时,最少的key请求受到影响,并返回这个节点的名称;这很大程度上避免了哈希雪崩和哈希穿透的问题。这个章节我们要基于此实现完整的…...
word如何快速制作简易代码块
先上解决方案。 方式一(全自动): typora编辑,导出选择word文档即可。内网环境,故放弃。 方式二(全手动): 在修改文档时,左侧会有“段落布局”按钮,点击该按…...

Linux常用网络指令
网络参数设定使用的指令 手动/自动设定与启动/关闭 IP 参数: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训练自己的数据集,以及有关YOLOv5的网络结构讲解/数据集获取/环境搭建/训练/推理/验证/导出/部署相关的教程,同时通过示例的方式让大家来了解具体的操作流程,过程中还分享给大家一些好用的资源…...

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

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

深度剖析知识图谱:方法、工具与实战案例
💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 知识图谱作为一种强大的知识表示和关联技术&am…...
Oracle中的dblink简介
Oracle中的dblink简介 是一种用于在不同数据库之间进行通信和数据传输的工具。它允许用户在一个数据库中访问另一个数据库中的对象,而无需在本地数据库中创建这些对象。 使用dblink,用户可以在一个数据库中执行SQL语句,然后访问另一个数据库中…...

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

【程序】STM32 读取光栅_编码器_光栅传感器_7针OLED
文章目录 源代码工程编码器基础程序参考资料 源代码工程 源代码工程打开获取: http://dt2.8tupian.net/2/28880a55b6666.pg3这里做了四倍细分,在屏幕上显示 速度、路程、方向。 接线方法: 单片机--------------串口模块 单片机的5V-------…...

TestSSLServer4.exe工具使用方法简单介绍(查SSL的加密版本SSL3或是TLS1.2)
一、工具使用方法介绍 工具使用方法参照:http://www.bolet.org/TestSSLServer/ 全篇英文看不懂,翻译了下,能用到的简单介绍如下: 将下载的TestSSLServer4.exe工具放到桌面上,CMD命令行进入到桌面目录,执…...

新年跨年烟花超酷炫合集【内含十八个烟花酷炫效果源码】
❤️以下展示为全部烟花特效效果 ❤️下方仅展示部分代码 ❤️源码获取见文末 🎀HTML5烟花喷泉 <style> * {padding:0;margin:0; } html,body {positi...

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

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

【C++高阶(七)】C++异常处理的方式
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:C从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学习C 🔝🔝 异常处理的方式 1. 前言2. C语言处理异常的方式…...
在Idea中创建基于工件的本地服务
目录 1、创建基于工件的Tomcat服务器: 2、修改名称: 3、修改服务器项: 4、部署项 5、最后记得点右下角的【应用】和【确定】保存。 1、创建基于工件的Tomcat服务器: 运行->编辑配置->【Tomcat服务器】->本地 2、修…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...