Learning Normal Dynamics in Videos with Meta Prototype Network 论文阅读

文章信息:发表在cvpr2021
在这里插入图片描述
原文链接:

Learning Normal Dynamics in Videos with Meta Prototype Network

  • 摘要
  • 1.介绍
  • 2.相关工作
  • 3.方法
    • 3.1. Dynamic Prototype Unit
    • 3.2. 视频异常检测的目标函数
    • 3.3. 少样本视频异常检测中的元学习
  • 4.实验
  • 5.总结
  • 代码复现:

摘要

在视频异常检测领域,基于自动编码器(Auto-Encoder,AE)的帧重构(当前或未来帧)方法是一种流行的技术。通过在正常数据上进行训练,模型通常能够将异常场景的重构误差与正常场景相比显著增大。之前的一些方法在自动编码器中引入了内存存储库(memory bank),以编码跨训练视频的各种正常模式。然而,这些方法会消耗大量内存,并且无法处理在测试数据中出现的未见过的新场景。

在我们的工作中,我们提出了一种动态原型单元(Dynamic Prototype Unit,DPU),用于实时将正常动态编码为原型,而无需额外的内存成本。此外,我们引入了元学习到我们的动态原型单元,形成了一种新颖的少样本正常性学习器,即元原型单元(Meta-Prototype Unit,MPU)。这使得我们的系统能够通过仅消耗少量迭代即可快速适应新场景。我们在多个基准数据集上进行了广泛的实验,结果表明我们的方法在性能上优于当前最先进的方法,证明了我们方法的有效性。

1.介绍

作者的主要工作是在视频异常检测(VAD)领域,提出了一种新的方法。首先,他们介绍了视频异常检测的背景和重要性,尤其是在公共安全监控中的关键作用。然后,作者指出了目前的异常检测方法中存在的问题,即对“异常”的定义概念不确定,难以收集所有可能异常的数据。因此,异常检测通常被制定为一种无监督学习问题,旨在通过学习模型仅利用正常数据中的规律模式。作者指出,Deep Auto-Encoder(AE)是视频异常检测的流行方法,通常用于对历史帧建模并重构当前帧或预测未来帧。

为了解决传统方法中存在的问题,作者提出了一种动态原型单元(DPU),用于实时编码正常动态并形成原型。他们还引入了元学习到DPU,形成了一种少样本正常性学习器,称为Meta Prototype Unit(MPU)。MPU通过学习目标模型的初始化,并在推断过程中通过少量参数更新调整到新场景,从而提高了场景适应能力。

主要贡献包括:

  1. 提出了动态原型单元(DPU),用于学习表示正常数据的多样性和动态模式。
  2. 引入元学习到DPU,将其改进为少样本正常性学习器(MPU),通过少量参数和更新迭代赋予模型快速适应能力。
  3. 在多个无监督异常检测基准上,作者的DPU-based AE实现了新的最先进性能,并验证了MPU在少样本设置中的适应能力。
    下图为方法概述:
    在这里插入图片描述
    图1:方法概述。(1)设计了一个动态原型单元(Dynamic Prototype Unit,DPU),用于学习编码正常动态的一组原型;(2)引入元学习方法,将DPU构建为一个少样本正常性学习器——元原型单元(Meta-Prototype Unit,MPU)。它通过学习目标模型的初始化,并在推断过程中通过参数更新调整到新场景,提高了场景适应能力。

2.相关工作

  1. 异常检测问题:由于异常数据的缺失和标注成本昂贵,视频异常检测被划分为几种学习问题,其中无监督设置假设只有正常训练数据,而弱监督设置可以访问具有视频级标签的视频。作者关注实际应用中更为实际的无监督设置。先前的方法主要基于稀疏编码、马尔科夫随机场、混合动态纹理、混合概率主成分分析模型等,而深度学习,尤其是卷积神经网络(CNNs),在视频异常检测方面取得了成功。

  2. 深度Auto-Encoder和问题:许多方法使用深度Auto-Encoder(AE)来建模正常模式并重构视频帧。然而,这些方法可能面临“过度泛化”问题,即有时异常帧也可以被良好地预测为正常帧。一些方法引入了记忆库来处理此问题,但这会带来额外的内存成本。

  3. 提出的方法:提出了一种动态原型单元(DPU),用于实时编码正常动态并形成原型。为了解决记忆库的内存成本问题,作者采用了一种注意机制来测量正常程度。此外,作者引入了元学习技术到DPU模块中,使其具备快速适应新场景的能力。

  4. 注意机制:注意机制被广泛应用于许多计算机视觉任务,包括通道注意和空间注意。作者利用注意机制来测量空间局部编码向量的正常性,并使用它们生成编码正常模式的原型项。

  5. 少样本学习和元学习:在少样本学习中,研究人员旨在模仿人类的快速学习能力,即只需少量数据示例就能快速适应新场景。作者引入了元学习技术,将DPU模块改进为Meta Prototype Unit(MPU),使其具备快速适应能力。与其他简单任务的元学习方法不同,作者的方法针对视频异常检测进行了精心设计。

