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

news2024/9/29 13:26:18

文章信息:发表在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吧。
在这里插入图片描述
我也根据作者的代码逻辑换了一个数据集,效果也不是很好。想换自己的数据集的同学如果遇到困难可以一起交流。

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

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

相关文章

C#网络编程UDP程序设计(UdpClient类)

目录 一、UdpClient类 二、示例 1.源码 (1)Client (2)Server 2.生成 (1)先启动服务器,发送广播信息 (2)再开启客户端接听 UDP是user datagram protocol的简称&a…

Star 10.4k!推荐一款国产跨平台、轻量级的文本编辑器,内置代码对比功能

notepad 相信大家从学习这一行就开始用了,它是开发者/互联网行业的上班族使用率最高的一款轻量级文本编辑器。但是它只能在Windows上进行使用,而且正常来说是收费的(虽然用的是pj的)。 对于想在MacOS、Linux上想使用,…

EM32DX-C2【C#】

1说明: 分布式io,CAN总线,C#上位机二次开发(usb转CAN模块) 2DI: 公共端是: 0V【GND】 X0~X15:自带24v 寄存器地址:0x6100-01 6100H DI输入寄存器 16-bit &#x…

鸿蒙系统扫盲(四):鸿蒙使用的是微内核?

我们常说,看一个系统是不是自研,就看它的内核,常见的内核分为:宏内核和微内核,当然还有两者结合体,他们到底有什么区别? 1.白话宏内核和微内核 有一天,你结婚了,你和你…

安全测试之推荐工具(一)

文章目录 一、前言二、Web安全(一)AppScan(推荐)(二)AWVS(推荐)(三)Burp Suite(推荐)(四)OWASP ZAP 三、主机安…

电子取证--windows下的volatility分析与讲解

1.volatility的安装 提示:我用的是2.6版本(windows),如果直接下载的出现问题,用迅雷就可以解决 下载地址:Volatility 2.volatility的使用 1.进入终端,查看镜像的系统信息: volati…

[ROS2] --- ROS diff ROS2

1 ROS存在的问题 一旦Ros Master主节点挂掉后,就会造成整个系统通信的异常,通信基于TCP实现,实时性差、系统开销大对Python3支持不友好,需要重新编译消息机制不兼容没有加密机制、安全性不高 2 ROS and ROS2架构对比 ROS和ROS2架构如下图所…

实体、协议、服务和服务访问点

目录 一、概念 二、相邻两层之间的关系 三、面向连接服务的特点 四、无连接服务的特点 五、著名的协议举例 一、概念 实体(entity)表示任何可发送或接收信息的硬件或软件进程。同机器上同一层的实体叫做对等实体(peer entity&#xff0…

如何创建maven项目的多模块项目

Maven多模块项目是指一个Maven项目中包含多个子模块,每个子模块又是一个独立的Maven项目,但它们之间可以存在依赖关系。Maven多模块项目可以方便地管理多个子模块的依赖和构建过程,同时也可以提高项目的可维护性和可扩展性。创建maven项目的父…

RH850P1X芯片学习笔记-Pin Functions

文章目录 Pin Connection Diagrams术语定义 Pin ListPort OverviewIntroductionFunctional OverviewPort CategoryOperation Mode运行模式 Port Function寄存器地址映射 Port寄存器描述Pn/JP0 — Port RegisterPPRn/JPPR0 — Port Pin Read RegisterPMn/JPM0 — Port Mode Regi…

合并两个有序链表[简单]

优质博文:IT-BLOG-CN 一、题目 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入&#…

2023全网最新-免杀方法大集结

目录 00. 概述 01. 简介 02. 静态免杀 1. 怎么找特征码 工具查找 手工查找 其他 2. 怎么免杀? 手工修改 非源码 工具免杀(盲免杀) 03. 行为动态免杀 行为拦截原理 如何进行行为免杀呢? 总结 注意/技巧 00. 概述 …

简单的界面与数据分离的架构

草图绘制于2021年2月19日 当时用到了:qt的子项目、delegate、view和widget的关系,有感而写的小备忘,2022年底考的软件设计师里面的设计模式虽然可能早已包含,但自己也得有自己啊,要把自己哪怕不成熟的东西也记录下来&…

自动化集成有哪些典型应用场景?

为什么要做自动化场景集成? 主要分为以下几点: 提高效率/减少错误:减少人工操作、人为错误、人力成本,提高生产效率、生产质量和稳定性。 提高可靠性:提高系统的可靠性和稳定性,减少系统故障和停机时间。…

UNDERSTANDING AND IMPROVING INFORMATION TRANSFER IN MULTI-TASK LEARNING

Z i _i i​ X i R i X_iR_i Xi​Ri​, X X X是Task embedding layers, R R R是Alignment matrices 辅助信息 作者未提供代码

申请Azure学生订阅——人工验证

一:联系客服进行人工验证 点击 Services Hub 填写资料申请人工验证 点击 Azure - Sign up 进行学生验证 二:与客服的邮件沟通的记录 ​​​​一、结果(输入客服给的验证码后,笔者便得到了学生订阅): 二…

Allegro无法模块复用的解决办法

Allegro无法模块复用的解决办法 在用Allegro做PCB设计的时候,模块复用是使用的比较频繁的功能,对于有相同模块的单板,可以节省大量的时间。 模块复用的功能不细说,具体参考以前的文章。 有时会遇到模块复用的时候出现如下报错 无法匹配,有时如果因为Device而无法复用,就…

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

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

IntelliJ_IDEA的安装

1.点击链接进入官网 https://www.jetbrains.com/zh-cn/idea/download/?sectionwindows 2.往下翻找社区版 3.保留并打开下载的exe 4.选择安装路径(保险起见路径不要有中文) 5.按中文提示点击所需要的(前三个全点上,后面的按自己的…

使用Pytorch从零开始实现CLIP

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…