一种基于外观-运动语义表示一致性的视频异常检测框架 论文阅读
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、修…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