总体而言,作者的工作主要集中在提出一种新颖的方法,利用动态原型单元(DPU)和元学习技术,以实现对视频异常检测中新场景的快速适应。

3.方法

3.1. Dynamic Prototype Unit

在这里插入图片描述
图2:基于DPU模型的框架。提出的动态原型单元(DPU)被嵌入到一个自动编码器(AE)中,用于学习编码正常动态的原型。这些原型是通过在AE编码的基础上利用正常度权重进行引导而获得的,而AE编码的正常度权重是通过完全可微的注意机制生成的。然后,一个正常度编码映射(绿色)被重构为学习到的原型的编码。它进一步与AE编码映射聚合,用于后续的帧预测。

简单来说,DPU就是一个注意力机制,将DPU插入到AE中对特征图进行权重重新计算。DPU首先得到多个对应输入编码特征每个元素位置的注意力图,然后分别得到对应的多个原型特征向量。通过对原型向量的查询和提取,就可以得到加强后的特征图。

3.2. 视频异常检测的目标函数

整个架构通过过去的几帧预测未来的一帧,损失函数由两个部分组成,一个是预测帧的损失,另一个是重构特征图的损失,重构特征图的损失也就是DPU中产生的损失。
在这里插入图片描述
其中 L f r a L_{fra} Lfra是帧预测损失, L f e a L_{fea} Lfea是DPU重构特征图的损失,λ是超参数。损失函数的具体计算参考原论文。

3.3. 少样本视频异常检测中的元学习

结合元学习理论,把DPU变成为元学习原型组件。可以理解为通过元学习,将别的训练集得到的模型快速应用到样本少的模型上面。

4.实验

第一个实验是作者在4个数据集上测试了带有DPU单元的网络,对比结果如下:
在这里插入图片描述
第二个实验是测试元学习的效果:作者在Shanghai Tech和UCF crime数据集的模型通过元学习应用在别的数据集上

在这里插入图片描述
可以看出,结果都还可以。

5.总结

在这项工作中,我们引入了一个原型学习模块,通过使用注意机制来明确建模视频序列中的正常动态,以进行无监督的异常检测。该原型模块是完全可微的,并以端到端的方式进行训练。在不额外消耗内存的情况下,我们的方法在无监督设置下在各种异常检测基准上实现了最先进的性能。此外,我们利用元学习技术将原型模块改进为一个少样本正常性学习器。广泛的实验评估证明了该场景适应方法的有效性。

代码复现:

我在ped2数据集上复现了DPU的结果,但是效果和作者的差了10个百分点。有没有复现成功的大佬帮帮忙,是不是我没有正确设置训练的参数。下图是我的结果,用的是epoch=300的模型,当然epoch=1000时效果也没上90,最好的时候是将近89吧。
在这里插入图片描述
我也根据作者的代码逻辑换了一个数据集,效果也不是很好。想换自己的数据集的同学如果遇到困难可以一起交流。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【电机控制】PMSM无感foc控制(六)相电流检测及重构 — 双电阻采样、三电阻采样

0. 前言 目前,永磁同步电机的电流信号采样方法应用较多的是分流电阻采样,包括单电阻、双电阻以及三电阻采样法。其中,单电阻采样上一章节已经讲解,这章讲双电阻以及三电阻电流采样法。 1. 双电阻采样 1.1 双电阻采样原理 双电阻采…

FPGA时序分析与时序约束(一)

一、为什么要进行时序分析和时序约束 PCB通过导线将具有相关电气特性的信号相连接,这些电气信号在PCB上进行走线传输时会产生一定的传播延时。 而FPGA内部也有着非常丰富的可配置的布线资源,能够让位于不同位置的逻辑资源块、时钟处理单元、BLOCK RAM、D…

线性回归 numpy实现线性回归

手写线性回归 使用numpy随机生成数据 import numpy as np import matplotlib.pyplot as plt# 生成模拟数据 np.random.seed(42) X 2 * np.random.rand(200, 1) y 4 3 * X np.random.randn(200, 1)# 可视化数据 plt.scatter(X, y) plt.xlabel(X) plt.ylabel(y) plt.title(…

MFC发送ZPL指令控制斑马打印机

1、参考1:用Python操控斑马打印机的技术总结 - 重拾初心的青年人 - 博客园 (cnblogs.com) 参考2:VC斑马打印机_vc zpl-CSDN博客 参考3:斑马打印机ZPL语言编程实战_梅长酥的博客-CSDN博客 参考4:关于斑马打印机开发的几种方式_斑马…

人工智能的新篇章:深入了解大型语言模型(LLM)的应用与前景

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实…

pbootcms建站

pbootcms建站 一、下载pbootcms二、安装1、进入宝塔面在网站栏,新建站点,将该址里面文件全部清再将下载的pbootcms上传至该地址。 三、修改关联数据库1、在根目录下/config打开database.php照如下修改这里我使用mysqli数据库。修改并使用自已创建的数据库…

JAVA-作业7-画一个笑脸

要求如题 代码如下: SmileFace01: import java.awt.Color; import java.awt.Graphics;import javax.swing.JPanel;public class SmileFace01 extends JPanel {Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);int width getWidth(…

基于springboot+vue的景区民宿预约系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

代码随想录day5 哈希表part 01 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。 哈希碰撞:1、拉链法:其实拉链法就是要选择适当的哈希表的大小,这样既不会因为数组空值而浪费大量内存,也不会因为链表太长而在查找上浪费太多时…

Stable Diffusion AI绘画系列【13】:毛茸茸的可爱动物们

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

cmd查看进程信息 终止进程

cmd查看进程信息 终止进程 1、cmd查看进程信息2、终止进程 1、cmd查看进程信息 tasklist命令 描述: 该工具显示在本地或远程机器上当前运行的进程列表。 tasklist /?查看本机所有进程列表 tasklist /V根据进程名 查看jmeter进程 tasklist /V |findstr /i jmeter2、终止进程…

分享全球顶尖的AIGC文生图资源

1 引言 人工智能正在改变许多行业的格局,而其中改变最直观和影响最大的就是AIGC领域的图像创作。文生图技术作为AIGC的一个重要分支,展现了人工智能在视觉创作领域的巨大潜力。发展至今已经有很多AI文生图平台,这是一次革命性的突破&#xf…

C++实现顺序栈的基本操作(扩展)

#include <stdio.h> typedef char ElemType; #define StackSize 100 /*顺序栈的初始分配空间*/ typedef struct { ElemType data[StackSize]; /*保存栈中元素*/int top; /*栈顶指针*/ } SqStack; void InitStack(SqStack &st) {st.top-1; } …

语音识别从入门到精通——1-基本原理解释

文章目录 语音识别算法1. 语音识别简介1.1 **语音识别**1.1.1 自动语音识别1.1.2 应用 1.2 语音识别流程1.2.1 预处理1.2.2 语音检测和断句1.2.3 音频场景分析1.2.4 识别引擎(**语音识别的模型**)1. 传统语音识别模型2. 端到端的语音识别模型基于Transformer的ASR模型基于CNN的…

Java代码生成统计图

引入依赖 <!-- https://mvnrepository.com/artifact/org.knowm.xchart/xchart --> <dependency><groupId>org.knowm.xchart</groupId><artifactId>xchart</artifactId><version>3.8.6</version> </dependency>如果在Li…

gitlab-jenkins-shell-helm-chart-k8s自动化部署微服务

1.准备好编译环境的容器&#xff0c;所有容器的镜像制作在gemdale-dockerfile这个代码库里面&#xff0c;也可以直接拉取官方镜像部署 docker run --name node1420-patternx -v /data/var/www/:/data/var/www/ -v /var/jenkins_home/:/var/jenkins_home/ -v /mnt/hgfs/:/mnt/h…

WEB渗透—反序列化(十一)

Web渗透—反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩哔_…

ESP32-Web-Server编程-通过 Web 下载文本

ESP32-Web-Server编程-通过 Web 下载文本 概述 当你希望通过网页导出设备的数据时&#xff0c;可以在 ESP32 上部署一个简单的文件 Web 服务器。 需求及功能解析 本节演示如何在 ESP32 上部署一个最简单的 Web 服务器&#xff0c;来接收浏览器或者 wget 指令请求文件数据。…

java 之 继承与多态的详细介绍

文章目录 类的继承1. 基本语法2. 继承的特点3. 方法的重写&#xff08;方法的覆盖&#xff09;super 关键字1. 调用父类的构造器2. 访问父类的成员变量3. 调用父类的方法4. 在构造器中调用父类方法封装性以及访问修饰符抽象方法1. 声明抽象类2. 抽象方法3. 继承抽象类4. 抽象类…

Zabbix自定义监控内容

自定义监控客户端服务器登录的人数 需求&#xff1a;限制登录人数不超过 3 个&#xff0c;超过 3 个就发出报警信息 1.在客户端创建自定义key //明确需要执行的 linux 命令 who | wc -l//创建 zabbix 的监控项配置文件&#xff0c;用于自定义 key vim /etc/zabbix/zabbix_ag…